Index: src/js/_enqueues/vendor/README.md
===================================================================
--- src/js/_enqueues/vendor/README.md	(revision 44695)
+++ src/js/_enqueues/vendor/README.md	(working copy)
@@ -12,7 +12,48 @@
 - plupload: https://github.com/moxiecode/plupload
 - swfupload: https://github.com/WordPress/secure-swfupload
 - thickbox: http://codylindley.com/thickbox/
-- tinymce: https://github.com/tinymce/tinymce
+- tinymce: https://www.tiny.cloud/get-tiny/self-hosted/
+  - Download "TinyMCE Dev Package". This package is needed because it includes
+    the `compat3x` plugin.
+  - Open the package and go to `js/tinymce`.
+  - Replace all the following files and folders:
+    * license.txt
+    * plugins
+      * charmap
+      * colorpicker
+      * compat3x
+      * directionality
+      * fullscreen
+      * hr
+      * image
+      * link
+      * lists
+      * media
+      * paste
+      * tabfocus
+      * textcolor
+    * skins
+      * lightgray
+    * themes
+      * inlite
+      * modern
+    * tinymce.js
+    * tinymce.min.js
+  - Go to the `compat3x` plugin folder and move `tiny_mce_popup.js` and `utils`
+    to the root directory. Delete the `img` folder.
+  - Go to the `lightgray` skin folder and delete `content.mobile.min.css`,
+    `fonts/tinymce-mobile.woff`, `skin.min.css.map`, `skin.mobile.min.css` and
+    `skin.mobile.min.css.map`.
+  - After all these steps, there should normally not be any file additions or
+    deletions when you run `svn status`, only file modifications. If there are,
+    make sure it's intentional.
+  - Update the TinyMCE version in `src/wp-includes/version.php`. Use the
+    following format:
+    - Major version number.
+    - Minor version number.
+    - Patch version number, holding 2 places.
+    - A dash "-".
+    - The date: YYYYMMDD.
 
 ## Single file dependencies
 
Index: src/js/_enqueues/vendor/tinymce/plugins/charmap/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/charmap/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/charmap/plugin.js	(working copy)
@@ -1,1275 +1,1275 @@
 (function () {
 var charmap = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var fireInsertCustomChar = function (editor, chr) {
-    return editor.fire('insertCustomChar', { chr: chr });
-  };
-  var $_ce2ncy9qjjgwebhk = { fireInsertCustomChar: fireInsertCustomChar };
+    var fireInsertCustomChar = function (editor, chr) {
+      return editor.fire('insertCustomChar', { chr: chr });
+    };
+    var Events = { fireInsertCustomChar: fireInsertCustomChar };
 
-  var insertChar = function (editor, chr) {
-    var evtChr = $_ce2ncy9qjjgwebhk.fireInsertCustomChar(editor, chr).chr;
-    editor.execCommand('mceInsertContent', false, evtChr);
-  };
-  var $_el68bd9pjjgwebhj = { insertChar: insertChar };
+    var insertChar = function (editor, chr) {
+      var evtChr = Events.fireInsertCustomChar(editor, chr).chr;
+      editor.execCommand('mceInsertContent', false, evtChr);
+    };
+    var Actions = { insertChar: insertChar };
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var getCharMap = function (editor) {
-    return editor.settings.charmap;
-  };
-  var getCharMapAppend = function (editor) {
-    return editor.settings.charmap_append;
-  };
-  var $_5e4nos9tjjgwebhr = {
-    getCharMap: getCharMap,
-    getCharMapAppend: getCharMapAppend
-  };
-
-  var isArray = global$1.isArray;
-  var getDefaultCharMap = function () {
-    return [
-      [
-        '160',
-        'no-break space'
-      ],
-      [
-        '173',
-        'soft hyphen'
-      ],
-      [
-        '34',
-        'quotation mark'
-      ],
-      [
-        '162',
-        'cent sign'
-      ],
-      [
-        '8364',
-        'euro sign'
-      ],
-      [
-        '163',
-        'pound sign'
-      ],
-      [
-        '165',
-        'yen sign'
-      ],
-      [
-        '169',
-        'copyright sign'
-      ],
-      [
-        '174',
-        'registered sign'
-      ],
-      [
-        '8482',
-        'trade mark sign'
-      ],
-      [
-        '8240',
-        'per mille sign'
-      ],
-      [
-        '181',
-        'micro sign'
-      ],
-      [
-        '183',
-        'middle dot'
-      ],
-      [
-        '8226',
-        'bullet'
-      ],
-      [
-        '8230',
-        'three dot leader'
-      ],
-      [
-        '8242',
-        'minutes / feet'
-      ],
-      [
-        '8243',
-        'seconds / inches'
-      ],
-      [
-        '167',
-        'section sign'
-      ],
-      [
-        '182',
-        'paragraph sign'
-      ],
-      [
-        '223',
-        'sharp s / ess-zed'
-      ],
-      [
-        '8249',
-        'single left-pointing angle quotation mark'
-      ],
-      [
-        '8250',
-        'single right-pointing angle quotation mark'
-      ],
-      [
-        '171',
-        'left pointing guillemet'
-      ],
-      [
-        '187',
-        'right pointing guillemet'
-      ],
-      [
-        '8216',
-        'left single quotation mark'
-      ],
-      [
-        '8217',
-        'right single quotation mark'
-      ],
-      [
-        '8220',
-        'left double quotation mark'
-      ],
-      [
-        '8221',
-        'right double quotation mark'
-      ],
-      [
-        '8218',
-        'single low-9 quotation mark'
-      ],
-      [
-        '8222',
-        'double low-9 quotation mark'
-      ],
-      [
-        '60',
-        'less-than sign'
-      ],
-      [
-        '62',
-        'greater-than sign'
-      ],
-      [
-        '8804',
-        'less-than or equal to'
-      ],
-      [
-        '8805',
-        'greater-than or equal to'
-      ],
-      [
-        '8211',
-        'en dash'
-      ],
-      [
-        '8212',
-        'em dash'
-      ],
-      [
-        '175',
-        'macron'
-      ],
-      [
-        '8254',
-        'overline'
-      ],
-      [
-        '164',
-        'currency sign'
-      ],
-      [
-        '166',
-        'broken bar'
-      ],
-      [
-        '168',
-        'diaeresis'
-      ],
-      [
-        '161',
-        'inverted exclamation mark'
-      ],
-      [
-        '191',
-        'turned question mark'
-      ],
-      [
-        '710',
-        'circumflex accent'
-      ],
-      [
-        '732',
-        'small tilde'
-      ],
-      [
-        '176',
-        'degree sign'
-      ],
-      [
-        '8722',
-        'minus sign'
-      ],
-      [
-        '177',
-        'plus-minus sign'
-      ],
-      [
-        '247',
-        'division sign'
-      ],
-      [
-        '8260',
-        'fraction slash'
-      ],
-      [
-        '215',
-        'multiplication sign'
-      ],
-      [
-        '185',
-        'superscript one'
-      ],
-      [
-        '178',
-        'superscript two'
-      ],
-      [
-        '179',
-        'superscript three'
-      ],
-      [
-        '188',
-        'fraction one quarter'
-      ],
-      [
-        '189',
-        'fraction one half'
-      ],
-      [
-        '190',
-        'fraction three quarters'
-      ],
-      [
-        '402',
-        'function / florin'
-      ],
-      [
-        '8747',
-        'integral'
-      ],
-      [
-        '8721',
-        'n-ary sumation'
-      ],
-      [
-        '8734',
-        'infinity'
-      ],
-      [
-        '8730',
-        'square root'
-      ],
-      [
-        '8764',
-        'similar to'
-      ],
-      [
-        '8773',
-        'approximately equal to'
-      ],
-      [
-        '8776',
-        'almost equal to'
-      ],
-      [
-        '8800',
-        'not equal to'
-      ],
-      [
-        '8801',
-        'identical to'
-      ],
-      [
-        '8712',
-        'element of'
-      ],
-      [
-        '8713',
-        'not an element of'
-      ],
-      [
-        '8715',
-        'contains as member'
-      ],
-      [
-        '8719',
-        'n-ary product'
-      ],
-      [
-        '8743',
-        'logical and'
-      ],
-      [
-        '8744',
-        'logical or'
-      ],
-      [
-        '172',
-        'not sign'
-      ],
-      [
-        '8745',
-        'intersection'
-      ],
-      [
-        '8746',
-        'union'
-      ],
-      [
-        '8706',
-        'partial differential'
-      ],
-      [
-        '8704',
-        'for all'
-      ],
-      [
-        '8707',
-        'there exists'
-      ],
-      [
-        '8709',
-        'diameter'
-      ],
-      [
-        '8711',
-        'backward difference'
-      ],
-      [
-        '8727',
-        'asterisk operator'
-      ],
-      [
-        '8733',
-        'proportional to'
-      ],
-      [
-        '8736',
-        'angle'
-      ],
-      [
-        '180',
-        'acute accent'
-      ],
-      [
-        '184',
-        'cedilla'
-      ],
-      [
-        '170',
-        'feminine ordinal indicator'
-      ],
-      [
-        '186',
-        'masculine ordinal indicator'
-      ],
-      [
-        '8224',
-        'dagger'
-      ],
-      [
-        '8225',
-        'double dagger'
-      ],
-      [
-        '192',
-        'A - grave'
-      ],
-      [
-        '193',
-        'A - acute'
-      ],
-      [
-        '194',
-        'A - circumflex'
-      ],
-      [
-        '195',
-        'A - tilde'
-      ],
-      [
-        '196',
-        'A - diaeresis'
-      ],
-      [
-        '197',
-        'A - ring above'
-      ],
-      [
-        '256',
-        'A - macron'
-      ],
-      [
-        '198',
-        'ligature AE'
-      ],
-      [
-        '199',
-        'C - cedilla'
-      ],
-      [
-        '200',
-        'E - grave'
-      ],
-      [
-        '201',
-        'E - acute'
-      ],
-      [
-        '202',
-        'E - circumflex'
-      ],
-      [
-        '203',
-        'E - diaeresis'
-      ],
-      [
-        '274',
-        'E - macron'
-      ],
-      [
-        '204',
-        'I - grave'
-      ],
-      [
-        '205',
-        'I - acute'
-      ],
-      [
-        '206',
-        'I - circumflex'
-      ],
-      [
-        '207',
-        'I - diaeresis'
-      ],
-      [
-        '298',
-        'I - macron'
-      ],
-      [
-        '208',
-        'ETH'
-      ],
-      [
-        '209',
-        'N - tilde'
-      ],
-      [
-        '210',
-        'O - grave'
-      ],
-      [
-        '211',
-        'O - acute'
-      ],
-      [
-        '212',
-        'O - circumflex'
-      ],
-      [
-        '213',
-        'O - tilde'
-      ],
-      [
-        '214',
-        'O - diaeresis'
-      ],
-      [
-        '216',
-        'O - slash'
-      ],
-      [
-        '332',
-        'O - macron'
-      ],
-      [
-        '338',
-        'ligature OE'
-      ],
-      [
-        '352',
-        'S - caron'
-      ],
-      [
-        '217',
-        'U - grave'
-      ],
-      [
-        '218',
-        'U - acute'
-      ],
-      [
-        '219',
-        'U - circumflex'
-      ],
-      [
-        '220',
-        'U - diaeresis'
-      ],
-      [
-        '362',
-        'U - macron'
-      ],
-      [
-        '221',
-        'Y - acute'
-      ],
-      [
-        '376',
-        'Y - diaeresis'
-      ],
-      [
-        '562',
-        'Y - macron'
-      ],
-      [
-        '222',
-        'THORN'
-      ],
-      [
-        '224',
-        'a - grave'
-      ],
-      [
-        '225',
-        'a - acute'
-      ],
-      [
-        '226',
-        'a - circumflex'
-      ],
-      [
-        '227',
-        'a - tilde'
-      ],
-      [
-        '228',
-        'a - diaeresis'
-      ],
-      [
-        '229',
-        'a - ring above'
-      ],
-      [
-        '257',
-        'a - macron'
-      ],
-      [
-        '230',
-        'ligature ae'
-      ],
-      [
-        '231',
-        'c - cedilla'
-      ],
-      [
-        '232',
-        'e - grave'
-      ],
-      [
-        '233',
-        'e - acute'
-      ],
-      [
-        '234',
-        'e - circumflex'
-      ],
-      [
-        '235',
-        'e - diaeresis'
-      ],
-      [
-        '275',
-        'e - macron'
-      ],
-      [
-        '236',
-        'i - grave'
-      ],
-      [
-        '237',
-        'i - acute'
-      ],
-      [
-        '238',
-        'i - circumflex'
-      ],
-      [
-        '239',
-        'i - diaeresis'
-      ],
-      [
-        '299',
-        'i - macron'
-      ],
-      [
-        '240',
-        'eth'
-      ],
-      [
-        '241',
-        'n - tilde'
-      ],
-      [
-        '242',
-        'o - grave'
-      ],
-      [
-        '243',
-        'o - acute'
-      ],
-      [
-        '244',
-        'o - circumflex'
-      ],
-      [
-        '245',
-        'o - tilde'
-      ],
-      [
-        '246',
-        'o - diaeresis'
-      ],
-      [
-        '248',
-        'o slash'
-      ],
-      [
-        '333',
-        'o macron'
-      ],
-      [
-        '339',
-        'ligature oe'
-      ],
-      [
-        '353',
-        's - caron'
-      ],
-      [
-        '249',
-        'u - grave'
-      ],
-      [
-        '250',
-        'u - acute'
-      ],
-      [
-        '251',
-        'u - circumflex'
-      ],
-      [
-        '252',
-        'u - diaeresis'
-      ],
-      [
-        '363',
-        'u - macron'
-      ],
-      [
-        '253',
-        'y - acute'
-      ],
-      [
-        '254',
-        'thorn'
-      ],
-      [
-        '255',
-        'y - diaeresis'
-      ],
-      [
-        '563',
-        'y - macron'
-      ],
-      [
-        '913',
-        'Alpha'
-      ],
-      [
-        '914',
-        'Beta'
-      ],
-      [
-        '915',
-        'Gamma'
-      ],
-      [
-        '916',
-        'Delta'
-      ],
-      [
-        '917',
-        'Epsilon'
-      ],
-      [
-        '918',
-        'Zeta'
-      ],
-      [
-        '919',
-        'Eta'
-      ],
-      [
-        '920',
-        'Theta'
-      ],
-      [
-        '921',
-        'Iota'
-      ],
-      [
-        '922',
-        'Kappa'
-      ],
-      [
-        '923',
-        'Lambda'
-      ],
-      [
-        '924',
-        'Mu'
-      ],
-      [
-        '925',
-        'Nu'
-      ],
-      [
-        '926',
-        'Xi'
-      ],
-      [
-        '927',
-        'Omicron'
-      ],
-      [
-        '928',
-        'Pi'
-      ],
-      [
-        '929',
-        'Rho'
-      ],
-      [
-        '931',
-        'Sigma'
-      ],
-      [
-        '932',
-        'Tau'
-      ],
-      [
-        '933',
-        'Upsilon'
-      ],
-      [
-        '934',
-        'Phi'
-      ],
-      [
-        '935',
-        'Chi'
-      ],
-      [
-        '936',
-        'Psi'
-      ],
-      [
-        '937',
-        'Omega'
-      ],
-      [
-        '945',
-        'alpha'
-      ],
-      [
-        '946',
-        'beta'
-      ],
-      [
-        '947',
-        'gamma'
-      ],
-      [
-        '948',
-        'delta'
-      ],
-      [
-        '949',
-        'epsilon'
-      ],
-      [
-        '950',
-        'zeta'
-      ],
-      [
-        '951',
-        'eta'
-      ],
-      [
-        '952',
-        'theta'
-      ],
-      [
-        '953',
-        'iota'
-      ],
-      [
-        '954',
-        'kappa'
-      ],
-      [
-        '955',
-        'lambda'
-      ],
-      [
-        '956',
-        'mu'
-      ],
-      [
-        '957',
-        'nu'
-      ],
-      [
-        '958',
-        'xi'
-      ],
-      [
-        '959',
-        'omicron'
-      ],
-      [
-        '960',
-        'pi'
-      ],
-      [
-        '961',
-        'rho'
-      ],
-      [
-        '962',
-        'final sigma'
-      ],
-      [
-        '963',
-        'sigma'
-      ],
-      [
-        '964',
-        'tau'
-      ],
-      [
-        '965',
-        'upsilon'
-      ],
-      [
-        '966',
-        'phi'
-      ],
-      [
-        '967',
-        'chi'
-      ],
-      [
-        '968',
-        'psi'
-      ],
-      [
-        '969',
-        'omega'
-      ],
-      [
-        '8501',
-        'alef symbol'
-      ],
-      [
-        '982',
-        'pi symbol'
-      ],
-      [
-        '8476',
-        'real part symbol'
-      ],
-      [
-        '978',
-        'upsilon - hook symbol'
-      ],
-      [
-        '8472',
-        'Weierstrass p'
-      ],
-      [
-        '8465',
-        'imaginary part'
-      ],
-      [
-        '8592',
-        'leftwards arrow'
-      ],
-      [
-        '8593',
-        'upwards arrow'
-      ],
-      [
-        '8594',
-        'rightwards arrow'
-      ],
-      [
-        '8595',
-        'downwards arrow'
-      ],
-      [
-        '8596',
-        'left right arrow'
-      ],
-      [
-        '8629',
-        'carriage return'
-      ],
-      [
-        '8656',
-        'leftwards double arrow'
-      ],
-      [
-        '8657',
-        'upwards double arrow'
-      ],
-      [
-        '8658',
-        'rightwards double arrow'
-      ],
-      [
-        '8659',
-        'downwards double arrow'
-      ],
-      [
-        '8660',
-        'left right double arrow'
-      ],
-      [
-        '8756',
-        'therefore'
-      ],
-      [
-        '8834',
-        'subset of'
-      ],
-      [
-        '8835',
-        'superset of'
-      ],
-      [
-        '8836',
-        'not a subset of'
-      ],
-      [
-        '8838',
-        'subset of or equal to'
-      ],
-      [
-        '8839',
-        'superset of or equal to'
-      ],
-      [
-        '8853',
-        'circled plus'
-      ],
-      [
-        '8855',
-        'circled times'
-      ],
-      [
-        '8869',
-        'perpendicular'
-      ],
-      [
-        '8901',
-        'dot operator'
-      ],
-      [
-        '8968',
-        'left ceiling'
-      ],
-      [
-        '8969',
-        'right ceiling'
-      ],
-      [
-        '8970',
-        'left floor'
-      ],
-      [
-        '8971',
-        'right floor'
-      ],
-      [
-        '9001',
-        'left-pointing angle bracket'
-      ],
-      [
-        '9002',
-        'right-pointing angle bracket'
-      ],
-      [
-        '9674',
-        'lozenge'
-      ],
-      [
-        '9824',
-        'black spade suit'
-      ],
-      [
-        '9827',
-        'black club suit'
-      ],
-      [
-        '9829',
-        'black heart suit'
-      ],
-      [
-        '9830',
-        'black diamond suit'
-      ],
-      [
-        '8194',
-        'en space'
-      ],
-      [
-        '8195',
-        'em space'
-      ],
-      [
-        '8201',
-        'thin space'
-      ],
-      [
-        '8204',
-        'zero width non-joiner'
-      ],
-      [
-        '8205',
-        'zero width joiner'
-      ],
-      [
-        '8206',
-        'left-to-right mark'
-      ],
-      [
-        '8207',
-        'right-to-left mark'
-      ]
-    ];
-  };
-  var charmapFilter = function (charmap) {
-    return global$1.grep(charmap, function (item) {
-      return isArray(item) && item.length === 2;
-    });
-  };
-  var getCharsFromSetting = function (settingValue) {
-    if (isArray(settingValue)) {
-      return [].concat(charmapFilter(settingValue));
-    }
-    if (typeof settingValue === 'function') {
-      return settingValue();
-    }
-    return [];
-  };
-  var extendCharMap = function (editor, charmap) {
-    var userCharMap = $_5e4nos9tjjgwebhr.getCharMap(editor);
-    if (userCharMap) {
-      charmap = getCharsFromSetting(userCharMap);
-    }
-    var userCharMapAppend = $_5e4nos9tjjgwebhr.getCharMapAppend(editor);
-    if (userCharMapAppend) {
-      return [].concat(charmap).concat(getCharsFromSetting(userCharMapAppend));
-    }
-    return charmap;
-  };
-  var getCharMap$1 = function (editor) {
-    return extendCharMap(editor, getDefaultCharMap());
-  };
-  var $_dc8shd9rjjgwebhl = { getCharMap: getCharMap$1 };
-
-  var get = function (editor) {
-    var getCharMap = function () {
-      return $_dc8shd9rjjgwebhl.getCharMap(editor);
+    var getCharMap = function (editor) {
+      return editor.settings.charmap;
     };
-    var insertChar = function (chr) {
-      $_el68bd9pjjgwebhj.insertChar(editor, chr);
+    var getCharMapAppend = function (editor) {
+      return editor.settings.charmap_append;
     };
-    return {
+    var Settings = {
       getCharMap: getCharMap,
-      insertChar: insertChar
+      getCharMapAppend: getCharMapAppend
     };
-  };
-  var $_gbufu29ojjgwebhf = { get: get };
 
-  var getHtml = function (charmap) {
-    var gridHtml, x, y;
-    var width = Math.min(charmap.length, 25);
-    var height = Math.ceil(charmap.length / width);
-    gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';
-    for (y = 0; y < height; y++) {
-      gridHtml += '<tr>';
-      for (x = 0; x < width; x++) {
-        var index = y * width + x;
-        if (index < charmap.length) {
-          var chr = charmap[index];
-          var charCode = parseInt(chr[0], 10);
-          var chrText = chr ? String.fromCharCode(charCode) : '&nbsp;';
-          gridHtml += '<td title="' + chr[1] + '">' + '<div tabindex="-1" title="' + chr[1] + '" role="button" data-chr="' + charCode + '">' + chrText + '</div>' + '</td>';
-        } else {
-          gridHtml += '<td />';
-        }
+    var isArray = global$1.isArray;
+    var getDefaultCharMap = function () {
+      return [
+        [
+          '160',
+          'no-break space'
+        ],
+        [
+          '173',
+          'soft hyphen'
+        ],
+        [
+          '34',
+          'quotation mark'
+        ],
+        [
+          '162',
+          'cent sign'
+        ],
+        [
+          '8364',
+          'euro sign'
+        ],
+        [
+          '163',
+          'pound sign'
+        ],
+        [
+          '165',
+          'yen sign'
+        ],
+        [
+          '169',
+          'copyright sign'
+        ],
+        [
+          '174',
+          'registered sign'
+        ],
+        [
+          '8482',
+          'trade mark sign'
+        ],
+        [
+          '8240',
+          'per mille sign'
+        ],
+        [
+          '181',
+          'micro sign'
+        ],
+        [
+          '183',
+          'middle dot'
+        ],
+        [
+          '8226',
+          'bullet'
+        ],
+        [
+          '8230',
+          'three dot leader'
+        ],
+        [
+          '8242',
+          'minutes / feet'
+        ],
+        [
+          '8243',
+          'seconds / inches'
+        ],
+        [
+          '167',
+          'section sign'
+        ],
+        [
+          '182',
+          'paragraph sign'
+        ],
+        [
+          '223',
+          'sharp s / ess-zed'
+        ],
+        [
+          '8249',
+          'single left-pointing angle quotation mark'
+        ],
+        [
+          '8250',
+          'single right-pointing angle quotation mark'
+        ],
+        [
+          '171',
+          'left pointing guillemet'
+        ],
+        [
+          '187',
+          'right pointing guillemet'
+        ],
+        [
+          '8216',
+          'left single quotation mark'
+        ],
+        [
+          '8217',
+          'right single quotation mark'
+        ],
+        [
+          '8220',
+          'left double quotation mark'
+        ],
+        [
+          '8221',
+          'right double quotation mark'
+        ],
+        [
+          '8218',
+          'single low-9 quotation mark'
+        ],
+        [
+          '8222',
+          'double low-9 quotation mark'
+        ],
+        [
+          '60',
+          'less-than sign'
+        ],
+        [
+          '62',
+          'greater-than sign'
+        ],
+        [
+          '8804',
+          'less-than or equal to'
+        ],
+        [
+          '8805',
+          'greater-than or equal to'
+        ],
+        [
+          '8211',
+          'en dash'
+        ],
+        [
+          '8212',
+          'em dash'
+        ],
+        [
+          '175',
+          'macron'
+        ],
+        [
+          '8254',
+          'overline'
+        ],
+        [
+          '164',
+          'currency sign'
+        ],
+        [
+          '166',
+          'broken bar'
+        ],
+        [
+          '168',
+          'diaeresis'
+        ],
+        [
+          '161',
+          'inverted exclamation mark'
+        ],
+        [
+          '191',
+          'turned question mark'
+        ],
+        [
+          '710',
+          'circumflex accent'
+        ],
+        [
+          '732',
+          'small tilde'
+        ],
+        [
+          '176',
+          'degree sign'
+        ],
+        [
+          '8722',
+          'minus sign'
+        ],
+        [
+          '177',
+          'plus-minus sign'
+        ],
+        [
+          '247',
+          'division sign'
+        ],
+        [
+          '8260',
+          'fraction slash'
+        ],
+        [
+          '215',
+          'multiplication sign'
+        ],
+        [
+          '185',
+          'superscript one'
+        ],
+        [
+          '178',
+          'superscript two'
+        ],
+        [
+          '179',
+          'superscript three'
+        ],
+        [
+          '188',
+          'fraction one quarter'
+        ],
+        [
+          '189',
+          'fraction one half'
+        ],
+        [
+          '190',
+          'fraction three quarters'
+        ],
+        [
+          '402',
+          'function / florin'
+        ],
+        [
+          '8747',
+          'integral'
+        ],
+        [
+          '8721',
+          'n-ary sumation'
+        ],
+        [
+          '8734',
+          'infinity'
+        ],
+        [
+          '8730',
+          'square root'
+        ],
+        [
+          '8764',
+          'similar to'
+        ],
+        [
+          '8773',
+          'approximately equal to'
+        ],
+        [
+          '8776',
+          'almost equal to'
+        ],
+        [
+          '8800',
+          'not equal to'
+        ],
+        [
+          '8801',
+          'identical to'
+        ],
+        [
+          '8712',
+          'element of'
+        ],
+        [
+          '8713',
+          'not an element of'
+        ],
+        [
+          '8715',
+          'contains as member'
+        ],
+        [
+          '8719',
+          'n-ary product'
+        ],
+        [
+          '8743',
+          'logical and'
+        ],
+        [
+          '8744',
+          'logical or'
+        ],
+        [
+          '172',
+          'not sign'
+        ],
+        [
+          '8745',
+          'intersection'
+        ],
+        [
+          '8746',
+          'union'
+        ],
+        [
+          '8706',
+          'partial differential'
+        ],
+        [
+          '8704',
+          'for all'
+        ],
+        [
+          '8707',
+          'there exists'
+        ],
+        [
+          '8709',
+          'diameter'
+        ],
+        [
+          '8711',
+          'backward difference'
+        ],
+        [
+          '8727',
+          'asterisk operator'
+        ],
+        [
+          '8733',
+          'proportional to'
+        ],
+        [
+          '8736',
+          'angle'
+        ],
+        [
+          '180',
+          'acute accent'
+        ],
+        [
+          '184',
+          'cedilla'
+        ],
+        [
+          '170',
+          'feminine ordinal indicator'
+        ],
+        [
+          '186',
+          'masculine ordinal indicator'
+        ],
+        [
+          '8224',
+          'dagger'
+        ],
+        [
+          '8225',
+          'double dagger'
+        ],
+        [
+          '192',
+          'A - grave'
+        ],
+        [
+          '193',
+          'A - acute'
+        ],
+        [
+          '194',
+          'A - circumflex'
+        ],
+        [
+          '195',
+          'A - tilde'
+        ],
+        [
+          '196',
+          'A - diaeresis'
+        ],
+        [
+          '197',
+          'A - ring above'
+        ],
+        [
+          '256',
+          'A - macron'
+        ],
+        [
+          '198',
+          'ligature AE'
+        ],
+        [
+          '199',
+          'C - cedilla'
+        ],
+        [
+          '200',
+          'E - grave'
+        ],
+        [
+          '201',
+          'E - acute'
+        ],
+        [
+          '202',
+          'E - circumflex'
+        ],
+        [
+          '203',
+          'E - diaeresis'
+        ],
+        [
+          '274',
+          'E - macron'
+        ],
+        [
+          '204',
+          'I - grave'
+        ],
+        [
+          '205',
+          'I - acute'
+        ],
+        [
+          '206',
+          'I - circumflex'
+        ],
+        [
+          '207',
+          'I - diaeresis'
+        ],
+        [
+          '298',
+          'I - macron'
+        ],
+        [
+          '208',
+          'ETH'
+        ],
+        [
+          '209',
+          'N - tilde'
+        ],
+        [
+          '210',
+          'O - grave'
+        ],
+        [
+          '211',
+          'O - acute'
+        ],
+        [
+          '212',
+          'O - circumflex'
+        ],
+        [
+          '213',
+          'O - tilde'
+        ],
+        [
+          '214',
+          'O - diaeresis'
+        ],
+        [
+          '216',
+          'O - slash'
+        ],
+        [
+          '332',
+          'O - macron'
+        ],
+        [
+          '338',
+          'ligature OE'
+        ],
+        [
+          '352',
+          'S - caron'
+        ],
+        [
+          '217',
+          'U - grave'
+        ],
+        [
+          '218',
+          'U - acute'
+        ],
+        [
+          '219',
+          'U - circumflex'
+        ],
+        [
+          '220',
+          'U - diaeresis'
+        ],
+        [
+          '362',
+          'U - macron'
+        ],
+        [
+          '221',
+          'Y - acute'
+        ],
+        [
+          '376',
+          'Y - diaeresis'
+        ],
+        [
+          '562',
+          'Y - macron'
+        ],
+        [
+          '222',
+          'THORN'
+        ],
+        [
+          '224',
+          'a - grave'
+        ],
+        [
+          '225',
+          'a - acute'
+        ],
+        [
+          '226',
+          'a - circumflex'
+        ],
+        [
+          '227',
+          'a - tilde'
+        ],
+        [
+          '228',
+          'a - diaeresis'
+        ],
+        [
+          '229',
+          'a - ring above'
+        ],
+        [
+          '257',
+          'a - macron'
+        ],
+        [
+          '230',
+          'ligature ae'
+        ],
+        [
+          '231',
+          'c - cedilla'
+        ],
+        [
+          '232',
+          'e - grave'
+        ],
+        [
+          '233',
+          'e - acute'
+        ],
+        [
+          '234',
+          'e - circumflex'
+        ],
+        [
+          '235',
+          'e - diaeresis'
+        ],
+        [
+          '275',
+          'e - macron'
+        ],
+        [
+          '236',
+          'i - grave'
+        ],
+        [
+          '237',
+          'i - acute'
+        ],
+        [
+          '238',
+          'i - circumflex'
+        ],
+        [
+          '239',
+          'i - diaeresis'
+        ],
+        [
+          '299',
+          'i - macron'
+        ],
+        [
+          '240',
+          'eth'
+        ],
+        [
+          '241',
+          'n - tilde'
+        ],
+        [
+          '242',
+          'o - grave'
+        ],
+        [
+          '243',
+          'o - acute'
+        ],
+        [
+          '244',
+          'o - circumflex'
+        ],
+        [
+          '245',
+          'o - tilde'
+        ],
+        [
+          '246',
+          'o - diaeresis'
+        ],
+        [
+          '248',
+          'o slash'
+        ],
+        [
+          '333',
+          'o macron'
+        ],
+        [
+          '339',
+          'ligature oe'
+        ],
+        [
+          '353',
+          's - caron'
+        ],
+        [
+          '249',
+          'u - grave'
+        ],
+        [
+          '250',
+          'u - acute'
+        ],
+        [
+          '251',
+          'u - circumflex'
+        ],
+        [
+          '252',
+          'u - diaeresis'
+        ],
+        [
+          '363',
+          'u - macron'
+        ],
+        [
+          '253',
+          'y - acute'
+        ],
+        [
+          '254',
+          'thorn'
+        ],
+        [
+          '255',
+          'y - diaeresis'
+        ],
+        [
+          '563',
+          'y - macron'
+        ],
+        [
+          '913',
+          'Alpha'
+        ],
+        [
+          '914',
+          'Beta'
+        ],
+        [
+          '915',
+          'Gamma'
+        ],
+        [
+          '916',
+          'Delta'
+        ],
+        [
+          '917',
+          'Epsilon'
+        ],
+        [
+          '918',
+          'Zeta'
+        ],
+        [
+          '919',
+          'Eta'
+        ],
+        [
+          '920',
+          'Theta'
+        ],
+        [
+          '921',
+          'Iota'
+        ],
+        [
+          '922',
+          'Kappa'
+        ],
+        [
+          '923',
+          'Lambda'
+        ],
+        [
+          '924',
+          'Mu'
+        ],
+        [
+          '925',
+          'Nu'
+        ],
+        [
+          '926',
+          'Xi'
+        ],
+        [
+          '927',
+          'Omicron'
+        ],
+        [
+          '928',
+          'Pi'
+        ],
+        [
+          '929',
+          'Rho'
+        ],
+        [
+          '931',
+          'Sigma'
+        ],
+        [
+          '932',
+          'Tau'
+        ],
+        [
+          '933',
+          'Upsilon'
+        ],
+        [
+          '934',
+          'Phi'
+        ],
+        [
+          '935',
+          'Chi'
+        ],
+        [
+          '936',
+          'Psi'
+        ],
+        [
+          '937',
+          'Omega'
+        ],
+        [
+          '945',
+          'alpha'
+        ],
+        [
+          '946',
+          'beta'
+        ],
+        [
+          '947',
+          'gamma'
+        ],
+        [
+          '948',
+          'delta'
+        ],
+        [
+          '949',
+          'epsilon'
+        ],
+        [
+          '950',
+          'zeta'
+        ],
+        [
+          '951',
+          'eta'
+        ],
+        [
+          '952',
+          'theta'
+        ],
+        [
+          '953',
+          'iota'
+        ],
+        [
+          '954',
+          'kappa'
+        ],
+        [
+          '955',
+          'lambda'
+        ],
+        [
+          '956',
+          'mu'
+        ],
+        [
+          '957',
+          'nu'
+        ],
+        [
+          '958',
+          'xi'
+        ],
+        [
+          '959',
+          'omicron'
+        ],
+        [
+          '960',
+          'pi'
+        ],
+        [
+          '961',
+          'rho'
+        ],
+        [
+          '962',
+          'final sigma'
+        ],
+        [
+          '963',
+          'sigma'
+        ],
+        [
+          '964',
+          'tau'
+        ],
+        [
+          '965',
+          'upsilon'
+        ],
+        [
+          '966',
+          'phi'
+        ],
+        [
+          '967',
+          'chi'
+        ],
+        [
+          '968',
+          'psi'
+        ],
+        [
+          '969',
+          'omega'
+        ],
+        [
+          '8501',
+          'alef symbol'
+        ],
+        [
+          '982',
+          'pi symbol'
+        ],
+        [
+          '8476',
+          'real part symbol'
+        ],
+        [
+          '978',
+          'upsilon - hook symbol'
+        ],
+        [
+          '8472',
+          'Weierstrass p'
+        ],
+        [
+          '8465',
+          'imaginary part'
+        ],
+        [
+          '8592',
+          'leftwards arrow'
+        ],
+        [
+          '8593',
+          'upwards arrow'
+        ],
+        [
+          '8594',
+          'rightwards arrow'
+        ],
+        [
+          '8595',
+          'downwards arrow'
+        ],
+        [
+          '8596',
+          'left right arrow'
+        ],
+        [
+          '8629',
+          'carriage return'
+        ],
+        [
+          '8656',
+          'leftwards double arrow'
+        ],
+        [
+          '8657',
+          'upwards double arrow'
+        ],
+        [
+          '8658',
+          'rightwards double arrow'
+        ],
+        [
+          '8659',
+          'downwards double arrow'
+        ],
+        [
+          '8660',
+          'left right double arrow'
+        ],
+        [
+          '8756',
+          'therefore'
+        ],
+        [
+          '8834',
+          'subset of'
+        ],
+        [
+          '8835',
+          'superset of'
+        ],
+        [
+          '8836',
+          'not a subset of'
+        ],
+        [
+          '8838',
+          'subset of or equal to'
+        ],
+        [
+          '8839',
+          'superset of or equal to'
+        ],
+        [
+          '8853',
+          'circled plus'
+        ],
+        [
+          '8855',
+          'circled times'
+        ],
+        [
+          '8869',
+          'perpendicular'
+        ],
+        [
+          '8901',
+          'dot operator'
+        ],
+        [
+          '8968',
+          'left ceiling'
+        ],
+        [
+          '8969',
+          'right ceiling'
+        ],
+        [
+          '8970',
+          'left floor'
+        ],
+        [
+          '8971',
+          'right floor'
+        ],
+        [
+          '9001',
+          'left-pointing angle bracket'
+        ],
+        [
+          '9002',
+          'right-pointing angle bracket'
+        ],
+        [
+          '9674',
+          'lozenge'
+        ],
+        [
+          '9824',
+          'black spade suit'
+        ],
+        [
+          '9827',
+          'black club suit'
+        ],
+        [
+          '9829',
+          'black heart suit'
+        ],
+        [
+          '9830',
+          'black diamond suit'
+        ],
+        [
+          '8194',
+          'en space'
+        ],
+        [
+          '8195',
+          'em space'
+        ],
+        [
+          '8201',
+          'thin space'
+        ],
+        [
+          '8204',
+          'zero width non-joiner'
+        ],
+        [
+          '8205',
+          'zero width joiner'
+        ],
+        [
+          '8206',
+          'left-to-right mark'
+        ],
+        [
+          '8207',
+          'right-to-left mark'
+        ]
+      ];
+    };
+    var charmapFilter = function (charmap) {
+      return global$1.grep(charmap, function (item) {
+        return isArray(item) && item.length === 2;
+      });
+    };
+    var getCharsFromSetting = function (settingValue) {
+      if (isArray(settingValue)) {
+        return [].concat(charmapFilter(settingValue));
       }
-      gridHtml += '</tr>';
-    }
-    gridHtml += '</tbody></table>';
-    return gridHtml;
-  };
-  var $_6avwgq9wjjgwebi2 = { getHtml: getHtml };
+      if (typeof settingValue === 'function') {
+        return settingValue();
+      }
+      return [];
+    };
+    var extendCharMap = function (editor, charmap) {
+      var userCharMap = Settings.getCharMap(editor);
+      if (userCharMap) {
+        charmap = getCharsFromSetting(userCharMap);
+      }
+      var userCharMapAppend = Settings.getCharMapAppend(editor);
+      if (userCharMapAppend) {
+        return [].concat(charmap).concat(getCharsFromSetting(userCharMapAppend));
+      }
+      return charmap;
+    };
+    var getCharMap$1 = function (editor) {
+      return extendCharMap(editor, getDefaultCharMap());
+    };
+    var CharMap = { getCharMap: getCharMap$1 };
 
-  var getParentTd = function (elm) {
-    while (elm) {
-      if (elm.nodeName === 'TD') {
-        return elm;
-      }
-      elm = elm.parentNode;
-    }
-  };
-  var open = function (editor) {
-    var win;
-    var charMapPanel = {
-      type: 'container',
-      html: $_6avwgq9wjjgwebi2.getHtml($_dc8shd9rjjgwebhl.getCharMap(editor)),
-      onclick: function (e) {
-        var target = e.target;
-        if (/^(TD|DIV)$/.test(target.nodeName)) {
-          var charDiv = getParentTd(target).firstChild;
-          if (charDiv && charDiv.hasAttribute('data-chr')) {
-            var charCodeString = charDiv.getAttribute('data-chr');
-            var charCode = parseInt(charCodeString, 10);
-            if (!isNaN(charCode)) {
-              $_el68bd9pjjgwebhj.insertChar(editor, String.fromCharCode(charCode));
-            }
-            if (!e.ctrlKey) {
-              win.close();
-            }
+    var get = function (editor) {
+      var getCharMap = function () {
+        return CharMap.getCharMap(editor);
+      };
+      var insertChar = function (chr) {
+        Actions.insertChar(editor, chr);
+      };
+      return {
+        getCharMap: getCharMap,
+        insertChar: insertChar
+      };
+    };
+    var Api = { get: get };
+
+    var getHtml = function (charmap) {
+      var gridHtml, x, y;
+      var width = Math.min(charmap.length, 25);
+      var height = Math.ceil(charmap.length / width);
+      gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';
+      for (y = 0; y < height; y++) {
+        gridHtml += '<tr>';
+        for (x = 0; x < width; x++) {
+          var index = y * width + x;
+          if (index < charmap.length) {
+            var chr = charmap[index];
+            var charCode = parseInt(chr[0], 10);
+            var chrText = chr ? String.fromCharCode(charCode) : '&nbsp;';
+            gridHtml += '<td title="' + chr[1] + '">' + '<div tabindex="-1" title="' + chr[1] + '" role="button" data-chr="' + charCode + '">' + chrText + '</div>' + '</td>';
+          } else {
+            gridHtml += '<td />';
           }
         }
-      },
-      onmouseover: function (e) {
-        var td = getParentTd(e.target);
-        if (td && td.firstChild) {
-          win.find('#preview').text(td.firstChild.firstChild.data);
-          win.find('#previewTitle').text(td.title);
-        } else {
-          win.find('#preview').text(' ');
-          win.find('#previewTitle').text(' ');
+        gridHtml += '</tr>';
+      }
+      gridHtml += '</tbody></table>';
+      return gridHtml;
+    };
+    var GridHtml = { getHtml: getHtml };
+
+    var getParentTd = function (elm) {
+      while (elm) {
+        if (elm.nodeName === 'TD') {
+          return elm;
         }
+        elm = elm.parentNode;
       }
     };
-    win = editor.windowManager.open({
-      title: 'Special character',
-      spacing: 10,
-      padding: 10,
-      items: [
-        charMapPanel,
-        {
-          type: 'container',
-          layout: 'flex',
-          direction: 'column',
-          align: 'center',
-          spacing: 5,
-          minWidth: 160,
-          minHeight: 160,
-          items: [
-            {
-              type: 'label',
-              name: 'preview',
-              text: ' ',
-              style: 'font-size: 40px; text-align: center',
-              border: 1,
-              minWidth: 140,
-              minHeight: 80
-            },
-            {
-              type: 'spacer',
-              minHeight: 20
-            },
-            {
-              type: 'label',
-              name: 'previewTitle',
-              text: ' ',
-              style: 'white-space: pre-wrap;',
-              border: 1,
-              minWidth: 140
+    var open = function (editor) {
+      var win;
+      var charMapPanel = {
+        type: 'container',
+        html: GridHtml.getHtml(CharMap.getCharMap(editor)),
+        onclick: function (e) {
+          var target = e.target;
+          if (/^(TD|DIV)$/.test(target.nodeName)) {
+            var charDiv = getParentTd(target).firstChild;
+            if (charDiv && charDiv.hasAttribute('data-chr')) {
+              var charCodeString = charDiv.getAttribute('data-chr');
+              var charCode = parseInt(charCodeString, 10);
+              if (!isNaN(charCode)) {
+                Actions.insertChar(editor, String.fromCharCode(charCode));
+              }
+              if (!e.ctrlKey) {
+                win.close();
+              }
             }
-          ]
+          }
+        },
+        onmouseover: function (e) {
+          var td = getParentTd(e.target);
+          if (td && td.firstChild) {
+            win.find('#preview').text(td.firstChild.firstChild.data);
+            win.find('#previewTitle').text(td.title);
+          } else {
+            win.find('#preview').text(' ');
+            win.find('#previewTitle').text(' ');
+          }
         }
-      ],
-      buttons: [{
-          text: 'Close',
-          onclick: function () {
-            win.close();
+      };
+      win = editor.windowManager.open({
+        title: 'Special character',
+        spacing: 10,
+        padding: 10,
+        items: [
+          charMapPanel,
+          {
+            type: 'container',
+            layout: 'flex',
+            direction: 'column',
+            align: 'center',
+            spacing: 5,
+            minWidth: 160,
+            minHeight: 160,
+            items: [
+              {
+                type: 'label',
+                name: 'preview',
+                text: ' ',
+                style: 'font-size: 40px; text-align: center',
+                border: 1,
+                minWidth: 140,
+                minHeight: 80
+              },
+              {
+                type: 'spacer',
+                minHeight: 20
+              },
+              {
+                type: 'label',
+                name: 'previewTitle',
+                text: ' ',
+                style: 'white-space: pre-wrap;',
+                border: 1,
+                minWidth: 140
+              }
+            ]
           }
-        }]
-    });
-  };
-  var $_3eaa3c9vjjgwebht = { open: open };
+        ],
+        buttons: [{
+            text: 'Close',
+            onclick: function () {
+              win.close();
+            }
+          }]
+      });
+    };
+    var Dialog = { open: open };
 
-  var register = function (editor) {
-    editor.addCommand('mceShowCharmap', function () {
-      $_3eaa3c9vjjgwebht.open(editor);
-    });
-  };
-  var $_b5cdu19ujjgwebhs = { register: register };
+    var register = function (editor) {
+      editor.addCommand('mceShowCharmap', function () {
+        Dialog.open(editor);
+      });
+    };
+    var Commands = { register: register };
 
-  var register$1 = function (editor) {
-    editor.addButton('charmap', {
-      icon: 'charmap',
-      tooltip: 'Special character',
-      cmd: 'mceShowCharmap'
+    var register$1 = function (editor) {
+      editor.addButton('charmap', {
+        icon: 'charmap',
+        tooltip: 'Special character',
+        cmd: 'mceShowCharmap'
+      });
+      editor.addMenuItem('charmap', {
+        icon: 'charmap',
+        text: 'Special character',
+        cmd: 'mceShowCharmap',
+        context: 'insert'
+      });
+    };
+    var Buttons = { register: register$1 };
+
+    global.add('charmap', function (editor) {
+      Commands.register(editor);
+      Buttons.register(editor);
+      return Api.get(editor);
     });
-    editor.addMenuItem('charmap', {
-      icon: 'charmap',
-      text: 'Special character',
-      cmd: 'mceShowCharmap',
-      context: 'insert'
-    });
-  };
-  var $_19iu2m9xjjgwebi3 = { register: register$1 };
+    function Plugin () {
+    }
 
-  global.add('charmap', function (editor) {
-    $_b5cdu19ujjgwebhs.register(editor);
-    $_19iu2m9xjjgwebi3.register(editor);
-    return $_gbufu29ojjgwebhf.get(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/colorpicker/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/colorpicker/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/colorpicker/plugin.js	(working copy)
@@ -1,126 +1,126 @@
 (function () {
 var colorpicker = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.util.Color');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Color');
 
-  var showPreview = function (win, hexColor) {
-    win.find('#preview')[0].getEl().style.background = hexColor;
-  };
-  var setColor = function (win, value) {
-    var color = global$1(value), rgb = color.toRgb();
-    win.fromJSON({
-      r: rgb.r,
-      g: rgb.g,
-      b: rgb.b,
-      hex: color.toHex().substr(1)
-    });
-    showPreview(win, color.toHex());
-  };
-  var open = function (editor, callback, value) {
-    var win = editor.windowManager.open({
-      title: 'Color',
-      items: {
-        type: 'container',
-        layout: 'flex',
-        direction: 'row',
-        align: 'stretch',
-        padding: 5,
-        spacing: 10,
-        items: [
-          {
-            type: 'colorpicker',
-            value: value,
-            onchange: function () {
-              var rgb = this.rgb();
-              if (win) {
-                win.find('#r').value(rgb.r);
-                win.find('#g').value(rgb.g);
-                win.find('#b').value(rgb.b);
-                win.find('#hex').value(this.value().substr(1));
-                showPreview(win, this.value());
-              }
-            }
-          },
-          {
-            type: 'form',
-            padding: 0,
-            labelGap: 5,
-            defaults: {
-              type: 'textbox',
-              size: 7,
-              value: '0',
-              flex: 1,
-              spellcheck: false,
+    var showPreview = function (win, hexColor) {
+      win.find('#preview')[0].getEl().style.background = hexColor;
+    };
+    var setColor = function (win, value) {
+      var color = global$1(value), rgb = color.toRgb();
+      win.fromJSON({
+        r: rgb.r,
+        g: rgb.g,
+        b: rgb.b,
+        hex: color.toHex().substr(1)
+      });
+      showPreview(win, color.toHex());
+    };
+    var open = function (editor, callback, value) {
+      var win = editor.windowManager.open({
+        title: 'Color',
+        items: {
+          type: 'container',
+          layout: 'flex',
+          direction: 'row',
+          align: 'stretch',
+          padding: 5,
+          spacing: 10,
+          items: [
+            {
+              type: 'colorpicker',
+              value: value,
               onchange: function () {
-                var colorPickerCtrl = win.find('colorpicker')[0];
-                var name, value;
-                name = this.name();
-                value = this.value();
-                if (name === 'hex') {
-                  value = '#' + value;
-                  setColor(win, value);
-                  colorPickerCtrl.value(value);
-                  return;
+                var rgb = this.rgb();
+                if (win) {
+                  win.find('#r').value(rgb.r);
+                  win.find('#g').value(rgb.g);
+                  win.find('#b').value(rgb.b);
+                  win.find('#hex').value(this.value().substr(1));
+                  showPreview(win, this.value());
                 }
-                value = {
-                  r: win.find('#r').value(),
-                  g: win.find('#g').value(),
-                  b: win.find('#b').value()
-                };
-                colorPickerCtrl.value(value);
-                setColor(win, value);
               }
             },
-            items: [
-              {
-                name: 'r',
-                label: 'R',
-                autofocus: 1
+            {
+              type: 'form',
+              padding: 0,
+              labelGap: 5,
+              defaults: {
+                type: 'textbox',
+                size: 7,
+                value: '0',
+                flex: 1,
+                spellcheck: false,
+                onchange: function () {
+                  var colorPickerCtrl = win.find('colorpicker')[0];
+                  var name, value;
+                  name = this.name();
+                  value = this.value();
+                  if (name === 'hex') {
+                    value = '#' + value;
+                    setColor(win, value);
+                    colorPickerCtrl.value(value);
+                    return;
+                  }
+                  value = {
+                    r: win.find('#r').value(),
+                    g: win.find('#g').value(),
+                    b: win.find('#b').value()
+                  };
+                  colorPickerCtrl.value(value);
+                  setColor(win, value);
+                }
               },
-              {
-                name: 'g',
-                label: 'G'
-              },
-              {
-                name: 'b',
-                label: 'B'
-              },
-              {
-                name: 'hex',
-                label: '#',
-                value: '000000'
-              },
-              {
-                name: 'preview',
-                type: 'container',
-                border: 1
-              }
-            ]
-          }
-        ]
-      },
-      onSubmit: function () {
-        callback('#' + win.toJSON().hex);
+              items: [
+                {
+                  name: 'r',
+                  label: 'R',
+                  autofocus: 1
+                },
+                {
+                  name: 'g',
+                  label: 'G'
+                },
+                {
+                  name: 'b',
+                  label: 'B'
+                },
+                {
+                  name: 'hex',
+                  label: '#',
+                  value: '000000'
+                },
+                {
+                  name: 'preview',
+                  type: 'container',
+                  border: 1
+                }
+              ]
+            }
+          ]
+        },
+        onSubmit: function () {
+          callback('#' + win.toJSON().hex);
+        }
+      });
+      setColor(win, value);
+    };
+    var Dialog = { open: open };
+
+    global.add('colorpicker', function (editor) {
+      if (!editor.settings.color_picker_callback) {
+        editor.settings.color_picker_callback = function (callback, value) {
+          Dialog.open(editor, callback, value);
+        };
       }
     });
-    setColor(win, value);
-  };
-  var $_2gqaphanjjgwebmu = { open: open };
-
-  global.add('colorpicker', function (editor) {
-    if (!editor.settings.color_picker_callback) {
-      editor.settings.color_picker_callback = function (callback, value) {
-        $_2gqaphanjjgwebmu.open(editor, callback, value);
-      };
+    function Plugin () {
     }
-  });
-  function Plugin () {
-  }
 
-  return Plugin;
+    return Plugin;
 
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/compat3x/css/dialog.css
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/compat3x/css/dialog.css	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/compat3x/css/dialog.css	(working copy)
@@ -1,134 +1,64 @@
 /* Generic */
 body {
-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-font-size:13px;
-background:#fcfcfc;
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
 padding:0;
 margin:8px 8px 0 8px;
 }
 
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
 textarea {resize:none;outline:none;}
-
-a:link, a:hover {
-	color: #2B6FB6;
-}
-
-a:visited {
-	color: #3C2BB6;
-}
-
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
 .nowrap {white-space: nowrap}
 
 /* Forms */
-form {margin: 0;}
-fieldset {margin:0; padding:4px; border:1px solid #dfdfdf; font-family:Verdana, Arial; font-size:10px;}
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
 legend {color:#2B6FB6; font-weight:bold;}
 label.msg {display:none;}
 label.invalid {color:#EE0000; display:inline;}
 input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #dfdfdf;}
+input {background:#FFF; border:1px solid #CCC;}
 input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #dfdfdf;}
+input, select, textarea {border:1px solid #808080;}
 input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
 input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
 .input_noborder {border:0;}
 
 /* Buttons */
-#insert,
-#cancel,
-#apply,
-.mceActionPanel .button,
-input.mceButton,
-.updateButton {
-	display: inline-block;
-	text-decoration: none;
-	border: 1px solid #adadad;
-	margin: 0;
-	padding: 0 10px 1px;
-	font-size: 13px;
-	height: 24px;
-	line-height: 22px;
-	color: #333;
-	cursor: pointer;
-	-webkit-border-radius: 3px;
-	-webkit-appearance: none;
-	border-radius: 3px;
-	white-space: nowrap;
-	-webkit-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	box-sizing: border-box;
-	background: #fafafa;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#e9e9e9));
-	background-image: -webkit-linear-gradient(top, #fafafa, #e9e9e9);
-	background-image: -moz-linear-gradient(top, #fafafa, #e9e9e9);
-	background-image: -o-linear-gradient(top, #fafafa, #e9e9e9);
-	background-image: linear-gradient(to bottom, #fafafa, #e9e9e9);
-
-	text-shadow: 0 1px 0 #fff;
-	-webkit-box-shadow: inset 0 1px 0 #fff;
-	-moz-box-shadow: inset 0 1px 0 #fff;
-	box-shadow: inset 0 1px 0 #fff;
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(../img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+float:left;
 }
 
-#insert {
-	background: #2ea2cc;
-	background: -webkit-gradient(linear, left top, left bottom, from(#2ea2cc), to(#1e8cbe));
-	background: -webkit-linear-gradient(top, #2ea2cc 0%,#1e8cbe 100%);
-	background: linear-gradient(top, #2ea2cc 0%,#1e8cbe 100%);
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2ea2cc', endColorstr='#1e8cbe',GradientType=0 );
-	border-color: #0074a2;
-	-webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
-	box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
-	color: #fff;
-	text-decoration: none;
-	text-shadow: 0 1px 0 rgba(0,86,132,0.7);
-}
+#insert {background:url(../img/buttons.png) 0 -52px}
+#cancel {background:url(../img/buttons.png) 0 0; float:right}
 
-#cancel:hover,
-input.mceButton:hover,
-.updateButton:hover,
-#cancel:focus,
-input.mceButton:focus,
-.updateButton:focus {
-	background: #f3f3f3;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));
-	background-image: -webkit-linear-gradient(top, #fff, #f3f3f3);
-	background-image: -moz-linear-gradient(top, #fff, #f3f3f3);
-	background-image: -ms-linear-gradient(top, #fff, #f3f3f3);
-	background-image: -o-linear-gradient(top, #fff, #f3f3f3);
-	background-image: linear-gradient(to bottom, #fff, #f3f3f3);
-	border-color: #999;
-	color: #222;
-}
-
-#insert:hover,
-#insert:focus {
-	background: #1e8cbe;
-	background: -webkit-gradient(linear, left top, left bottom, from(#1e8cbe), to(#0074a2));
-	background: -webkit-linear-gradient(top, #1e8cbe 0%,#0074a2 100%);
-	background: linear-gradient(top, #1e8cbe 0%,#0074a2 100%);
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e8cbe', endColorstr='#0074a2',GradientType=0 );
-	border-color: #0074a2;
-	-webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
-	box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
-	color: #fff;
-}
-
-.mceActionPanel #insert {
-	float: right;
-}
-
 /* Browse */
 a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; border:1px solid #FFF; margin-left:1px;}
+a.browse span {display:block; width:20px; height:18px; background:url(../img/icons.gif) -20px 0 no-repeat; border:1px solid #FFF; margin-left:1px;}
 .mceOldBoxModel a.browse span {width:22px; height:20px;}
 a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
 a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; margin-left:2px;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../img/icons.gif) -840px 0; margin-left:2px;}
 .mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
 a.pickcolor:hover span {background-color:#B2BBD0;}
-div.iframecontainer {background: #fff;}
+a.pickcolor:hover span.disabled {}
 
 /* Charmap */
 table.charmap {border:1px solid #AAA; text-align:center}
@@ -137,7 +67,6 @@
 #charmap a:hover {background:#CCC;color:#2B6FB6}
 #charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
 #charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-#charmap #charmapView {background-color:#fff;}
 
 /* Source */
 .wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
@@ -144,24 +73,15 @@
 .mceActionPanel {margin-top:5px;}
 
 /* Tabs classes */
-.tabs {width:100%; height:19px; line-height:normal; border-bottom: 1px solid #aaa;}
+.tabs {width:100%; height:18px; line-height:normal; background:url(../img/tabs.gif) repeat-x 0 -72px;}
 .tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; border: 1px solid #aaa; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {border-bottom: 1px solid #fff; margin-right:2px;}
-.tabs span {float:left; display:block; padding:0px 10px 0 0;}
+.tabs li {float:left; background:url(../img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(../img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(../img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(../img/tabs.gif) no-repeat right -54px;}
 .tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
 .tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
 
-.wp-core-ui #tabs {
-	padding-bottom: 5px;
-	background-color: transparent;
-}
-
-.wp-core-ui #tabs a {
-	padding: 6px 10px;
-	margin: 0 2px;
-}
-
 /* Panels */
 .panel_wrapper div.panel {display:none;}
 .panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
@@ -187,8 +107,7 @@
 #pluginscontainer {height:290px; overflow:auto;}
 #colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
 #colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
-#colorpicker #preview_wrapper {text-align:center; padding-top:4px; white-space: nowrap; float: right;}
-#colorpicker #insert, #colorpicker #cancel {width: 90px}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
 #colorpicker #light div {overflow:hidden;}
@@ -197,14 +116,3 @@
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
 #colorpicker #colornamecontainer {margin-top:5px;}
 #colorpicker #picker_panel fieldset {margin:auto;width:325px;}
-
-
-/* Localization */
-
-body[dir="rtl"],
-body[dir="rtl"] fieldset,
-body[dir="rtl"] input, body[dir="rtl"] select, body[dir="rtl"]  textarea,
-body[dir="rtl"]  #charmap #codeN,
-body[dir="rtl"] .tabs a {
-	font-family: Tahoma, sans-serif;
-}
Index: src/js/_enqueues/vendor/tinymce/plugins/directionality/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/directionality/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/directionality/plugin.js	(working copy)
@@ -1,66 +1,66 @@
 (function () {
 var directionality = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var setDir = function (editor, dir) {
-    var dom = editor.dom;
-    var curDir;
-    var blocks = editor.selection.getSelectedBlocks();
-    if (blocks.length) {
-      curDir = dom.getAttrib(blocks[0], 'dir');
-      global$1.each(blocks, function (block) {
-        if (!dom.getParent(block.parentNode, '*[dir="' + dir + '"]', dom.getRoot())) {
-          dom.setAttrib(block, 'dir', curDir !== dir ? dir : null);
-        }
+    var setDir = function (editor, dir) {
+      var dom = editor.dom;
+      var curDir;
+      var blocks = editor.selection.getSelectedBlocks();
+      if (blocks.length) {
+        curDir = dom.getAttrib(blocks[0], 'dir');
+        global$1.each(blocks, function (block) {
+          if (!dom.getParent(block.parentNode, '*[dir="' + dir + '"]', dom.getRoot())) {
+            dom.setAttrib(block, 'dir', curDir !== dir ? dir : null);
+          }
+        });
+        editor.nodeChanged();
+      }
+    };
+    var Direction = { setDir: setDir };
+
+    var register = function (editor) {
+      editor.addCommand('mceDirectionLTR', function () {
+        Direction.setDir(editor, 'ltr');
       });
-      editor.nodeChanged();
-    }
-  };
-  var $_fd54yfb4jjgwebo5 = { setDir: setDir };
+      editor.addCommand('mceDirectionRTL', function () {
+        Direction.setDir(editor, 'rtl');
+      });
+    };
+    var Commands = { register: register };
 
-  var register = function (editor) {
-    editor.addCommand('mceDirectionLTR', function () {
-      $_fd54yfb4jjgwebo5.setDir(editor, 'ltr');
-    });
-    editor.addCommand('mceDirectionRTL', function () {
-      $_fd54yfb4jjgwebo5.setDir(editor, 'rtl');
-    });
-  };
-  var $_cpb3fob3jjgwebo4 = { register: register };
+    var generateSelector = function (dir) {
+      var selector = [];
+      global$1.each('h1 h2 h3 h4 h5 h6 div p'.split(' '), function (name) {
+        selector.push(name + '[dir=' + dir + ']');
+      });
+      return selector.join(',');
+    };
+    var register$1 = function (editor) {
+      editor.addButton('ltr', {
+        title: 'Left to right',
+        cmd: 'mceDirectionLTR',
+        stateSelector: generateSelector('ltr')
+      });
+      editor.addButton('rtl', {
+        title: 'Right to left',
+        cmd: 'mceDirectionRTL',
+        stateSelector: generateSelector('rtl')
+      });
+    };
+    var Buttons = { register: register$1 };
 
-  var generateSelector = function (dir) {
-    var selector = [];
-    global$1.each('h1 h2 h3 h4 h5 h6 div p'.split(' '), function (name) {
-      selector.push(name + '[dir=' + dir + ']');
+    global.add('directionality', function (editor) {
+      Commands.register(editor);
+      Buttons.register(editor);
     });
-    return selector.join(',');
-  };
-  var register$1 = function (editor) {
-    editor.addButton('ltr', {
-      title: 'Left to right',
-      cmd: 'mceDirectionLTR',
-      stateSelector: generateSelector('ltr')
-    });
-    editor.addButton('rtl', {
-      title: 'Right to left',
-      cmd: 'mceDirectionRTL',
-      stateSelector: generateSelector('rtl')
-    });
-  };
-  var $_8ch9fzb6jjgwebo7 = { register: register$1 };
+    function Plugin () {
+    }
 
-  global.add('directionality', function (editor) {
-    $_cpb3fob3jjgwebo4.register(editor);
-    $_8ch9fzb6jjgwebo7.register(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/fullscreen/plugin.js	(working copy)
@@ -1,177 +1,177 @@
 (function () {
 var fullscreen = (function () {
-  'use strict';
+    'use strict';
 
-  var Cell = function (initial) {
-    var value = initial;
-    var get = function () {
-      return value;
+    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 set = function (v) {
-      value = v;
-    };
-    var clone = function () {
-      return Cell(get());
-    };
-    return {
-      get: get,
-      set: set,
-      clone: clone
-    };
-  };
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var get = function (fullscreenState) {
-    return {
-      isFullscreen: function () {
-        return fullscreenState.get() !== null;
-      }
+    var get = function (fullscreenState) {
+      return {
+        isFullscreen: function () {
+          return fullscreenState.get() !== null;
+        }
+      };
     };
-  };
-  var $_6qfcwucejjgwebu0 = { get: get };
+    var Api = { get: get };
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var fireFullscreenStateChanged = function (editor, state) {
-    editor.fire('FullscreenStateChanged', { state: state });
-  };
-  var $_en5ltwcijjgwebu6 = { fireFullscreenStateChanged: fireFullscreenStateChanged };
+    var fireFullscreenStateChanged = function (editor, state) {
+      editor.fire('FullscreenStateChanged', { state: state });
+    };
+    var Events = { fireFullscreenStateChanged: fireFullscreenStateChanged };
 
-  var DOM = global$1.DOM;
-  var getWindowSize = function () {
-    var w;
-    var h;
-    var win = window;
-    var doc = document;
-    var body = doc.body;
-    if (body.offsetWidth) {
-      w = body.offsetWidth;
-      h = body.offsetHeight;
-    }
-    if (win.innerWidth && win.innerHeight) {
-      w = win.innerWidth;
-      h = win.innerHeight;
-    }
-    return {
-      w: w,
-      h: h
+    var DOM = global$1.DOM;
+    var getWindowSize = function () {
+      var w;
+      var h;
+      var win = window;
+      var doc = document;
+      var body = doc.body;
+      if (body.offsetWidth) {
+        w = body.offsetWidth;
+        h = body.offsetHeight;
+      }
+      if (win.innerWidth && win.innerHeight) {
+        w = win.innerWidth;
+        h = win.innerHeight;
+      }
+      return {
+        w: w,
+        h: h
+      };
     };
-  };
-  var getScrollPos = function () {
-    var vp = DOM.getViewPort();
-    return {
-      x: vp.x,
-      y: vp.y
+    var getScrollPos = function () {
+      var vp = DOM.getViewPort();
+      return {
+        x: vp.x,
+        y: vp.y
+      };
     };
-  };
-  var setScrollPos = function (pos) {
-    window.scrollTo(pos.x, pos.y);
-  };
-  var toggleFullscreen = function (editor, fullscreenState) {
-    var body = document.body;
-    var documentElement = document.documentElement;
-    var editorContainerStyle;
-    var editorContainer, iframe, iframeStyle;
-    var fullscreenInfo = fullscreenState.get();
-    var resize = function () {
-      DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
+    var setScrollPos = function (pos) {
+      window.scrollTo(pos.x, pos.y);
     };
-    var removeResize = function () {
-      DOM.unbind(window, 'resize', resize);
-    };
-    editorContainer = editor.getContainer();
-    editorContainerStyle = editorContainer.style;
-    iframe = editor.getContentAreaContainer().firstChild;
-    iframeStyle = iframe.style;
-    if (!fullscreenInfo) {
-      var newFullScreenInfo = {
-        scrollPos: getScrollPos(),
-        containerWidth: editorContainerStyle.width,
-        containerHeight: editorContainerStyle.height,
-        iframeWidth: iframeStyle.width,
-        iframeHeight: iframeStyle.height,
-        resizeHandler: resize,
-        removeHandler: removeResize
+    var toggleFullscreen = function (editor, fullscreenState) {
+      var body = document.body;
+      var documentElement = document.documentElement;
+      var editorContainerStyle;
+      var editorContainer, iframe, iframeStyle;
+      var fullscreenInfo = fullscreenState.get();
+      var resize = function () {
+        DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
       };
-      iframeStyle.width = iframeStyle.height = '100%';
-      editorContainerStyle.width = editorContainerStyle.height = '';
-      DOM.addClass(body, 'mce-fullscreen');
-      DOM.addClass(documentElement, 'mce-fullscreen');
-      DOM.addClass(editorContainer, 'mce-fullscreen');
-      DOM.bind(window, 'resize', resize);
-      editor.on('remove', removeResize);
-      resize();
-      fullscreenState.set(newFullScreenInfo);
-      $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, true);
-    } else {
-      iframeStyle.width = fullscreenInfo.iframeWidth;
-      iframeStyle.height = fullscreenInfo.iframeHeight;
-      if (fullscreenInfo.containerWidth) {
-        editorContainerStyle.width = fullscreenInfo.containerWidth;
+      var removeResize = function () {
+        DOM.unbind(window, 'resize', resize);
+      };
+      editorContainer = editor.getContainer();
+      editorContainerStyle = editorContainer.style;
+      iframe = editor.getContentAreaContainer().firstChild;
+      iframeStyle = iframe.style;
+      if (!fullscreenInfo) {
+        var newFullScreenInfo = {
+          scrollPos: getScrollPos(),
+          containerWidth: editorContainerStyle.width,
+          containerHeight: editorContainerStyle.height,
+          iframeWidth: iframeStyle.width,
+          iframeHeight: iframeStyle.height,
+          resizeHandler: resize,
+          removeHandler: removeResize
+        };
+        iframeStyle.width = iframeStyle.height = '100%';
+        editorContainerStyle.width = editorContainerStyle.height = '';
+        DOM.addClass(body, 'mce-fullscreen');
+        DOM.addClass(documentElement, 'mce-fullscreen');
+        DOM.addClass(editorContainer, 'mce-fullscreen');
+        DOM.bind(window, 'resize', resize);
+        editor.on('remove', removeResize);
+        resize();
+        fullscreenState.set(newFullScreenInfo);
+        Events.fireFullscreenStateChanged(editor, true);
+      } else {
+        iframeStyle.width = fullscreenInfo.iframeWidth;
+        iframeStyle.height = fullscreenInfo.iframeHeight;
+        if (fullscreenInfo.containerWidth) {
+          editorContainerStyle.width = fullscreenInfo.containerWidth;
+        }
+        if (fullscreenInfo.containerHeight) {
+          editorContainerStyle.height = fullscreenInfo.containerHeight;
+        }
+        DOM.removeClass(body, 'mce-fullscreen');
+        DOM.removeClass(documentElement, 'mce-fullscreen');
+        DOM.removeClass(editorContainer, 'mce-fullscreen');
+        setScrollPos(fullscreenInfo.scrollPos);
+        DOM.unbind(window, 'resize', fullscreenInfo.resizeHandler);
+        editor.off('remove', fullscreenInfo.removeHandler);
+        fullscreenState.set(null);
+        Events.fireFullscreenStateChanged(editor, false);
       }
-      if (fullscreenInfo.containerHeight) {
-        editorContainerStyle.height = fullscreenInfo.containerHeight;
-      }
-      DOM.removeClass(body, 'mce-fullscreen');
-      DOM.removeClass(documentElement, 'mce-fullscreen');
-      DOM.removeClass(editorContainer, 'mce-fullscreen');
-      setScrollPos(fullscreenInfo.scrollPos);
-      DOM.unbind(window, 'resize', fullscreenInfo.resizeHandler);
-      editor.off('remove', fullscreenInfo.removeHandler);
-      fullscreenState.set(null);
-      $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, false);
-    }
-  };
-  var $_dvg07kcgjjgwebu3 = { toggleFullscreen: toggleFullscreen };
+    };
+    var Actions = { toggleFullscreen: toggleFullscreen };
 
-  var register = function (editor, fullscreenState) {
-    editor.addCommand('mceFullScreen', function () {
-      $_dvg07kcgjjgwebu3.toggleFullscreen(editor, fullscreenState);
-    });
-  };
-  var $_bebdcrcfjjgwebu1 = { register: register };
+    var register = function (editor, fullscreenState) {
+      editor.addCommand('mceFullScreen', function () {
+        Actions.toggleFullscreen(editor, fullscreenState);
+      });
+    };
+    var Commands = { register: register };
 
-  var postRender = function (editor) {
-    return function (e) {
-      var ctrl = e.control;
-      editor.on('FullscreenStateChanged', function (e) {
-        ctrl.active(e.state);
+    var postRender = function (editor) {
+      return function (e) {
+        var ctrl = e.control;
+        editor.on('FullscreenStateChanged', function (e) {
+          ctrl.active(e.state);
+        });
+      };
+    };
+    var register$1 = function (editor) {
+      editor.addMenuItem('fullscreen', {
+        text: 'Fullscreen',
+        shortcut: 'Ctrl+Shift+F',
+        selectable: true,
+        cmd: 'mceFullScreen',
+        onPostRender: postRender(editor),
+        context: 'view'
       });
+      editor.addButton('fullscreen', {
+        active: false,
+        tooltip: 'Fullscreen',
+        cmd: 'mceFullScreen',
+        onPostRender: postRender(editor)
+      });
     };
-  };
-  var register$1 = function (editor) {
-    editor.addMenuItem('fullscreen', {
-      text: 'Fullscreen',
-      shortcut: 'Ctrl+Shift+F',
-      selectable: true,
-      cmd: 'mceFullScreen',
-      onPostRender: postRender(editor),
-      context: 'view'
+    var Buttons = { register: register$1 };
+
+    global.add('fullscreen', function (editor) {
+      var fullscreenState = Cell(null);
+      if (editor.settings.inline) {
+        return Api.get(fullscreenState);
+      }
+      Commands.register(editor, fullscreenState);
+      Buttons.register(editor);
+      editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
+      return Api.get(fullscreenState);
     });
-    editor.addButton('fullscreen', {
-      active: false,
-      tooltip: 'Fullscreen',
-      cmd: 'mceFullScreen',
-      onPostRender: postRender(editor)
-    });
-  };
-  var $_tne4sckjjgwebuo = { register: register$1 };
-
-  global.add('fullscreen', function (editor) {
-    var fullscreenState = Cell(null);
-    if (editor.settings.inline) {
-      return $_6qfcwucejjgwebu0.get(fullscreenState);
+    function Plugin () {
     }
-    $_bebdcrcfjjgwebu1.register(editor, fullscreenState);
-    $_tne4sckjjgwebuo.register(editor);
-    editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
-    return $_6qfcwucejjgwebu0.get(fullscreenState);
-  });
-  function Plugin () {
-  }
 
-  return Plugin;
+    return Plugin;
 
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/hr/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/hr/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/hr/plugin.js	(working copy)
@@ -1,39 +1,39 @@
 (function () {
 var hr = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var register = function (editor) {
-    editor.addCommand('InsertHorizontalRule', function () {
-      editor.execCommand('mceInsertContent', false, '<hr />');
-    });
-  };
-  var $_cqh592cnjjgwebvk = { register: register };
+    var register = function (editor) {
+      editor.addCommand('InsertHorizontalRule', function () {
+        editor.execCommand('mceInsertContent', false, '<hr />');
+      });
+    };
+    var Commands = { register: register };
 
-  var register$1 = function (editor) {
-    editor.addButton('hr', {
-      icon: 'hr',
-      tooltip: 'Horizontal line',
-      cmd: 'InsertHorizontalRule'
+    var register$1 = function (editor) {
+      editor.addButton('hr', {
+        icon: 'hr',
+        tooltip: 'Horizontal line',
+        cmd: 'InsertHorizontalRule'
+      });
+      editor.addMenuItem('hr', {
+        icon: 'hr',
+        text: 'Horizontal line',
+        cmd: 'InsertHorizontalRule',
+        context: 'insert'
+      });
+    };
+    var Buttons = { register: register$1 };
+
+    global.add('hr', function (editor) {
+      Commands.register(editor);
+      Buttons.register(editor);
     });
-    editor.addMenuItem('hr', {
-      icon: 'hr',
-      text: 'Horizontal line',
-      cmd: 'InsertHorizontalRule',
-      context: 'insert'
-    });
-  };
-  var $_13g834cojjgwebvl = { register: register$1 };
+    function Plugin () {
+    }
 
-  global.add('hr', function (editor) {
-    $_cqh592cnjjgwebvk.register(editor);
-    $_13g834cojjgwebvl.register(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/image/plugin.js	(working copy)
@@ -1,1211 +1,1204 @@
 (function () {
 var image = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var hasDimensions = function (editor) {
-    return editor.settings.image_dimensions === false ? false : true;
-  };
-  var hasAdvTab = function (editor) {
-    return editor.settings.image_advtab === true ? true : false;
-  };
-  var getPrependUrl = function (editor) {
-    return editor.getParam('image_prepend_url', '');
-  };
-  var getClassList = function (editor) {
-    return editor.getParam('image_class_list');
-  };
-  var hasDescription = function (editor) {
-    return editor.settings.image_description === false ? false : true;
-  };
-  var hasImageTitle = function (editor) {
-    return editor.settings.image_title === true ? true : false;
-  };
-  var hasImageCaption = function (editor) {
-    return editor.settings.image_caption === true ? true : false;
-  };
-  var getImageList = function (editor) {
-    return editor.getParam('image_list', false);
-  };
-  var hasUploadUrl = function (editor) {
-    return editor.getParam('images_upload_url', false);
-  };
-  var hasUploadHandler = function (editor) {
-    return editor.getParam('images_upload_handler', false);
-  };
-  var getUploadUrl = function (editor) {
-    return editor.getParam('images_upload_url');
-  };
-  var getUploadHandler = function (editor) {
-    return editor.getParam('images_upload_handler');
-  };
-  var getUploadBasePath = function (editor) {
-    return editor.getParam('images_upload_base_path');
-  };
-  var getUploadCredentials = function (editor) {
-    return editor.getParam('images_upload_credentials');
-  };
-  var $_1dn8wtctjjgwebvz = {
-    hasDimensions: hasDimensions,
-    hasAdvTab: hasAdvTab,
-    getPrependUrl: getPrependUrl,
-    getClassList: getClassList,
-    hasDescription: hasDescription,
-    hasImageTitle: hasImageTitle,
-    hasImageCaption: hasImageCaption,
-    getImageList: getImageList,
-    hasUploadUrl: hasUploadUrl,
-    hasUploadHandler: hasUploadHandler,
-    getUploadUrl: getUploadUrl,
-    getUploadHandler: getUploadHandler,
-    getUploadBasePath: getUploadBasePath,
-    getUploadCredentials: getUploadCredentials
-  };
+    var hasDimensions = function (editor) {
+      return editor.settings.image_dimensions === false ? false : true;
+    };
+    var hasAdvTab = function (editor) {
+      return editor.settings.image_advtab === true ? true : false;
+    };
+    var getPrependUrl = function (editor) {
+      return editor.getParam('image_prepend_url', '');
+    };
+    var getClassList = function (editor) {
+      return editor.getParam('image_class_list');
+    };
+    var hasDescription = function (editor) {
+      return editor.settings.image_description === false ? false : true;
+    };
+    var hasImageTitle = function (editor) {
+      return editor.settings.image_title === true ? true : false;
+    };
+    var hasImageCaption = function (editor) {
+      return editor.settings.image_caption === true ? true : false;
+    };
+    var getImageList = function (editor) {
+      return editor.getParam('image_list', false);
+    };
+    var hasUploadUrl = function (editor) {
+      return editor.getParam('images_upload_url', false);
+    };
+    var hasUploadHandler = function (editor) {
+      return editor.getParam('images_upload_handler', false);
+    };
+    var getUploadUrl = function (editor) {
+      return editor.getParam('images_upload_url');
+    };
+    var getUploadHandler = function (editor) {
+      return editor.getParam('images_upload_handler');
+    };
+    var getUploadBasePath = function (editor) {
+      return editor.getParam('images_upload_base_path');
+    };
+    var getUploadCredentials = function (editor) {
+      return editor.getParam('images_upload_credentials');
+    };
+    var Settings = {
+      hasDimensions: hasDimensions,
+      hasAdvTab: hasAdvTab,
+      getPrependUrl: getPrependUrl,
+      getClassList: getClassList,
+      hasDescription: hasDescription,
+      hasImageTitle: hasImageTitle,
+      hasImageCaption: hasImageCaption,
+      getImageList: getImageList,
+      hasUploadUrl: hasUploadUrl,
+      hasUploadHandler: hasUploadHandler,
+      getUploadUrl: getUploadUrl,
+      getUploadHandler: getUploadHandler,
+      getUploadBasePath: getUploadBasePath,
+      getUploadCredentials: getUploadCredentials
+    };
 
-  var Global = typeof window !== 'undefined' ? window : Function('return this;')();
+    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 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 unsafe = function (name, scope) {
-    return 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 $_oab1bcwjjgwebwl = { getOrDie: getOrDie };
+    var unsafe = function (name, scope) {
+      return 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 Global$1 = { getOrDie: getOrDie };
 
-  function FileReader () {
-    var f = $_oab1bcwjjgwebwl.getOrDie('FileReader');
-    return new f();
-  }
+    function FileReader () {
+      var f = Global$1.getOrDie('FileReader');
+      return new f();
+    }
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR');
 
-  var parseIntAndGetMax = function (val1, val2) {
-    return Math.max(parseInt(val1, 10), parseInt(val2, 10));
-  };
-  var getImageSize = function (url, callback) {
-    var img = document.createElement('img');
-    function done(width, height) {
-      if (img.parentNode) {
-        img.parentNode.removeChild(img);
+    var parseIntAndGetMax = function (val1, val2) {
+      return Math.max(parseInt(val1, 10), parseInt(val2, 10));
+    };
+    var getImageSize = function (url, callback) {
+      var img = document.createElement('img');
+      function done(width, height) {
+        if (img.parentNode) {
+          img.parentNode.removeChild(img);
+        }
+        callback({
+          width: width,
+          height: height
+        });
       }
-      callback({
-        width: width,
-        height: height
-      });
-    }
-    img.onload = function () {
-      var width = parseIntAndGetMax(img.width, img.clientWidth);
-      var height = parseIntAndGetMax(img.height, img.clientHeight);
-      done(width, height);
+      img.onload = function () {
+        var width = parseIntAndGetMax(img.width, img.clientWidth);
+        var height = parseIntAndGetMax(img.height, img.clientHeight);
+        done(width, height);
+      };
+      img.onerror = function () {
+        done(0, 0);
+      };
+      var style = img.style;
+      style.visibility = 'hidden';
+      style.position = 'fixed';
+      style.bottom = style.left = '0px';
+      style.width = style.height = 'auto';
+      document.body.appendChild(img);
+      img.src = url;
     };
-    img.onerror = function () {
-      done(0, 0);
+    var buildListItems = function (inputList, itemCallback, startItems) {
+      function appendItems(values, output) {
+        output = output || [];
+        global$2.each(values, function (item) {
+          var menuItem = { text: item.text || item.title };
+          if (item.menu) {
+            menuItem.menu = appendItems(item.menu);
+          } else {
+            menuItem.value = item.value;
+            itemCallback(menuItem);
+          }
+          output.push(menuItem);
+        });
+        return output;
+      }
+      return appendItems(inputList, startItems || []);
     };
-    var style = img.style;
-    style.visibility = 'hidden';
-    style.position = 'fixed';
-    style.bottom = style.left = '0px';
-    style.width = style.height = 'auto';
-    document.body.appendChild(img);
-    img.src = url;
-  };
-  var buildListItems = function (inputList, itemCallback, startItems) {
-    function appendItems(values, output) {
-      output = output || [];
-      global$2.each(values, function (item) {
-        var menuItem = { text: item.text || item.title };
-        if (item.menu) {
-          menuItem.menu = appendItems(item.menu);
-        } else {
-          menuItem.value = item.value;
-          itemCallback(menuItem);
-        }
-        output.push(menuItem);
-      });
-      return output;
-    }
-    return appendItems(inputList, startItems || []);
-  };
-  var removePixelSuffix = function (value) {
-    if (value) {
-      value = value.replace(/px$/, '');
-    }
-    return value;
-  };
-  var addPixelSuffix = function (value) {
-    if (value.length > 0 && /^[0-9]+$/.test(value)) {
-      value += 'px';
-    }
-    return value;
-  };
-  var mergeMargins = function (css) {
-    if (css.margin) {
-      var splitMargin = css.margin.split(' ');
-      switch (splitMargin.length) {
-      case 1:
-        css['margin-top'] = css['margin-top'] || splitMargin[0];
-        css['margin-right'] = css['margin-right'] || splitMargin[0];
-        css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
-        css['margin-left'] = css['margin-left'] || splitMargin[0];
-        break;
-      case 2:
-        css['margin-top'] = css['margin-top'] || splitMargin[0];
-        css['margin-right'] = css['margin-right'] || splitMargin[1];
-        css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
-        css['margin-left'] = css['margin-left'] || splitMargin[1];
-        break;
-      case 3:
-        css['margin-top'] = css['margin-top'] || splitMargin[0];
-        css['margin-right'] = css['margin-right'] || splitMargin[1];
-        css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
-        css['margin-left'] = css['margin-left'] || splitMargin[1];
-        break;
-      case 4:
-        css['margin-top'] = css['margin-top'] || splitMargin[0];
-        css['margin-right'] = css['margin-right'] || splitMargin[1];
-        css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
-        css['margin-left'] = css['margin-left'] || splitMargin[3];
+    var removePixelSuffix = function (value) {
+      if (value) {
+        value = value.replace(/px$/, '');
       }
-      delete css.margin;
-    }
-    return css;
-  };
-  var createImageList = function (editor, callback) {
-    var imageList = $_1dn8wtctjjgwebvz.getImageList(editor);
-    if (typeof imageList === 'string') {
-      global$3.send({
-        url: imageList,
-        success: function (text) {
-          callback(JSON.parse(text));
+      return value;
+    };
+    var addPixelSuffix = function (value) {
+      if (value.length > 0 && /^[0-9]+$/.test(value)) {
+        value += 'px';
+      }
+      return value;
+    };
+    var mergeMargins = function (css) {
+      if (css.margin) {
+        var splitMargin = css.margin.split(' ');
+        switch (splitMargin.length) {
+        case 1:
+          css['margin-top'] = css['margin-top'] || splitMargin[0];
+          css['margin-right'] = css['margin-right'] || splitMargin[0];
+          css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
+          css['margin-left'] = css['margin-left'] || splitMargin[0];
+          break;
+        case 2:
+          css['margin-top'] = css['margin-top'] || splitMargin[0];
+          css['margin-right'] = css['margin-right'] || splitMargin[1];
+          css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
+          css['margin-left'] = css['margin-left'] || splitMargin[1];
+          break;
+        case 3:
+          css['margin-top'] = css['margin-top'] || splitMargin[0];
+          css['margin-right'] = css['margin-right'] || splitMargin[1];
+          css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
+          css['margin-left'] = css['margin-left'] || splitMargin[1];
+          break;
+        case 4:
+          css['margin-top'] = css['margin-top'] || splitMargin[0];
+          css['margin-right'] = css['margin-right'] || splitMargin[1];
+          css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
+          css['margin-left'] = css['margin-left'] || splitMargin[3];
         }
-      });
-    } else if (typeof imageList === 'function') {
-      imageList(callback);
-    } else {
-      callback(imageList);
-    }
-  };
-  var waitLoadImage = function (editor, data, imgElm) {
-    function selectImage() {
-      imgElm.onload = imgElm.onerror = null;
-      if (editor.selection) {
-        editor.selection.select(imgElm);
-        editor.nodeChanged();
+        delete css.margin;
       }
-    }
-    imgElm.onload = function () {
-      if (!data.width && !data.height && $_1dn8wtctjjgwebvz.hasDimensions(editor)) {
-        editor.dom.setAttribs(imgElm, {
-          width: imgElm.clientWidth,
-          height: imgElm.clientHeight
+      return css;
+    };
+    var createImageList = function (editor, callback) {
+      var imageList = Settings.getImageList(editor);
+      if (typeof imageList === 'string') {
+        global$3.send({
+          url: imageList,
+          success: function (text) {
+            callback(JSON.parse(text));
+          }
         });
+      } else if (typeof imageList === 'function') {
+        imageList(callback);
+      } else {
+        callback(imageList);
       }
-      selectImage();
     };
-    imgElm.onerror = selectImage;
-  };
-  var blobToDataUri = function (blob) {
-    return new global$1(function (resolve, reject) {
-      var reader = new FileReader();
-      reader.onload = function () {
-        resolve(reader.result);
+    var waitLoadImage = function (editor, data, imgElm) {
+      function selectImage() {
+        imgElm.onload = imgElm.onerror = null;
+        if (editor.selection) {
+          editor.selection.select(imgElm);
+          editor.nodeChanged();
+        }
+      }
+      imgElm.onload = function () {
+        if (!data.width && !data.height && Settings.hasDimensions(editor)) {
+          editor.dom.setAttribs(imgElm, {
+            width: imgElm.clientWidth,
+            height: imgElm.clientHeight
+          });
+        }
+        selectImage();
       };
-      reader.onerror = function () {
-        reject(FileReader.error.message);
+      imgElm.onerror = selectImage;
+    };
+    var blobToDataUri = function (blob) {
+      return new global$1(function (resolve, reject) {
+        var reader = FileReader();
+        reader.onload = function () {
+          resolve(reader.result);
+        };
+        reader.onerror = function () {
+          reject(reader.error.message);
+        };
+        reader.readAsDataURL(blob);
+      });
+    };
+    var Utils = {
+      getImageSize: getImageSize,
+      buildListItems: buildListItems,
+      removePixelSuffix: removePixelSuffix,
+      addPixelSuffix: addPixelSuffix,
+      mergeMargins: mergeMargins,
+      createImageList: createImageList,
+      waitLoadImage: waitLoadImage,
+      blobToDataUri: blobToDataUri
+    };
+
+    var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+
+    var hasOwnProperty = Object.prototype.hasOwnProperty;
+    var shallow = function (old, nu) {
+      return 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 (hasOwnProperty.call(curObject, key)) {
+              ret[key] = merger(ret[key], curObject[key]);
+            }
+        }
+        return ret;
       };
-      reader.readAsDataURL(blob);
-    });
-  };
-  var $_1e8k4ncujjgwebw2 = {
-    getImageSize: getImageSize,
-    buildListItems: buildListItems,
-    removePixelSuffix: removePixelSuffix,
-    addPixelSuffix: addPixelSuffix,
-    mergeMargins: mergeMargins,
-    createImageList: createImageList,
-    waitLoadImage: waitLoadImage,
-    blobToDataUri: blobToDataUri
-  };
+    };
+    var merge = baseMerge(shallow);
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
-
-  var hasOwnProperty = Object.prototype.hasOwnProperty;
-  var shallow = function (old, nu) {
-    return 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 (hasOwnProperty.call(curObject, key)) {
-            ret[key] = merger(ret[key], curObject[key]);
-          }
+    var DOM = global$4.DOM;
+    var getHspace = function (image) {
+      if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {
+        return Utils.removePixelSuffix(image.style.marginLeft);
+      } else {
+        return '';
       }
-      return ret;
     };
-  };
-
-  var merge = baseMerge(shallow);
-
-  var DOM = global$4.DOM;
-  var getHspace = function (image) {
-    if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {
-      return $_1e8k4ncujjgwebw2.removePixelSuffix(image.style.marginLeft);
-    } else {
-      return '';
-    }
-  };
-  var getVspace = function (image) {
-    if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {
-      return $_1e8k4ncujjgwebw2.removePixelSuffix(image.style.marginTop);
-    } else {
-      return '';
-    }
-  };
-  var getBorder = function (image) {
-    if (image.style.borderWidth) {
-      return $_1e8k4ncujjgwebw2.removePixelSuffix(image.style.borderWidth);
-    } else {
-      return '';
-    }
-  };
-  var getAttrib = function (image, name$$1) {
-    if (image.hasAttribute(name$$1)) {
-      return image.getAttribute(name$$1);
-    } else {
-      return '';
-    }
-  };
-  var getStyle = function (image, name$$1) {
-    return image.style[name$$1] ? image.style[name$$1] : '';
-  };
-  var hasCaption = function (image) {
-    return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';
-  };
-  var setAttrib = function (image, name$$1, value) {
-    image.setAttribute(name$$1, value);
-  };
-  var wrapInFigure = function (image) {
-    var figureElm = DOM.create('figure', { class: 'image' });
-    DOM.insertAfter(figureElm, image);
-    figureElm.appendChild(image);
-    figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));
-    figureElm.contentEditable = 'false';
-  };
-  var removeFigure = function (image) {
-    var figureElm = image.parentNode;
-    DOM.insertAfter(image, figureElm);
-    DOM.remove(figureElm);
-  };
-  var toggleCaption = function (image) {
-    if (hasCaption(image)) {
-      removeFigure(image);
-    } else {
-      wrapInFigure(image);
-    }
-  };
-  var normalizeStyle = function (image, normalizeCss) {
-    var attrValue = image.getAttribute('style');
-    var value = normalizeCss(attrValue !== null ? attrValue : '');
-    if (value.length > 0) {
-      image.setAttribute('style', value);
-      image.setAttribute('data-mce-style', value);
-    } else {
-      image.removeAttribute('style');
-    }
-  };
-  var setSize = function (name$$1, normalizeCss) {
-    return function (image, name$$1, value) {
+    var getVspace = function (image) {
+      if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {
+        return Utils.removePixelSuffix(image.style.marginTop);
+      } else {
+        return '';
+      }
+    };
+    var getBorder = function (image) {
+      if (image.style.borderWidth) {
+        return Utils.removePixelSuffix(image.style.borderWidth);
+      } else {
+        return '';
+      }
+    };
+    var getAttrib = function (image, name$$1) {
+      if (image.hasAttribute(name$$1)) {
+        return image.getAttribute(name$$1);
+      } else {
+        return '';
+      }
+    };
+    var getStyle = function (image, name$$1) {
+      return image.style[name$$1] ? image.style[name$$1] : '';
+    };
+    var hasCaption = function (image) {
+      return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';
+    };
+    var setAttrib = function (image, name$$1, value) {
+      image.setAttribute(name$$1, value);
+    };
+    var wrapInFigure = function (image) {
+      var figureElm = DOM.create('figure', { class: 'image' });
+      DOM.insertAfter(figureElm, image);
+      figureElm.appendChild(image);
+      figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));
+      figureElm.contentEditable = 'false';
+    };
+    var removeFigure = function (image) {
+      var figureElm = image.parentNode;
+      DOM.insertAfter(image, figureElm);
+      DOM.remove(figureElm);
+    };
+    var toggleCaption = function (image) {
+      if (hasCaption(image)) {
+        removeFigure(image);
+      } else {
+        wrapInFigure(image);
+      }
+    };
+    var normalizeStyle = function (image, normalizeCss) {
+      var attrValue = image.getAttribute('style');
+      var value = normalizeCss(attrValue !== null ? attrValue : '');
+      if (value.length > 0) {
+        image.setAttribute('style', value);
+        image.setAttribute('data-mce-style', value);
+      } else {
+        image.removeAttribute('style');
+      }
+    };
+    var setSize = function (name$$1, normalizeCss) {
+      return function (image, name$$1, value) {
+        if (image.style[name$$1]) {
+          image.style[name$$1] = Utils.addPixelSuffix(value);
+          normalizeStyle(image, normalizeCss);
+        } else {
+          setAttrib(image, name$$1, value);
+        }
+      };
+    };
+    var getSize = function (image, name$$1) {
       if (image.style[name$$1]) {
-        image.style[name$$1] = $_1e8k4ncujjgwebw2.addPixelSuffix(value);
-        normalizeStyle(image, normalizeCss);
+        return Utils.removePixelSuffix(image.style[name$$1]);
       } else {
-        setAttrib(image, name$$1, value);
+        return getAttrib(image, name$$1);
       }
     };
-  };
-  var getSize = function (image, name$$1) {
-    if (image.style[name$$1]) {
-      return $_1e8k4ncujjgwebw2.removePixelSuffix(image.style[name$$1]);
-    } else {
-      return getAttrib(image, name$$1);
-    }
-  };
-  var setHspace = function (image, value) {
-    var pxValue = $_1e8k4ncujjgwebw2.addPixelSuffix(value);
-    image.style.marginLeft = pxValue;
-    image.style.marginRight = pxValue;
-  };
-  var setVspace = function (image, value) {
-    var pxValue = $_1e8k4ncujjgwebw2.addPixelSuffix(value);
-    image.style.marginTop = pxValue;
-    image.style.marginBottom = pxValue;
-  };
-  var setBorder = function (image, value) {
-    var pxValue = $_1e8k4ncujjgwebw2.addPixelSuffix(value);
-    image.style.borderWidth = pxValue;
-  };
-  var setBorderStyle = function (image, value) {
-    image.style.borderStyle = value;
-  };
-  var getBorderStyle = function (image) {
-    return getStyle(image, 'borderStyle');
-  };
-  var isFigure = function (elm) {
-    return elm.nodeName === 'FIGURE';
-  };
-  var defaultData = function () {
-    return {
-      src: '',
-      alt: '',
-      title: '',
-      width: '',
-      height: '',
-      class: '',
-      style: '',
-      caption: false,
-      hspace: '',
-      vspace: '',
-      border: '',
-      borderStyle: ''
+    var setHspace = function (image, value) {
+      var pxValue = Utils.addPixelSuffix(value);
+      image.style.marginLeft = pxValue;
+      image.style.marginRight = pxValue;
     };
-  };
-  var getStyleValue = function (normalizeCss, data) {
-    var image = document.createElement('img');
-    setAttrib(image, 'style', data.style);
-    if (getHspace(image) || data.hspace !== '') {
-      setHspace(image, data.hspace);
-    }
-    if (getVspace(image) || data.vspace !== '') {
-      setVspace(image, data.vspace);
-    }
-    if (getBorder(image) || data.border !== '') {
-      setBorder(image, data.border);
-    }
-    if (getBorderStyle(image) || data.borderStyle !== '') {
-      setBorderStyle(image, data.borderStyle);
-    }
-    return normalizeCss(image.getAttribute('style'));
-  };
-  var create = function (normalizeCss, data) {
-    var image = document.createElement('img');
-    write(normalizeCss, merge(data, { caption: false }), image);
-    setAttrib(image, 'alt', data.alt);
-    if (data.caption) {
-      var figure = DOM.create('figure', { class: 'image' });
-      figure.appendChild(image);
-      figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));
-      figure.contentEditable = 'false';
-      return figure;
-    } else {
-      return image;
-    }
-  };
-  var read = function (normalizeCss, image) {
-    return {
-      src: getAttrib(image, 'src'),
-      alt: getAttrib(image, 'alt'),
-      title: getAttrib(image, 'title'),
-      width: getSize(image, 'width'),
-      height: getSize(image, 'height'),
-      class: getAttrib(image, 'class'),
-      style: normalizeCss(getAttrib(image, 'style')),
-      caption: hasCaption(image),
-      hspace: getHspace(image),
-      vspace: getVspace(image),
-      border: getBorder(image),
-      borderStyle: getStyle(image, 'borderStyle')
+    var setVspace = function (image, value) {
+      var pxValue = Utils.addPixelSuffix(value);
+      image.style.marginTop = pxValue;
+      image.style.marginBottom = pxValue;
     };
-  };
-  var updateProp = function (image, oldData, newData, name$$1, set) {
-    if (newData[name$$1] !== oldData[name$$1]) {
-      set(image, name$$1, newData[name$$1]);
-    }
-  };
-  var normalized = function (set, normalizeCss) {
-    return function (image, name$$1, value) {
-      set(image, value);
-      normalizeStyle(image, normalizeCss);
+    var setBorder = function (image, value) {
+      var pxValue = Utils.addPixelSuffix(value);
+      image.style.borderWidth = pxValue;
     };
-  };
-  var write = function (normalizeCss, newData, image) {
-    var oldData = read(normalizeCss, image);
-    updateProp(image, oldData, newData, 'caption', function (image, _name, _value) {
-      return toggleCaption(image);
-    });
-    updateProp(image, oldData, newData, 'src', setAttrib);
-    updateProp(image, oldData, newData, 'alt', setAttrib);
-    updateProp(image, oldData, newData, 'title', setAttrib);
-    updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));
-    updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));
-    updateProp(image, oldData, newData, 'class', setAttrib);
-    updateProp(image, oldData, newData, 'style', normalized(function (image, value) {
-      return setAttrib(image, 'style', value);
-    }, normalizeCss));
-    updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));
-    updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));
-    updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));
-    updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));
-  };
-
-  var normalizeCss = function (editor, cssText) {
-    var css = editor.dom.styles.parse(cssText);
-    var mergedCss = $_1e8k4ncujjgwebw2.mergeMargins(css);
-    var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));
-    return editor.dom.styles.serialize(compressed);
-  };
-  var getSelectedImage = function (editor) {
-    var imgElm = editor.selection.getNode();
-    var figureElm = editor.dom.getParent(imgElm, 'figure.image');
-    if (figureElm) {
-      return editor.dom.select('img', figureElm)[0];
-    }
-    if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) {
-      return null;
-    }
-    return imgElm;
-  };
-  var splitTextBlock = function (editor, figure) {
-    var dom = editor.dom;
-    var textBlock = dom.getParent(figure.parentNode, function (node) {
-      return editor.schema.getTextBlockElements()[node.nodeName];
-    });
-    if (textBlock) {
-      return dom.split(textBlock, figure);
-    } else {
-      return figure;
-    }
-  };
-  var readImageDataFromSelection = function (editor) {
-    var image = getSelectedImage(editor);
-    return image ? read(function (css) {
-      return normalizeCss(editor, css);
-    }, image) : defaultData();
-  };
-  var insertImageAtCaret = function (editor, data) {
-    var elm = create(function (css) {
-      return normalizeCss(editor, css);
-    }, data);
-    editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');
-    editor.focus();
-    editor.selection.setContent(elm.outerHTML);
-    var insertedElm = editor.dom.select('*[data-mce-id="__mcenew"]')[0];
-    editor.dom.setAttrib(insertedElm, 'data-mce-id', null);
-    if (isFigure(insertedElm)) {
-      var figure = splitTextBlock(editor, insertedElm);
-      editor.selection.select(figure);
-    } else {
-      editor.selection.select(insertedElm);
-    }
-  };
-  var syncSrcAttr = function (editor, image) {
-    editor.dom.setAttrib(image, 'src', image.getAttribute('src'));
-  };
-  var deleteImage = function (editor, image) {
-    if (image) {
-      var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;
-      editor.dom.remove(elm);
-      editor.focus();
-      editor.nodeChanged();
-      if (editor.dom.isEmpty(editor.getBody())) {
-        editor.setContent('');
-        editor.selection.setCursorLocation();
+    var setBorderStyle = function (image, value) {
+      image.style.borderStyle = value;
+    };
+    var getBorderStyle = function (image) {
+      return getStyle(image, 'borderStyle');
+    };
+    var isFigure = function (elm) {
+      return elm.nodeName === 'FIGURE';
+    };
+    var defaultData = function () {
+      return {
+        src: '',
+        alt: '',
+        title: '',
+        width: '',
+        height: '',
+        class: '',
+        style: '',
+        caption: false,
+        hspace: '',
+        vspace: '',
+        border: '',
+        borderStyle: ''
+      };
+    };
+    var getStyleValue = function (normalizeCss, data) {
+      var image = document.createElement('img');
+      setAttrib(image, 'style', data.style);
+      if (getHspace(image) || data.hspace !== '') {
+        setHspace(image, data.hspace);
       }
-    }
-  };
-  var writeImageDataToSelection = function (editor, data) {
-    var image = getSelectedImage(editor);
-    write(function (css) {
-      return normalizeCss(editor, css);
-    }, data, image);
-    syncSrcAttr(editor, image);
-    if (isFigure(image.parentNode)) {
-      var figure = image.parentNode;
-      splitTextBlock(editor, figure);
-      editor.selection.select(image.parentNode);
-    } else {
-      editor.selection.select(image);
-      $_1e8k4ncujjgwebw2.waitLoadImage(editor, data, image);
-    }
-  };
-  var insertOrUpdateImage = function (editor, data) {
-    var image = getSelectedImage(editor);
-    if (image) {
-      if (data.src) {
-        writeImageDataToSelection(editor, data);
+      if (getVspace(image) || data.vspace !== '') {
+        setVspace(image, data.vspace);
+      }
+      if (getBorder(image) || data.border !== '') {
+        setBorder(image, data.border);
+      }
+      if (getBorderStyle(image) || data.borderStyle !== '') {
+        setBorderStyle(image, data.borderStyle);
+      }
+      return normalizeCss(image.getAttribute('style'));
+    };
+    var create = function (normalizeCss, data) {
+      var image = document.createElement('img');
+      write(normalizeCss, merge(data, { caption: false }), image);
+      setAttrib(image, 'alt', data.alt);
+      if (data.caption) {
+        var figure = DOM.create('figure', { class: 'image' });
+        figure.appendChild(image);
+        figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));
+        figure.contentEditable = 'false';
+        return figure;
       } else {
-        deleteImage(editor, image);
+        return image;
       }
-    } else if (data.src) {
-      insertImageAtCaret(editor, data);
-    }
-  };
+    };
+    var read = function (normalizeCss, image) {
+      return {
+        src: getAttrib(image, 'src'),
+        alt: getAttrib(image, 'alt'),
+        title: getAttrib(image, 'title'),
+        width: getSize(image, 'width'),
+        height: getSize(image, 'height'),
+        class: getAttrib(image, 'class'),
+        style: normalizeCss(getAttrib(image, 'style')),
+        caption: hasCaption(image),
+        hspace: getHspace(image),
+        vspace: getVspace(image),
+        border: getBorder(image),
+        borderStyle: getStyle(image, 'borderStyle')
+      };
+    };
+    var updateProp = function (image, oldData, newData, name$$1, set) {
+      if (newData[name$$1] !== oldData[name$$1]) {
+        set(image, name$$1, newData[name$$1]);
+      }
+    };
+    var normalized = function (set, normalizeCss) {
+      return function (image, name$$1, value) {
+        set(image, value);
+        normalizeStyle(image, normalizeCss);
+      };
+    };
+    var write = function (normalizeCss, newData, image) {
+      var oldData = read(normalizeCss, image);
+      updateProp(image, oldData, newData, 'caption', function (image, _name, _value) {
+        return toggleCaption(image);
+      });
+      updateProp(image, oldData, newData, 'src', setAttrib);
+      updateProp(image, oldData, newData, 'alt', setAttrib);
+      updateProp(image, oldData, newData, 'title', setAttrib);
+      updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));
+      updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));
+      updateProp(image, oldData, newData, 'class', setAttrib);
+      updateProp(image, oldData, newData, 'style', normalized(function (image, value) {
+        return setAttrib(image, 'style', value);
+      }, normalizeCss));
+      updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));
+      updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));
+      updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));
+      updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));
+    };
 
-  var updateVSpaceHSpaceBorder = function (editor) {
-    return function (evt) {
+    var normalizeCss = function (editor, cssText) {
+      var css = editor.dom.styles.parse(cssText);
+      var mergedCss = Utils.mergeMargins(css);
+      var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));
+      return editor.dom.styles.serialize(compressed);
+    };
+    var getSelectedImage = function (editor) {
+      var imgElm = editor.selection.getNode();
+      var figureElm = editor.dom.getParent(imgElm, 'figure.image');
+      if (figureElm) {
+        return editor.dom.select('img', figureElm)[0];
+      }
+      if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) {
+        return null;
+      }
+      return imgElm;
+    };
+    var splitTextBlock = function (editor, figure) {
       var dom = editor.dom;
-      var rootControl = evt.control.rootControl;
-      if (!$_1dn8wtctjjgwebvz.hasAdvTab(editor)) {
-        return;
+      var textBlock = dom.getParent(figure.parentNode, function (node) {
+        return editor.schema.getTextBlockElements()[node.nodeName];
+      }, editor.getBody());
+      if (textBlock) {
+        return dom.split(textBlock, figure);
+      } else {
+        return figure;
       }
-      var data = rootControl.toJSON();
-      var css = dom.parseStyle(data.style);
-      rootControl.find('#vspace').value('');
-      rootControl.find('#hspace').value('');
-      css = $_1e8k4ncujjgwebw2.mergeMargins(css);
-      if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) {
-        if (css['margin-top'] === css['margin-bottom']) {
-          rootControl.find('#vspace').value($_1e8k4ncujjgwebw2.removePixelSuffix(css['margin-top']));
-        } else {
-          rootControl.find('#vspace').value('');
+    };
+    var readImageDataFromSelection = function (editor) {
+      var image = getSelectedImage(editor);
+      return image ? read(function (css) {
+        return normalizeCss(editor, css);
+      }, image) : defaultData();
+    };
+    var insertImageAtCaret = function (editor, data) {
+      var elm = create(function (css) {
+        return normalizeCss(editor, css);
+      }, data);
+      editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');
+      editor.focus();
+      editor.selection.setContent(elm.outerHTML);
+      var insertedElm = editor.dom.select('*[data-mce-id="__mcenew"]')[0];
+      editor.dom.setAttrib(insertedElm, 'data-mce-id', null);
+      if (isFigure(insertedElm)) {
+        var figure = splitTextBlock(editor, insertedElm);
+        editor.selection.select(figure);
+      } else {
+        editor.selection.select(insertedElm);
+      }
+    };
+    var syncSrcAttr = function (editor, image) {
+      editor.dom.setAttrib(image, 'src', image.getAttribute('src'));
+    };
+    var deleteImage = function (editor, image) {
+      if (image) {
+        var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;
+        editor.dom.remove(elm);
+        editor.focus();
+        editor.nodeChanged();
+        if (editor.dom.isEmpty(editor.getBody())) {
+          editor.setContent('');
+          editor.selection.setCursorLocation();
         }
-        if (css['margin-right'] === css['margin-left']) {
-          rootControl.find('#hspace').value($_1e8k4ncujjgwebw2.removePixelSuffix(css['margin-right']));
-        } else {
-          rootControl.find('#hspace').value('');
-        }
       }
-      if (css['border-width']) {
-        rootControl.find('#border').value($_1e8k4ncujjgwebw2.removePixelSuffix(css['border-width']));
+    };
+    var writeImageDataToSelection = function (editor, data) {
+      var image = getSelectedImage(editor);
+      write(function (css) {
+        return normalizeCss(editor, css);
+      }, data, image);
+      syncSrcAttr(editor, image);
+      if (isFigure(image.parentNode)) {
+        var figure = image.parentNode;
+        splitTextBlock(editor, figure);
+        editor.selection.select(image.parentNode);
       } else {
-        rootControl.find('#border').value('');
+        editor.selection.select(image);
+        Utils.waitLoadImage(editor, data, image);
       }
-      if (css['border-style']) {
-        rootControl.find('#borderStyle').value(css['border-style']);
-      } else {
-        rootControl.find('#borderStyle').value('');
+    };
+    var insertOrUpdateImage = function (editor, data) {
+      var image = getSelectedImage(editor);
+      if (image) {
+        if (data.src) {
+          writeImageDataToSelection(editor, data);
+        } else {
+          deleteImage(editor, image);
+        }
+      } else if (data.src) {
+        insertImageAtCaret(editor, data);
       }
-      rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
     };
-  };
-  var updateStyle = function (editor, win) {
-    win.find('#style').each(function (ctrl) {
-      var value = getStyleValue(function (css) {
-        return normalizeCss(editor, css);
-      }, merge(defaultData(), win.toJSON()));
-      ctrl.value(value);
-    });
-  };
-  var makeTab = function (editor) {
-    return {
-      title: 'Advanced',
-      type: 'form',
-      pack: 'start',
-      items: [
-        {
-          label: 'Style',
-          name: 'style',
-          type: 'textbox',
-          onchange: updateVSpaceHSpaceBorder(editor)
-        },
-        {
-          type: 'form',
-          layout: 'grid',
-          packV: 'start',
-          columns: 2,
-          padding: 0,
-          defaults: {
+
+    var updateVSpaceHSpaceBorder = function (editor) {
+      return function (evt) {
+        var dom = editor.dom;
+        var rootControl = evt.control.rootControl;
+        if (!Settings.hasAdvTab(editor)) {
+          return;
+        }
+        var data = rootControl.toJSON();
+        var css = dom.parseStyle(data.style);
+        rootControl.find('#vspace').value('');
+        rootControl.find('#hspace').value('');
+        css = Utils.mergeMargins(css);
+        if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) {
+          if (css['margin-top'] === css['margin-bottom']) {
+            rootControl.find('#vspace').value(Utils.removePixelSuffix(css['margin-top']));
+          } else {
+            rootControl.find('#vspace').value('');
+          }
+          if (css['margin-right'] === css['margin-left']) {
+            rootControl.find('#hspace').value(Utils.removePixelSuffix(css['margin-right']));
+          } else {
+            rootControl.find('#hspace').value('');
+          }
+        }
+        if (css['border-width']) {
+          rootControl.find('#border').value(Utils.removePixelSuffix(css['border-width']));
+        } else {
+          rootControl.find('#border').value('');
+        }
+        if (css['border-style']) {
+          rootControl.find('#borderStyle').value(css['border-style']);
+        } else {
+          rootControl.find('#borderStyle').value('');
+        }
+        rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+      };
+    };
+    var updateStyle = function (editor, win) {
+      win.find('#style').each(function (ctrl) {
+        var value = getStyleValue(function (css) {
+          return normalizeCss(editor, css);
+        }, merge(defaultData(), win.toJSON()));
+        ctrl.value(value);
+      });
+    };
+    var makeTab = function (editor) {
+      return {
+        title: 'Advanced',
+        type: 'form',
+        pack: 'start',
+        items: [
+          {
+            label: 'Style',
+            name: 'style',
             type: 'textbox',
-            maxWidth: 50,
-            onchange: function (evt) {
-              updateStyle(editor, evt.control.rootControl);
-            }
+            onchange: updateVSpaceHSpaceBorder(editor)
           },
-          items: [
-            {
-              label: 'Vertical space',
-              name: 'vspace'
+          {
+            type: 'form',
+            layout: 'grid',
+            packV: 'start',
+            columns: 2,
+            padding: 0,
+            defaults: {
+              type: 'textbox',
+              maxWidth: 50,
+              onchange: function (evt) {
+                updateStyle(editor, evt.control.rootControl);
+              }
             },
-            {
-              label: 'Border width',
-              name: 'border'
-            },
-            {
-              label: 'Horizontal space',
-              name: 'hspace'
-            },
-            {
-              label: 'Border style',
-              type: 'listbox',
-              name: 'borderStyle',
-              width: 90,
-              maxWidth: 90,
-              onselect: function (evt) {
-                updateStyle(editor, evt.control.rootControl);
+            items: [
+              {
+                label: 'Vertical space',
+                name: 'vspace'
               },
-              values: [
-                {
-                  text: 'Select...',
-                  value: ''
+              {
+                label: 'Border width',
+                name: 'border'
+              },
+              {
+                label: 'Horizontal space',
+                name: 'hspace'
+              },
+              {
+                label: 'Border style',
+                type: 'listbox',
+                name: 'borderStyle',
+                width: 90,
+                maxWidth: 90,
+                onselect: function (evt) {
+                  updateStyle(editor, evt.control.rootControl);
                 },
-                {
-                  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'
-                }
-              ]
-            }
-          ]
+                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 AdvTab = { makeTab: makeTab };
+
+    var doSyncSize = function (widthCtrl, heightCtrl) {
+      widthCtrl.state.set('oldVal', widthCtrl.value());
+      heightCtrl.state.set('oldVal', heightCtrl.value());
+    };
+    var doSizeControls = function (win, f) {
+      var widthCtrl = win.find('#width')[0];
+      var heightCtrl = win.find('#height')[0];
+      var constrained = win.find('#constrain')[0];
+      if (widthCtrl && heightCtrl && constrained) {
+        f(widthCtrl, heightCtrl, constrained.checked());
+      }
+    };
+    var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {
+      var oldWidth = widthCtrl.state.get('oldVal');
+      var oldHeight = heightCtrl.state.get('oldVal');
+      var newWidth = widthCtrl.value();
+      var newHeight = heightCtrl.value();
+      if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {
+        if (newWidth !== oldWidth) {
+          newHeight = Math.round(newWidth / oldWidth * newHeight);
+          if (!isNaN(newHeight)) {
+            heightCtrl.value(newHeight);
+          }
+        } else {
+          newWidth = Math.round(newHeight / oldHeight * newWidth);
+          if (!isNaN(newWidth)) {
+            widthCtrl.value(newWidth);
+          }
         }
-      ]
+      }
+      doSyncSize(widthCtrl, heightCtrl);
     };
-  };
-  var $_6dfy5vd3jjgwebxf = { makeTab: makeTab };
+    var syncSize = function (win) {
+      doSizeControls(win, doSyncSize);
+    };
+    var updateSize = function (win) {
+      doSizeControls(win, doUpdateSize);
+    };
+    var createUi = function () {
+      var recalcSize = function (evt) {
+        updateSize(evt.control.rootControl);
+      };
+      return {
+        type: 'container',
+        label: 'Dimensions',
+        layout: 'flex',
+        align: 'center',
+        spacing: 5,
+        items: [
+          {
+            name: 'width',
+            type: 'textbox',
+            maxLength: 5,
+            size: 5,
+            onchange: recalcSize,
+            ariaLabel: 'Width'
+          },
+          {
+            type: 'label',
+            text: 'x'
+          },
+          {
+            name: 'height',
+            type: 'textbox',
+            maxLength: 5,
+            size: 5,
+            onchange: recalcSize,
+            ariaLabel: 'Height'
+          },
+          {
+            name: 'constrain',
+            type: 'checkbox',
+            checked: true,
+            text: 'Constrain proportions'
+          }
+        ]
+      };
+    };
+    var SizeManager = {
+      createUi: createUi,
+      syncSize: syncSize,
+      updateSize: updateSize
+    };
 
-  var doSyncSize = function (widthCtrl, heightCtrl) {
-    widthCtrl.state.set('oldVal', widthCtrl.value());
-    heightCtrl.state.set('oldVal', heightCtrl.value());
-  };
-  var doSizeControls = function (win, f) {
-    var widthCtrl = win.find('#width')[0];
-    var heightCtrl = win.find('#height')[0];
-    var constrained = win.find('#constrain')[0];
-    if (widthCtrl && heightCtrl && constrained) {
-      f(widthCtrl, heightCtrl, constrained.checked());
-    }
-  };
-  var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {
-    var oldWidth = widthCtrl.state.get('oldVal');
-    var oldHeight = heightCtrl.state.get('oldVal');
-    var newWidth = widthCtrl.value();
-    var newHeight = heightCtrl.value();
-    if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {
-      if (newWidth !== oldWidth) {
-        newHeight = Math.round(newWidth / oldWidth * newHeight);
-        if (!isNaN(newHeight)) {
-          heightCtrl.value(newHeight);
+    var onSrcChange = function (evt, editor) {
+      var srcURL, prependURL, absoluteURLPattern;
+      var meta = evt.meta || {};
+      var control = evt.control;
+      var rootControl = control.rootControl;
+      var imageListCtrl = rootControl.find('#image-list')[0];
+      if (imageListCtrl) {
+        imageListCtrl.value(editor.convertURL(control.value(), 'src'));
+      }
+      global$2.each(meta, function (value, key) {
+        rootControl.find('#' + key).value(value);
+      });
+      if (!meta.width && !meta.height) {
+        srcURL = editor.convertURL(control.value(), 'src');
+        prependURL = Settings.getPrependUrl(editor);
+        absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
+        if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {
+          srcURL = prependURL + srcURL;
         }
-      } else {
-        newWidth = Math.round(newHeight / oldHeight * newWidth);
-        if (!isNaN(newWidth)) {
-          widthCtrl.value(newWidth);
-        }
+        control.value(srcURL);
+        Utils.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) {
+          if (data.width && data.height && Settings.hasDimensions(editor)) {
+            rootControl.find('#width').value(data.width);
+            rootControl.find('#height').value(data.height);
+            SizeManager.syncSize(rootControl);
+          }
+        });
       }
-    }
-    doSyncSize(widthCtrl, heightCtrl);
-  };
-  var syncSize = function (win) {
-    doSizeControls(win, doSyncSize);
-  };
-  var updateSize = function (win) {
-    doSizeControls(win, doUpdateSize);
-  };
-  var createUi = function () {
-    var recalcSize = function (evt) {
-      updateSize(evt.control.rootControl);
     };
-    return {
-      type: 'container',
-      label: 'Dimensions',
-      layout: 'flex',
-      align: 'center',
-      spacing: 5,
-      items: [
+    var onBeforeCall = function (evt) {
+      evt.meta = evt.control.rootControl.toJSON();
+    };
+    var getGeneralItems = function (editor, imageListCtrl) {
+      var generalFormItems = [
         {
-          name: 'width',
-          type: 'textbox',
-          maxLength: 5,
-          size: 5,
-          onchange: recalcSize,
-          ariaLabel: 'Width'
+          name: 'src',
+          type: 'filepicker',
+          filetype: 'image',
+          label: 'Source',
+          autofocus: true,
+          onchange: function (evt) {
+            onSrcChange(evt, editor);
+          },
+          onbeforecall: onBeforeCall
         },
-        {
-          type: 'label',
-          text: 'x'
-        },
-        {
-          name: 'height',
+        imageListCtrl
+      ];
+      if (Settings.hasDescription(editor)) {
+        generalFormItems.push({
+          name: 'alt',
           type: 'textbox',
-          maxLength: 5,
-          size: 5,
-          onchange: recalcSize,
-          ariaLabel: 'Height'
-        },
-        {
-          name: 'constrain',
+          label: 'Image description'
+        });
+      }
+      if (Settings.hasImageTitle(editor)) {
+        generalFormItems.push({
+          name: 'title',
+          type: 'textbox',
+          label: 'Image Title'
+        });
+      }
+      if (Settings.hasDimensions(editor)) {
+        generalFormItems.push(SizeManager.createUi());
+      }
+      if (Settings.getClassList(editor)) {
+        generalFormItems.push({
+          name: 'class',
+          type: 'listbox',
+          label: 'Class',
+          values: Utils.buildListItems(Settings.getClassList(editor), function (item) {
+            if (item.value) {
+              item.textStyle = function () {
+                return editor.formatter.getCssText({
+                  inline: 'img',
+                  classes: [item.value]
+                });
+              };
+            }
+          })
+        });
+      }
+      if (Settings.hasImageCaption(editor)) {
+        generalFormItems.push({
+          name: 'caption',
           type: 'checkbox',
-          checked: true,
-          text: 'Constrain proportions'
-        }
-      ]
+          label: 'Caption'
+        });
+      }
+      return generalFormItems;
     };
-  };
-  var $_ftlz5pdajjgweby4 = {
-    createUi: createUi,
-    syncSize: syncSize,
-    updateSize: updateSize
-  };
+    var makeTab$1 = function (editor, imageListCtrl) {
+      return {
+        title: 'General',
+        type: 'form',
+        items: getGeneralItems(editor, imageListCtrl)
+      };
+    };
+    var MainTab = {
+      makeTab: makeTab$1,
+      getGeneralItems: getGeneralItems
+    };
 
-  var onSrcChange = function (evt, editor) {
-    var srcURL, prependURL, absoluteURLPattern;
-    var meta = evt.meta || {};
-    var control = evt.control;
-    var rootControl = control.rootControl;
-    var imageListCtrl = rootControl.find('#image-list')[0];
-    if (imageListCtrl) {
-      imageListCtrl.value(editor.convertURL(control.value(), 'src'));
-    }
-    global$2.each(meta, function (value, key) {
-      rootControl.find('#' + key).value(value);
-    });
-    if (!meta.width && !meta.height) {
-      srcURL = editor.convertURL(control.value(), 'src');
-      prependURL = $_1dn8wtctjjgwebvz.getPrependUrl(editor);
-      absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
-      if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {
-        srcURL = prependURL + srcURL;
-      }
-      control.value(srcURL);
-      $_1e8k4ncujjgwebw2.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) {
-        if (data.width && data.height && $_1dn8wtctjjgwebvz.hasDimensions(editor)) {
-          rootControl.find('#width').value(data.width);
-          rootControl.find('#height').value(data.height);
-          $_ftlz5pdajjgweby4.syncSize(rootControl);
-        }
-      });
-    }
-  };
-  var onBeforeCall = function (evt) {
-    evt.meta = evt.control.rootControl.toJSON();
-  };
-  var getGeneralItems = function (editor, imageListCtrl) {
-    var generalFormItems = [
-      {
-        name: 'src',
-        type: 'filepicker',
-        filetype: 'image',
-        label: 'Source',
-        autofocus: true,
-        onchange: function (evt) {
-          onSrcChange(evt, editor);
-        },
-        onbeforecall: onBeforeCall
-      },
-      imageListCtrl
-    ];
-    if ($_1dn8wtctjjgwebvz.hasDescription(editor)) {
-      generalFormItems.push({
-        name: 'alt',
-        type: 'textbox',
-        label: 'Image description'
-      });
-    }
-    if ($_1dn8wtctjjgwebvz.hasImageTitle(editor)) {
-      generalFormItems.push({
-        name: 'title',
-        type: 'textbox',
-        label: 'Image Title'
-      });
-    }
-    if ($_1dn8wtctjjgwebvz.hasDimensions(editor)) {
-      generalFormItems.push($_ftlz5pdajjgweby4.createUi());
-    }
-    if ($_1dn8wtctjjgwebvz.getClassList(editor)) {
-      generalFormItems.push({
-        name: 'class',
-        type: 'listbox',
-        label: 'Class',
-        values: $_1e8k4ncujjgwebw2.buildListItems($_1dn8wtctjjgwebvz.getClassList(editor), function (item) {
-          if (item.value) {
-            item.textStyle = function () {
-              return editor.formatter.getCssText({
-                inline: 'img',
-                classes: [item.value]
-              });
-            };
-          }
-        })
-      });
-    }
-    if ($_1dn8wtctjjgwebvz.hasImageCaption(editor)) {
-      generalFormItems.push({
-        name: 'caption',
-        type: 'checkbox',
-        label: 'Caption'
-      });
-    }
-    return generalFormItems;
-  };
-  var makeTab$1 = function (editor, imageListCtrl) {
-    return {
-      title: 'General',
-      type: 'form',
-      items: getGeneralItems(editor, imageListCtrl)
+    var url = function () {
+      return Global$1.getOrDie('URL');
     };
-  };
-  var $_78zck5d9jjgweby1 = {
-    makeTab: makeTab$1,
-    getGeneralItems: getGeneralItems
-  };
+    var createObjectURL = function (blob) {
+      return url().createObjectURL(blob);
+    };
+    var revokeObjectURL = function (u) {
+      url().revokeObjectURL(u);
+    };
+    var URL = {
+      createObjectURL: createObjectURL,
+      revokeObjectURL: revokeObjectURL
+    };
 
-  var url = function () {
-    return $_oab1bcwjjgwebwl.getOrDie('URL');
-  };
-  var createObjectURL = function (blob) {
-    return url().createObjectURL(blob);
-  };
-  var revokeObjectURL = function (u) {
-    url().revokeObjectURL(u);
-  };
-  var $_86i13edcjjgwebya = {
-    createObjectURL: createObjectURL,
-    revokeObjectURL: revokeObjectURL
-  };
+    var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory');
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory');
+    function XMLHttpRequest () {
+      var f = Global$1.getOrDie('XMLHttpRequest');
+      return new f();
+    }
 
-  function XMLHttpRequest () {
-    var f = $_oab1bcwjjgwebwl.getOrDie('XMLHttpRequest');
-    return new f();
-  }
-
-  var noop = function () {
-  };
-  var pathJoin = function (path1, path2) {
-    if (path1) {
-      return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, '');
-    }
-    return path2;
-  };
-  function Uploader (settings) {
-    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);
+    var noop = function () {
+    };
+    var pathJoin = function (path1, path2) {
+      if (path1) {
+        return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, '');
+      }
+      return path2;
+    };
+    function Uploader (settings) {
+      var defaultHandler = function (blobInfo, success, failure, progress) {
+        var xhr, formData;
+        xhr = 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);
       };
-      xhr.onerror = function () {
-        failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);
+      var uploadBlob = function (blobInfo, handler) {
+        return new global$1(function (resolve, reject) {
+          try {
+            handler(blobInfo, resolve, reject, noop);
+          } catch (ex) {
+            reject(ex.message);
+          }
+        });
       };
-      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));
+      var isDefaultHandler = function (handler) {
+        return handler === defaultHandler;
       };
-      formData = new FormData();
-      formData.append('file', blobInfo.blob(), blobInfo.filename());
-      xhr.send(formData);
-    };
-    var uploadBlob = function (blobInfo, handler) {
-      return new global$1(function (resolve, reject) {
-        try {
-          handler(blobInfo, resolve, reject, noop);
-        } catch (ex) {
-          reject(ex.message);
-        }
-      });
-    };
-    var isDefaultHandler = function (handler) {
-      return handler === defaultHandler;
-    };
-    var upload = function (blobInfo) {
-      return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler);
-    };
-    settings = global$2.extend({
-      credentials: false,
-      handler: defaultHandler
-    }, settings);
-    return { upload: upload };
-  }
+      var upload = function (blobInfo) {
+        return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler);
+      };
+      settings = global$2.extend({
+        credentials: false,
+        handler: defaultHandler
+      }, settings);
+      return { upload: upload };
+    }
 
-  var onFileInput = function (editor) {
-    return function (evt) {
-      var Throbber = global$5.get('Throbber');
-      var rootControl = evt.control.rootControl;
-      var throbber = new Throbber(rootControl.getEl());
-      var file = evt.control.value();
-      var blobUri = $_86i13edcjjgwebya.createObjectURL(file);
-      var uploader = Uploader({
-        url: $_1dn8wtctjjgwebvz.getUploadUrl(editor),
-        basePath: $_1dn8wtctjjgwebvz.getUploadBasePath(editor),
-        credentials: $_1dn8wtctjjgwebvz.getUploadCredentials(editor),
-        handler: $_1dn8wtctjjgwebvz.getUploadHandler(editor)
-      });
-      var finalize = function () {
-        throbber.hide();
-        $_86i13edcjjgwebya.revokeObjectURL(blobUri);
-      };
-      throbber.show();
-      return $_1e8k4ncujjgwebw2.blobToDataUri(file).then(function (dataUrl) {
-        var blobInfo = editor.editorUpload.blobCache.create({
-          blob: file,
-          blobUri: blobUri,
-          name: file.name ? file.name.replace(/\.[^\.]+$/, '') : null,
-          base64: dataUrl.split(',')[1]
+    var onFileInput = function (editor) {
+      return function (evt) {
+        var Throbber = global$5.get('Throbber');
+        var rootControl = evt.control.rootControl;
+        var throbber = new Throbber(rootControl.getEl());
+        var file = evt.control.value();
+        var blobUri = URL.createObjectURL(file);
+        var uploader = Uploader({
+          url: Settings.getUploadUrl(editor),
+          basePath: Settings.getUploadBasePath(editor),
+          credentials: Settings.getUploadCredentials(editor),
+          handler: Settings.getUploadHandler(editor)
         });
-        return uploader.upload(blobInfo).then(function (url) {
-          var src = rootControl.find('#src');
-          src.value(url);
-          rootControl.find('tabpanel')[0].activateTab(0);
-          src.fire('change');
+        var finalize = function () {
+          throbber.hide();
+          URL.revokeObjectURL(blobUri);
+        };
+        throbber.show();
+        return Utils.blobToDataUri(file).then(function (dataUrl) {
+          var blobInfo = editor.editorUpload.blobCache.create({
+            blob: file,
+            blobUri: blobUri,
+            name: file.name ? file.name.replace(/\.[^\.]+$/, '') : null,
+            base64: dataUrl.split(',')[1]
+          });
+          return uploader.upload(blobInfo).then(function (url) {
+            var src = rootControl.find('#src');
+            src.value(url);
+            rootControl.find('tabpanel')[0].activateTab(0);
+            src.fire('change');
+            finalize();
+            return url;
+          });
+        }).catch(function (err) {
+          editor.windowManager.alert(err);
           finalize();
-          return url;
         });
-      }).catch(function (err) {
-        editor.windowManager.alert(err);
-        finalize();
-      });
+      };
     };
-  };
-  var acceptExts = '.jpg,.jpeg,.png,.gif';
-  var makeTab$2 = function (editor) {
-    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: acceptExts,
-              onchange: onFileInput(editor)
-            },
-            {
-              text: 'OR',
-              type: 'label'
-            }
-          ]
-        },
-        {
-          text: 'Drop an image here',
-          type: 'dropzone',
-          accept: acceptExts,
-          height: 100,
-          onchange: onFileInput(editor)
-        }
-      ]
+    var acceptExts = '.jpg,.jpeg,.png,.gif';
+    var makeTab$2 = function (editor) {
+      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: acceptExts,
+                onchange: onFileInput(editor)
+              },
+              {
+                text: 'OR',
+                type: 'label'
+              }
+            ]
+          },
+          {
+            text: 'Drop an image here',
+            type: 'dropzone',
+            accept: acceptExts,
+            height: 100,
+            onchange: onFileInput(editor)
+          }
+        ]
+      };
     };
-  };
-  var $_71qd7mdbjjgweby7 = { makeTab: makeTab$2 };
+    var UploadTab = { makeTab: makeTab$2 };
 
-  var curry = function (f) {
-    var x = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-      x[_i - 1] = arguments[_i];
+    function curry(fn) {
+      var initialArgs = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+        initialArgs[_i - 1] = arguments[_i];
+      }
+      return function () {
+        var restArgs = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          restArgs[_i] = arguments[_i];
+        }
+        var all = initialArgs.concat(restArgs);
+        return fn.apply(null, all);
+      };
     }
-    var args = new Array(arguments.length - 1);
-    for (var i = 1; i < arguments.length; i++)
-      args[i - 1] = arguments[i];
-    return function () {
-      var x = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        x[_i] = arguments[_i];
-      }
-      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 submitForm = function (editor, evt) {
+      var win = evt.control.getRoot();
+      SizeManager.updateSize(win);
+      editor.undoManager.transact(function () {
+        var data = merge(readImageDataFromSelection(editor), win.toJSON());
+        insertOrUpdateImage(editor, data);
+      });
+      editor.editorUpload.uploadImagesAuto();
     };
-  };
-
-  var submitForm = function (editor, evt) {
-    var win = evt.control.getRoot();
-    $_ftlz5pdajjgweby4.updateSize(win);
-    editor.undoManager.transact(function () {
-      var data = merge(readImageDataFromSelection(editor), win.toJSON());
-      insertOrUpdateImage(editor, data);
-    });
-    editor.editorUpload.uploadImagesAuto();
-  };
-  function Dialog (editor) {
-    function showDialog(imageList) {
-      var data = readImageDataFromSelection(editor);
-      var win, imageListCtrl;
-      if (imageList) {
-        imageListCtrl = {
-          type: 'listbox',
-          label: 'Image list',
-          name: 'image-list',
-          values: $_1e8k4ncujjgwebw2.buildListItems(imageList, function (item) {
-            item.value = editor.convertURL(item.value || item.url, 'src');
-          }, [{
-              text: 'None',
-              value: ''
-            }]),
-          value: data.src && editor.convertURL(data.src, 'src'),
-          onselect: function (e) {
-            var altCtrl = win.find('#alt');
-            if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) {
-              altCtrl.value(e.control.text());
+    function Dialog (editor) {
+      function showDialog(imageList) {
+        var data = readImageDataFromSelection(editor);
+        var win, imageListCtrl;
+        if (imageList) {
+          imageListCtrl = {
+            type: 'listbox',
+            label: 'Image list',
+            name: 'image-list',
+            values: Utils.buildListItems(imageList, function (item) {
+              item.value = editor.convertURL(item.value || item.url, 'src');
+            }, [{
+                text: 'None',
+                value: ''
+              }]),
+            value: data.src && editor.convertURL(data.src, 'src'),
+            onselect: function (e) {
+              var altCtrl = win.find('#alt');
+              if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) {
+                altCtrl.value(e.control.text());
+              }
+              win.find('#src').value(e.control.value()).fire('change');
+            },
+            onPostRender: function () {
+              imageListCtrl = this;
             }
-            win.find('#src').value(e.control.value()).fire('change');
-          },
-          onPostRender: function () {
-            imageListCtrl = this;
+          };
+        }
+        if (Settings.hasAdvTab(editor) || Settings.hasUploadUrl(editor) || Settings.hasUploadHandler(editor)) {
+          var body = [MainTab.makeTab(editor, imageListCtrl)];
+          if (Settings.hasAdvTab(editor)) {
+            body.push(AdvTab.makeTab(editor));
           }
-        };
-      }
-      if ($_1dn8wtctjjgwebvz.hasAdvTab(editor) || $_1dn8wtctjjgwebvz.hasUploadUrl(editor) || $_1dn8wtctjjgwebvz.hasUploadHandler(editor)) {
-        var body = [$_78zck5d9jjgweby1.makeTab(editor, imageListCtrl)];
-        if ($_1dn8wtctjjgwebvz.hasAdvTab(editor)) {
-          body.push($_6dfy5vd3jjgwebxf.makeTab(editor));
+          if (Settings.hasUploadUrl(editor) || Settings.hasUploadHandler(editor)) {
+            body.push(UploadTab.makeTab(editor));
+          }
+          win = editor.windowManager.open({
+            title: 'Insert/edit image',
+            data: data,
+            bodyType: 'tabpanel',
+            body: body,
+            onSubmit: curry(submitForm, editor)
+          });
+        } else {
+          win = editor.windowManager.open({
+            title: 'Insert/edit image',
+            data: data,
+            body: MainTab.getGeneralItems(editor, imageListCtrl),
+            onSubmit: curry(submitForm, editor)
+          });
         }
-        if ($_1dn8wtctjjgwebvz.hasUploadUrl(editor) || $_1dn8wtctjjgwebvz.hasUploadHandler(editor)) {
-          body.push($_71qd7mdbjjgweby7.makeTab(editor));
-        }
-        win = editor.windowManager.open({
-          title: 'Insert/edit image',
-          data: data,
-          bodyType: 'tabpanel',
-          body: body,
-          onSubmit: curry(submitForm, editor)
-        });
-      } else {
-        win = editor.windowManager.open({
-          title: 'Insert/edit image',
-          data: data,
-          body: $_78zck5d9jjgweby1.getGeneralItems(editor, imageListCtrl),
-          onSubmit: curry(submitForm, editor)
-        });
+        SizeManager.syncSize(win);
       }
-      $_ftlz5pdajjgweby4.syncSize(win);
+      function open() {
+        Utils.createImageList(editor, showDialog);
+      }
+      return { open: open };
     }
-    function open() {
-      $_1e8k4ncujjgwebw2.createImageList(editor, showDialog);
-    }
-    return { open: open };
-  }
 
-  var register = function (editor) {
-    editor.addCommand('mceImage', Dialog(editor).open);
-  };
-  var $_3lypdlcrjjgwebvs = { register: register };
+    var register = function (editor) {
+      editor.addCommand('mceImage', Dialog(editor).open);
+    };
+    var Commands = { register: register };
 
-  var hasImageClass = function (node) {
-    var className = node.attr('class');
-    return className && /\bimage\b/.test(className);
-  };
-  var toggleContentEditableState = function (state) {
-    return function (nodes) {
-      var i = nodes.length, node;
-      var toggleContentEditable = function (node) {
-        node.attr('contenteditable', state ? 'true' : null);
+    var hasImageClass = function (node) {
+      var className = node.attr('class');
+      return className && /\bimage\b/.test(className);
+    };
+    var toggleContentEditableState = function (state) {
+      return function (nodes) {
+        var i = nodes.length, node;
+        var toggleContentEditable = function (node) {
+          node.attr('contenteditable', state ? 'true' : null);
+        };
+        while (i--) {
+          node = nodes[i];
+          if (hasImageClass(node)) {
+            node.attr('contenteditable', state ? 'false' : null);
+            global$2.each(node.getAll('figcaption'), toggleContentEditable);
+          }
+        }
       };
-      while (i--) {
-        node = nodes[i];
-        if (hasImageClass(node)) {
-          node.attr('contenteditable', state ? 'false' : null);
-          global$2.each(node.getAll('figcaption'), toggleContentEditable);
-        }
-      }
     };
-  };
-  var setup = function (editor) {
-    editor.on('preInit', function () {
-      editor.parser.addNodeFilter('figure', toggleContentEditableState(true));
-      editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));
-    });
-  };
-  var $_5op6l2dhjjgwebym = { setup: setup };
+    var setup = function (editor) {
+      editor.on('preInit', function () {
+        editor.parser.addNodeFilter('figure', toggleContentEditableState(true));
+        editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));
+      });
+    };
+    var FilterContent = { setup: setup };
 
-  var register$1 = function (editor) {
-    editor.addButton('image', {
-      icon: 'image',
-      tooltip: 'Insert/edit image',
-      onclick: Dialog(editor).open,
-      stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'
+    var register$1 = function (editor) {
+      editor.addButton('image', {
+        icon: 'image',
+        tooltip: 'Insert/edit image',
+        onclick: Dialog(editor).open,
+        stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'
+      });
+      editor.addMenuItem('image', {
+        icon: 'image',
+        text: 'Image',
+        onclick: Dialog(editor).open,
+        context: 'insert',
+        prependToContext: true
+      });
+    };
+    var Buttons = { register: register$1 };
+
+    global.add('image', function (editor) {
+      FilterContent.setup(editor);
+      Buttons.register(editor);
+      Commands.register(editor);
     });
-    editor.addMenuItem('image', {
-      icon: 'image',
-      text: 'Image',
-      onclick: Dialog(editor).open,
-      context: 'insert',
-      prependToContext: true
-    });
-  };
-  var $_dm869adijjgwebyn = { register: register$1 };
+    function Plugin () {
+    }
 
-  global.add('image', function (editor) {
-    $_5op6l2dhjjgwebym.setup(editor);
-    $_dm869adijjgwebyn.register(editor);
-    $_3lypdlcrjjgwebvs.register(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/image/plugin.min.js	(working copy)
@@ -1 +1 @@
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},i=function(e){return!0===e.settings.image_advtab},g=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},l=function(e){return e.getParam("image_list",!1)},u=function(e){return e.getParam("images_upload_url",!1)},c=function(e){return e.getParam("images_upload_handler",!1)},s=function(e){return e.getParam("images_upload_url")},m=function(e){return e.getParam("images_upload_handler")},f=function(e){return e.getParam("images_upload_base_path")},p=function(e){return e.getParam("images_upload_credentials")},h="undefined"!=typeof window?window:Function("return this;")(),v=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:h,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},t={getOrDie:function(e,t){var n=v(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}};function b(){return new(t.getOrDie("FileReader"))}var y,x=tinymce.util.Tools.resolve("tinymce.util.Promise"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),C=tinymce.util.Tools.resolve("tinymce.util.XHR"),S=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},N=function(e,n){var r=document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(S(r.width,r.clientWidth),S(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",document.body.appendChild(r),r.src=e},_=function(e,a,t){return function n(e,r){return r=r||[],w.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},A=function(e){return e&&(e=e.replace(/px$/,"")),e},T=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},R=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},I=function(e,t){var n=l(e);"string"==typeof n?C.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},O=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height:n.clientHeight}),r()},n.onerror=r},L=function(r){return new x(function(e,t){var n=new b;n.onload=function(){e(n.result)},n.onerror=function(){t(b.error.message)},n.readAsDataURL(r)})},P=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),U=Object.prototype.hasOwnProperty,E=(y=function(e,t){return t},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 n={},r=0;r<e.length;r++){var a=e[r];for(var o in a)U.call(a,o)&&(n[o]=y(n[o],a[o]))}return n}),k=P.DOM,M=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?A(e.style.marginLeft):""},D=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?A(e.style.marginTop):""},z=function(e){return e.style.borderWidth?A(e.style.borderWidth):""},B=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},H=function(e,t){return e.style[t]?e.style[t]:""},j=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},F=function(e,t,n){e.setAttribute(t,n)},W=function(e){var t,n,r,a;j(e)?(a=(r=e).parentNode,k.insertAfter(r,a),k.remove(a)):(t=e,n=k.create("figure",{"class":"image"}),k.insertAfter(n,t),n.appendChild(t),n.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},J=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},V=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=T(n),J(e,r)):F(e,t,n)}},G=function(e,t){return e.style[t]?A(e.style[t]):B(e,t)},$=function(e,t){var n=T(t);e.style.marginLeft=n,e.style.marginRight=n},X=function(e,t){var n=T(t);e.style.marginTop=n,e.style.marginBottom=n},q=function(e,t){var n=T(t);e.style.borderWidth=n},K=function(e,t){e.style.borderStyle=t},Q=function(e){return"FIGURE"===e.nodeName},Y=function(e,t){var n=document.createElement("img");return F(n,"style",t.style),(M(n)||""!==t.hspace)&&$(n,t.hspace),(D(n)||""!==t.vspace)&&X(n,t.vspace),(z(n)||""!==t.border)&&q(n,t.border),(H(n,"borderStyle")||""!==t.borderStyle)&&K(n,t.borderStyle),e(n.getAttribute("style"))},Z=function(e,t){return{src:B(t,"src"),alt:B(t,"alt"),title:B(t,"title"),width:G(t,"width"),height:G(t,"height"),"class":B(t,"class"),style:e(B(t,"style")),caption:j(t),hspace:M(t),vspace:D(t),border:z(t),borderStyle:H(t,"borderStyle")}},ee=function(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])},te=function(r,a){return function(e,t,n){r(e,n),J(e,a)}},ne=function(e,t,n){var r=Z(e,n);ee(n,r,t,"caption",function(e,t,n){return W(e)}),ee(n,r,t,"src",F),ee(n,r,t,"alt",F),ee(n,r,t,"title",F),ee(n,r,t,"width",V(0,e)),ee(n,r,t,"height",V(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t)},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(X,e)),ee(n,r,t,"border",te(q,e)),ee(n,r,t,"borderStyle",te(K,e))},re=function(e,t){var n=e.dom.styles.parse(t),r=R(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},ae=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},oe=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]});return r?n.split(r,e):e},ie=function(t){var e=ae(t);return e?Z(function(e){return re(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},le=function(t,e){var n=function(e,t){var n=document.createElement("img");if(ne(e,E(t,{caption:!1}),n),F(n,"alt",t.alt),t.caption){var r=k.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return re(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),Q(r)){var a=oe(t,r);t.selection.select(a)}else t.selection.select(r)},ue=function(e,t){var n=ae(e);n?t.src?function(t,e){var n,r=ae(t);if(ne(function(e){return re(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),Q(r.parentNode)){var a=r.parentNode;oe(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),O(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&le(e,t)},ce=function(n,r){r.find("#style").each(function(e){var t=Y(function(e){return re(n,e)},E({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},se=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(i(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=R(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(A(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(A(a["margin-right"])):n.find("#hspace").value("")),a["border-width"]?n.find("#border").value(A(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ce(t,e.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(e){ce(t,e.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 o},de=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},ge=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},me=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o))),de(e,t)},fe=function(e){ge(e,me)},pe=function(){var e=function(e){fe(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"}]}},he=function(e){ge(e,de)},ve=fe,be=function(e){e.meta=e.control.rootControl.toJSON()},ye=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src")),w.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=g(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),N(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),he(u))}))},onbeforecall:be},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(pe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:_(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},xe=function(e,t){return{title:"General",type:"form",items:ye(e,t)}},we=ye,Ce=function(){return t.getOrDie("URL")},Se=function(e){return Ce().createObjectURL(e)},Ne=function(e){Ce().revokeObjectURL(e)},_e=tinymce.util.Tools.resolve("tinymce.ui.Factory");function Ae(){return new(t.getOrDie("XMLHttpRequest"))}var Te=function(){};function Re(i){var t=function(e,r,a,t){var o,n;(o=new Ae).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=w.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new x(function(e,t){try{a(r,e,t,Te)}catch(n){t(n.message)}})):x.reject("Upload url missing from the settings.");var r,a}}}var Ie=function(u){return function(e){var t=_e.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Se(a),i=Re({url:s(u),basePath:f(u),credentials:p(u),handler:m(u)}),l=function(){r.hide(),Ne(o)};return r.show(),L(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.windowManager.alert(e),l()})}},Oe=".jpg,.jpeg,.png,.gif",Le=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:Oe,onchange:Ie(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Oe,height:100,onchange:Ie(e)}]}},Pe=function(o){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];for(var i=new Array(arguments.length-1),n=1;n<arguments.length;n++)i[n-1]=arguments[n];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];var a=i.concat(n);return o.apply(null,a)}},Ue=function(t,e){var n=e.control.getRoot();ve(n),t.undoManager.transact(function(){var e=E(ie(t),n.toJSON());ue(t,e)}),t.editorUpload.uploadImagesAuto()};function Ee(o){function e(e){var n,t,r=ie(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:_(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),i(o)||u(o)||c(o)){var a=[xe(o,t)];i(o)&&a.push(se(o)),(u(o)||c(o))&&a.push(Le(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Pe(Ue,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:we(o,t),onSubmit:Pe(Ue,o)});he(n)}return{open:function(){I(o,e)}}}var ke=function(e){e.addCommand("mceImage",Ee(e).open)},Me=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),w.each(t.getAll("figcaption"),a))}},De=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",Me(!0)),e.serializer.addNodeFilter("figure",Me(!1))})},ze=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Ee(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Ee(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){De(e),ze(e),ke(e)})}();
\ No newline at end of file
+!function(){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},l=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},u=function(e){return e.getParam("image_list",!1)},c=function(e){return e.getParam("images_upload_url",!1)},s=function(e){return e.getParam("images_upload_handler",!1)},g=function(e){return e.getParam("images_upload_url")},f=function(e){return e.getParam("images_upload_handler")},p=function(e){return e.getParam("images_upload_base_path")},h=function(e){return e.getParam("images_upload_credentials")},v="undefined"!=typeof window?window:Function("return this;")(),b=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:v,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},y={getOrDie:function(e,t){var n=b(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},x=tinymce.util.Tools.resolve("tinymce.util.Promise"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),C=tinymce.util.Tools.resolve("tinymce.util.XHR"),S=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},N=function(e,n){var r=document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(S(r.width,r.clientWidth),S(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",document.body.appendChild(r),r.src=e},_=function(e,a,t){return function n(e,r){return r=r||[],w.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},T=function(e){return e&&(e=e.replace(/px$/,"")),e},A=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},R=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},t=function(e,t){var n=u(e);"string"==typeof n?C.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},I=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height:n.clientHeight}),r()},n.onerror=r},O=function(r){return new x(function(e,t){var n=new(y.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},L=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),P=Object.prototype.hasOwnProperty,U=(i=function(e,t){return t},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 n={},r=0;r<e.length;r++){var a=e[r];for(var o in a)P.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),E=L.DOM,k=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?T(e.style.marginLeft):""},M=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?T(e.style.marginTop):""},D=function(e){return e.style.borderWidth?T(e.style.borderWidth):""},z=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},B=function(e,t){return e.style[t]?e.style[t]:""},H=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},j=function(e,t,n){e.setAttribute(t,n)},F=function(e){var t,n,r,a;H(e)?(a=(r=e).parentNode,E.insertAfter(r,a),E.remove(a)):(t=e,n=E.create("figure",{"class":"image"}),E.insertAfter(n,t),n.appendChild(t),n.appendChild(E.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},W=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},J=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=A(n),W(e,r)):j(e,t,n)}},V=function(e,t){return e.style[t]?T(e.style[t]):z(e,t)},G=function(e,t){var n=A(t);e.style.marginLeft=n,e.style.marginRight=n},$=function(e,t){var n=A(t);e.style.marginTop=n,e.style.marginBottom=n},X=function(e,t){var n=A(t);e.style.borderWidth=n},q=function(e,t){e.style.borderStyle=t},K=function(e){return"FIGURE"===e.nodeName},Q=function(e,t){var n=document.createElement("img");return j(n,"style",t.style),(k(n)||""!==t.hspace)&&G(n,t.hspace),(M(n)||""!==t.vspace)&&$(n,t.vspace),(D(n)||""!==t.border)&&X(n,t.border),(B(n,"borderStyle")||""!==t.borderStyle)&&q(n,t.borderStyle),e(n.getAttribute("style"))},Y=function(e,t){return{src:z(t,"src"),alt:z(t,"alt"),title:z(t,"title"),width:V(t,"width"),height:V(t,"height"),"class":z(t,"class"),style:e(z(t,"style")),caption:H(t),hspace:k(t),vspace:M(t),border:D(t),borderStyle:B(t,"borderStyle")}},Z=function(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])},ee=function(r,a){return function(e,t,n){r(e,n),W(e,a)}},te=function(e,t,n){var r=Y(e,n);Z(n,r,t,"caption",function(e,t,n){return F(e)}),Z(n,r,t,"src",j),Z(n,r,t,"alt",j),Z(n,r,t,"title",j),Z(n,r,t,"width",J(0,e)),Z(n,r,t,"height",J(0,e)),Z(n,r,t,"class",j),Z(n,r,t,"style",ee(function(e,t){return j(e,"style",t)},e)),Z(n,r,t,"hspace",ee(G,e)),Z(n,r,t,"vspace",ee($,e)),Z(n,r,t,"border",ee(X,e)),Z(n,r,t,"borderStyle",ee(q,e))},ne=function(e,t){var n=e.dom.styles.parse(t),r=R(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},re=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},ae=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},oe=function(t){var e=re(t);return e?Y(function(e){return ne(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},ie=function(t,e){var n=function(e,t){var n=document.createElement("img");if(te(e,U(t,{caption:!1}),n),j(n,"alt",t.alt),t.caption){var r=E.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(E.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return ne(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),K(r)){var a=ae(t,r);t.selection.select(a)}else t.selection.select(r)},le=function(e,t){var n=re(e);n?t.src?function(t,e){var n,r=re(t);if(te(function(e){return ne(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),K(r.parentNode)){var a=r.parentNode;ae(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),I(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&ie(e,t)},ue=function(n,r){r.find("#style").each(function(e){var t=Q(function(e){return ne(n,e)},U({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},ce=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(l(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=R(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(T(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(T(a["margin-right"])):n.find("#hspace").value("")),a["border-width"]?n.find("#border").value(T(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ue(t,e.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(e){ue(t,e.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 o},se=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},de=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},me=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o))),se(e,t)},ge=function(e){de(e,me)},fe=function(){var e=function(e){ge(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"}]}},pe=function(e){de(e,se)},he=ge,ve=function(e){e.meta=e.control.rootControl.toJSON()},be=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src")),w.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),N(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),pe(u))}))},onbeforecall:ve},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(fe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:_(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},ye=function(e,t){return{title:"General",type:"form",items:be(e,t)}},xe=be,we=function(){return y.getOrDie("URL")},Ce=function(e){return we().createObjectURL(e)},Se=function(e){we().revokeObjectURL(e)},Ne=tinymce.util.Tools.resolve("tinymce.ui.Factory"),_e=function(){};function Te(i){var t=function(e,r,a,t){var o,n;(o=new(y.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=w.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new x(function(e,t){try{a(r,e,t,_e)}catch(n){t(n.message)}})):x.reject("Upload url missing from the settings.");var r,a}}}var Ae=function(u){return function(e){var t=Ne.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Ce(a),i=Te({url:g(u),basePath:p(u),credentials:h(u),handler:f(u)}),l=function(){r.hide(),Se(o)};return r.show(),O(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.windowManager.alert(e),l()})}},Re=".jpg,.jpeg,.png,.gif",Ie=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:Re,onchange:Ae(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Re,height:100,onchange:Ae(e)}]}};function Oe(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Le=function(t,e){var n=e.control.getRoot();he(n),t.undoManager.transact(function(){var e=U(oe(t),n.toJSON());le(t,e)}),t.editorUpload.uploadImagesAuto()};function Pe(o){function e(e){var n,t,r=oe(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:_(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),l(o)||c(o)||s(o)){var a=[ye(o,t)];l(o)&&a.push(ce(o)),(c(o)||s(o))&&a.push(Ie(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Oe(Le,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:xe(o,t),onSubmit:Oe(Le,o)});pe(n)}return{open:function(){t(o,e)}}}var Ue=function(e){e.addCommand("mceImage",Pe(e).open)},Ee=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),w.each(t.getAll("figcaption"),a))}},ke=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",Ee(!0)),e.serializer.addNodeFilter("figure",Ee(!1))})},Me=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Pe(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Pe(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){ke(e),Me(e),Ue(e)})}();
\ No newline at end of file
Index: src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/link/plugin.js	(working copy)
@@ -1,713 +1,713 @@
 (function () {
 var link = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');
 
-  var assumeExternalTargets = function (editorSettings) {
-    return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;
-  };
-  var hasContextToolbar = function (editorSettings) {
-    return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;
-  };
-  var getLinkList = function (editorSettings) {
-    return editorSettings.link_list;
-  };
-  var hasDefaultLinkTarget = function (editorSettings) {
-    return typeof editorSettings.default_link_target === 'string';
-  };
-  var getDefaultLinkTarget = function (editorSettings) {
-    return editorSettings.default_link_target;
-  };
-  var getTargetList = function (editorSettings) {
-    return editorSettings.target_list;
-  };
-  var setTargetList = function (editor, list) {
-    editor.settings.target_list = list;
-  };
-  var shouldShowTargetList = function (editorSettings) {
-    return getTargetList(editorSettings) !== false;
-  };
-  var getRelList = function (editorSettings) {
-    return editorSettings.rel_list;
-  };
-  var hasRelList = function (editorSettings) {
-    return getRelList(editorSettings) !== undefined;
-  };
-  var getLinkClassList = function (editorSettings) {
-    return editorSettings.link_class_list;
-  };
-  var hasLinkClassList = function (editorSettings) {
-    return getLinkClassList(editorSettings) !== undefined;
-  };
-  var shouldShowLinkTitle = function (editorSettings) {
-    return editorSettings.link_title !== false;
-  };
-  var allowUnsafeLinkTarget = function (editorSettings) {
-    return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;
-  };
-  var $_1b4wbxfvjjgwechi = {
-    assumeExternalTargets: assumeExternalTargets,
-    hasContextToolbar: hasContextToolbar,
-    getLinkList: getLinkList,
-    hasDefaultLinkTarget: hasDefaultLinkTarget,
-    getDefaultLinkTarget: getDefaultLinkTarget,
-    getTargetList: getTargetList,
-    setTargetList: setTargetList,
-    shouldShowTargetList: shouldShowTargetList,
-    getRelList: getRelList,
-    hasRelList: hasRelList,
-    getLinkClassList: getLinkClassList,
-    hasLinkClassList: hasLinkClassList,
-    shouldShowLinkTitle: shouldShowLinkTitle,
-    allowUnsafeLinkTarget: allowUnsafeLinkTarget
-  };
+    var assumeExternalTargets = function (editorSettings) {
+      return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;
+    };
+    var hasContextToolbar = function (editorSettings) {
+      return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;
+    };
+    var getLinkList = function (editorSettings) {
+      return editorSettings.link_list;
+    };
+    var hasDefaultLinkTarget = function (editorSettings) {
+      return typeof editorSettings.default_link_target === 'string';
+    };
+    var getDefaultLinkTarget = function (editorSettings) {
+      return editorSettings.default_link_target;
+    };
+    var getTargetList = function (editorSettings) {
+      return editorSettings.target_list;
+    };
+    var setTargetList = function (editor, list) {
+      editor.settings.target_list = list;
+    };
+    var shouldShowTargetList = function (editorSettings) {
+      return getTargetList(editorSettings) !== false;
+    };
+    var getRelList = function (editorSettings) {
+      return editorSettings.rel_list;
+    };
+    var hasRelList = function (editorSettings) {
+      return getRelList(editorSettings) !== undefined;
+    };
+    var getLinkClassList = function (editorSettings) {
+      return editorSettings.link_class_list;
+    };
+    var hasLinkClassList = function (editorSettings) {
+      return getLinkClassList(editorSettings) !== undefined;
+    };
+    var shouldShowLinkTitle = function (editorSettings) {
+      return editorSettings.link_title !== false;
+    };
+    var allowUnsafeLinkTarget = function (editorSettings) {
+      return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;
+    };
+    var Settings = {
+      assumeExternalTargets: assumeExternalTargets,
+      hasContextToolbar: hasContextToolbar,
+      getLinkList: getLinkList,
+      hasDefaultLinkTarget: hasDefaultLinkTarget,
+      getDefaultLinkTarget: getDefaultLinkTarget,
+      getTargetList: getTargetList,
+      setTargetList: setTargetList,
+      shouldShowTargetList: shouldShowTargetList,
+      getRelList: getRelList,
+      hasRelList: hasRelList,
+      getLinkClassList: getLinkClassList,
+      hasLinkClassList: hasLinkClassList,
+      shouldShowLinkTitle: shouldShowLinkTitle,
+      allowUnsafeLinkTarget: allowUnsafeLinkTarget
+    };
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.Env');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.Env');
 
-  var appendClickRemove = function (link, evt) {
-    document.body.appendChild(link);
-    link.dispatchEvent(evt);
-    document.body.removeChild(link);
-  };
-  var open$$1 = function (url) {
-    if (!global$3.ie || global$3.ie > 10) {
-      var link = document.createElement('a');
-      link.target = '_blank';
-      link.href = url;
-      link.rel = 'noreferrer noopener';
-      var evt = document.createEvent('MouseEvents');
-      evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
-      appendClickRemove(link, evt);
-    } else {
-      var win = window.open('', '_blank');
-      if (win) {
-        win.opener = null;
-        var doc = win.document;
-        doc.open();
-        doc.write('<meta http-equiv="refresh" content="0; url=' + global$2.DOM.encode(url) + '">');
-        doc.close();
+    var appendClickRemove = function (link, evt) {
+      document.body.appendChild(link);
+      link.dispatchEvent(evt);
+      document.body.removeChild(link);
+    };
+    var open$$1 = function (url) {
+      if (!global$3.ie || global$3.ie > 10) {
+        var link = document.createElement('a');
+        link.target = '_blank';
+        link.href = url;
+        link.rel = 'noreferrer noopener';
+        var evt = document.createEvent('MouseEvents');
+        evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+        appendClickRemove(link, evt);
+      } else {
+        var win = window.open('', '_blank');
+        if (win) {
+          win.opener = null;
+          var doc = win.document;
+          doc.open();
+          doc.write('<meta http-equiv="refresh" content="0; url=' + global$2.DOM.encode(url) + '">');
+          doc.close();
+        }
       }
-    }
-  };
-  var $_du0gebfwjjgwechl = { open: open$$1 };
+    };
+    var OpenUrl = { open: open$$1 };
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var toggleTargetRules = function (rel, isUnsafe) {
-    var rules = ['noopener'];
-    var newRel = rel ? rel.split(/\s+/) : [];
-    var toString = function (rel) {
-      return global$4.trim(rel.sort().join(' '));
+    var toggleTargetRules = function (rel, isUnsafe) {
+      var rules = ['noopener'];
+      var newRel = rel ? rel.split(/\s+/) : [];
+      var toString = function (rel) {
+        return global$4.trim(rel.sort().join(' '));
+      };
+      var addTargetRules = function (rel) {
+        rel = removeTargetRules(rel);
+        return rel.length ? rel.concat(rules) : rules;
+      };
+      var removeTargetRules = function (rel) {
+        return rel.filter(function (val) {
+          return global$4.inArray(rules, val) === -1;
+        });
+      };
+      newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);
+      return newRel.length ? toString(newRel) : null;
     };
-    var addTargetRules = function (rel) {
-      rel = removeTargetRules(rel);
-      return rel.length ? rel.concat(rules) : rules;
+    var trimCaretContainers = function (text) {
+      return text.replace(/\uFEFF/g, '');
     };
-    var removeTargetRules = function (rel) {
-      return rel.filter(function (val) {
-        return global$4.inArray(rules, val) === -1;
-      });
+    var getAnchorElement = function (editor, selectedElm) {
+      selectedElm = selectedElm || editor.selection.getNode();
+      if (isImageFigure(selectedElm)) {
+        return editor.dom.select('a[href]', selectedElm)[0];
+      } else {
+        return editor.dom.getParent(selectedElm, 'a[href]');
+      }
     };
-    newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);
-    return newRel.length ? toString(newRel) : null;
-  };
-  var trimCaretContainers = function (text) {
-    return text.replace(/\uFEFF/g, '');
-  };
-  var getAnchorElement = function (editor, selectedElm) {
-    selectedElm = selectedElm || editor.selection.getNode();
-    if (isImageFigure(selectedElm)) {
-      return editor.dom.select('a[href]', selectedElm)[0];
-    } else {
-      return editor.dom.getParent(selectedElm, 'a[href]');
-    }
-  };
-  var getAnchorText = function (selection, anchorElm) {
-    var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });
-    return trimCaretContainers(text);
-  };
-  var isLink = function (elm) {
-    return elm && elm.nodeName === 'A' && elm.href;
-  };
-  var hasLinks = function (elements) {
-    return global$4.grep(elements, isLink).length > 0;
-  };
-  var isOnlyTextSelected = function (html) {
-    if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') === -1)) {
-      return false;
-    }
-    return true;
-  };
-  var isImageFigure = function (node) {
-    return node && node.nodeName === 'FIGURE' && /\bimage\b/i.test(node.className);
-  };
-  var link = function (editor, attachState) {
-    return function (data) {
-      editor.undoManager.transact(function () {
-        var selectedElm = editor.selection.getNode();
-        var anchorElm = getAnchorElement(editor, selectedElm);
-        var linkAttrs = {
-          href: data.href,
-          target: data.target ? data.target : null,
-          rel: data.rel ? data.rel : null,
-          class: data.class ? data.class : null,
-          title: data.title ? data.title : null
-        };
-        if (!$_1b4wbxfvjjgwechi.hasRelList(editor.settings) && $_1b4wbxfvjjgwechi.allowUnsafeLinkTarget(editor.settings) === false) {
-          linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');
-        }
-        if (data.href === attachState.href) {
-          attachState.attach();
-          attachState = {};
-        }
-        if (anchorElm) {
-          editor.focus();
-          if (data.hasOwnProperty('text')) {
-            if ('innerText' in anchorElm) {
-              anchorElm.innerText = data.text;
+    var getAnchorText = function (selection, anchorElm) {
+      var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });
+      return trimCaretContainers(text);
+    };
+    var isLink = function (elm) {
+      return elm && elm.nodeName === 'A' && elm.href;
+    };
+    var hasLinks = function (elements) {
+      return global$4.grep(elements, isLink).length > 0;
+    };
+    var isOnlyTextSelected = function (html) {
+      if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') === -1)) {
+        return false;
+      }
+      return true;
+    };
+    var isImageFigure = function (node) {
+      return node && node.nodeName === 'FIGURE' && /\bimage\b/i.test(node.className);
+    };
+    var link = function (editor, attachState) {
+      return function (data) {
+        editor.undoManager.transact(function () {
+          var selectedElm = editor.selection.getNode();
+          var anchorElm = getAnchorElement(editor, selectedElm);
+          var linkAttrs = {
+            href: data.href,
+            target: data.target ? data.target : null,
+            rel: data.rel ? data.rel : null,
+            class: data.class ? data.class : null,
+            title: data.title ? data.title : null
+          };
+          if (!Settings.hasRelList(editor.settings) && Settings.allowUnsafeLinkTarget(editor.settings) === false) {
+            linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');
+          }
+          if (data.href === attachState.href) {
+            attachState.attach();
+            attachState = {};
+          }
+          if (anchorElm) {
+            editor.focus();
+            if (data.hasOwnProperty('text')) {
+              if ('innerText' in anchorElm) {
+                anchorElm.innerText = data.text;
+              } else {
+                anchorElm.textContent = data.text;
+              }
+            }
+            editor.dom.setAttribs(anchorElm, linkAttrs);
+            editor.selection.select(anchorElm);
+            editor.undoManager.add();
+          } else {
+            if (isImageFigure(selectedElm)) {
+              linkImageFigure(editor, selectedElm, linkAttrs);
+            } else if (data.hasOwnProperty('text')) {
+              editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));
             } else {
-              anchorElm.textContent = data.text;
+              editor.execCommand('mceInsertLink', false, linkAttrs);
             }
           }
-          editor.dom.setAttribs(anchorElm, linkAttrs);
-          editor.selection.select(anchorElm);
-          editor.undoManager.add();
-        } else {
-          if (isImageFigure(selectedElm)) {
-            linkImageFigure(editor, selectedElm, linkAttrs);
-          } else if (data.hasOwnProperty('text')) {
-            editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));
+        });
+      };
+    };
+    var unlink = function (editor) {
+      return function () {
+        editor.undoManager.transact(function () {
+          var node = editor.selection.getNode();
+          if (isImageFigure(node)) {
+            unlinkImageFigure(editor, node);
           } else {
-            editor.execCommand('mceInsertLink', false, linkAttrs);
+            editor.execCommand('unlink');
           }
-        }
-      });
+        });
+      };
     };
-  };
-  var unlink = function (editor) {
-    return function () {
-      editor.undoManager.transact(function () {
-        var node = editor.selection.getNode();
-        if (isImageFigure(node)) {
-          unlinkImageFigure(editor, node);
-        } else {
-          editor.execCommand('unlink');
+    var unlinkImageFigure = function (editor, fig) {
+      var a, img;
+      img = editor.dom.select('img', fig)[0];
+      if (img) {
+        a = editor.dom.getParents(img, 'a[href]', fig)[0];
+        if (a) {
+          a.parentNode.insertBefore(img, a);
+          editor.dom.remove(a);
         }
-      });
+      }
     };
-  };
-  var unlinkImageFigure = function (editor, fig) {
-    var a, img;
-    img = editor.dom.select('img', fig)[0];
-    if (img) {
-      a = editor.dom.getParents(img, 'a[href]', fig)[0];
-      if (a) {
-        a.parentNode.insertBefore(img, a);
-        editor.dom.remove(a);
+    var linkImageFigure = function (editor, fig, attrs) {
+      var a, img;
+      img = editor.dom.select('img', fig)[0];
+      if (img) {
+        a = editor.dom.create('a', attrs);
+        img.parentNode.insertBefore(a, img);
+        a.appendChild(img);
       }
-    }
-  };
-  var linkImageFigure = function (editor, fig, attrs) {
-    var a, img;
-    img = editor.dom.select('img', fig)[0];
-    if (img) {
-      a = editor.dom.create('a', attrs);
-      img.parentNode.insertBefore(a, img);
-      a.appendChild(img);
-    }
-  };
-  var $_5298ug0jjgweci0 = {
-    link: link,
-    unlink: unlink,
-    isLink: isLink,
-    hasLinks: hasLinks,
-    isOnlyTextSelected: isOnlyTextSelected,
-    getAnchorElement: getAnchorElement,
-    getAnchorText: getAnchorText,
-    toggleTargetRules: toggleTargetRules
-  };
+    };
+    var Utils = {
+      link: link,
+      unlink: unlink,
+      isLink: isLink,
+      hasLinks: hasLinks,
+      isOnlyTextSelected: isOnlyTextSelected,
+      getAnchorElement: getAnchorElement,
+      getAnchorText: getAnchorText,
+      toggleTargetRules: toggleTargetRules
+    };
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');
 
-  var attachState = {};
-  var createLinkList = function (editor, callback) {
-    var linkList = $_1b4wbxfvjjgwechi.getLinkList(editor.settings);
-    if (typeof linkList === 'string') {
-      global$6.send({
-        url: linkList,
-        success: function (text) {
-          callback(editor, JSON.parse(text));
-        }
-      });
-    } else if (typeof linkList === 'function') {
-      linkList(function (list) {
-        callback(editor, list);
-      });
-    } else {
-      callback(editor, linkList);
-    }
-  };
-  var buildListItems = function (inputList, itemCallback, startItems) {
-    var appendItems = function (values, output) {
-      output = output || [];
-      global$4.each(values, function (item) {
-        var menuItem = { text: item.text || item.title };
-        if (item.menu) {
-          menuItem.menu = appendItems(item.menu);
-        } else {
-          menuItem.value = item.value;
-          if (itemCallback) {
-            itemCallback(menuItem);
+    var attachState = {};
+    var createLinkList = function (editor, callback) {
+      var linkList = Settings.getLinkList(editor.settings);
+      if (typeof linkList === 'string') {
+        global$6.send({
+          url: linkList,
+          success: function (text) {
+            callback(editor, JSON.parse(text));
           }
-        }
-        output.push(menuItem);
-      });
-      return output;
-    };
-    return appendItems(inputList, startItems || []);
-  };
-  var delayedConfirm = function (editor, message, callback) {
-    var rng = editor.selection.getRng();
-    global$5.setEditorTimeout(editor, function () {
-      editor.windowManager.confirm(message, function (state) {
-        editor.selection.setRng(rng);
-        callback(state);
-      });
-    });
-  };
-  var showDialog = function (editor, linkList) {
-    var data = {};
-    var selection = editor.selection;
-    var dom = editor.dom;
-    var anchorElm, initialText;
-    var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;
-    var linkListChangeHandler = function (e) {
-      var textCtrl = win.find('#text');
-      if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {
-        textCtrl.value(e.control.text());
+        });
+      } else if (typeof linkList === 'function') {
+        linkList(function (list) {
+          callback(editor, list);
+        });
+      } else {
+        callback(editor, linkList);
       }
-      win.find('#href').value(e.control.value());
     };
-    var buildAnchorListControl = function (url) {
-      var anchorList = [];
-      global$4.each(editor.dom.select('a:not([href])'), function (anchor) {
-        var id = anchor.name || anchor.id;
-        if (id) {
-          anchorList.push({
-            text: id,
-            value: '#' + id,
-            selected: url.indexOf('#' + id) !== -1
-          });
-        }
-      });
-      if (anchorList.length) {
-        anchorList.unshift({
-          text: 'None',
-          value: ''
+    var buildListItems = function (inputList, itemCallback, startItems) {
+      var appendItems = function (values, output) {
+        output = output || [];
+        global$4.each(values, function (item) {
+          var menuItem = { text: item.text || item.title };
+          if (item.menu) {
+            menuItem.menu = appendItems(item.menu);
+          } else {
+            menuItem.value = item.value;
+            if (itemCallback) {
+              itemCallback(menuItem);
+            }
+          }
+          output.push(menuItem);
         });
-        return {
-          name: 'anchor',
-          type: 'listbox',
-          label: 'Anchors',
-          values: anchorList,
-          onselect: linkListChangeHandler
-        };
-      }
+        return output;
+      };
+      return appendItems(inputList, startItems || []);
     };
-    var updateText = function () {
-      if (!initialText && onlyText && !data.text) {
-        this.parent().parent().find('#text')[0].value(this.value());
-      }
-    };
-    var urlChange = function (e) {
-      var meta = e.meta || {};
-      if (linkListCtrl) {
-        linkListCtrl.value(editor.convertURL(this.value(), 'href'));
-      }
-      global$4.each(e.meta, function (value, key) {
-        var inp = win.find('#' + key);
-        if (key === 'text') {
-          if (initialText.length === 0) {
-            inp.value(value);
-            data.text = value;
-          }
-        } else {
-          inp.value(value);
-        }
+    var delayedConfirm = function (editor, message, callback) {
+      var rng = editor.selection.getRng();
+      global$5.setEditorTimeout(editor, function () {
+        editor.windowManager.confirm(message, function (state) {
+          editor.selection.setRng(rng);
+          callback(state);
+        });
       });
-      if (meta.attach) {
-        attachState = {
-          href: this.value(),
-          attach: meta.attach
-        };
-      }
-      if (!meta.text) {
-        updateText.call(this);
-      }
     };
-    var onBeforeCall = function (e) {
-      e.meta = win.toJSON();
-    };
-    onlyText = $_5298ug0jjgweci0.isOnlyTextSelected(selection.getContent());
-    anchorElm = $_5298ug0jjgweci0.getAnchorElement(editor);
-    data.text = initialText = $_5298ug0jjgweci0.getAnchorText(editor.selection, anchorElm);
-    data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
-    if (anchorElm) {
-      data.target = dom.getAttrib(anchorElm, 'target');
-    } else if ($_1b4wbxfvjjgwechi.hasDefaultLinkTarget(editor.settings)) {
-      data.target = $_1b4wbxfvjjgwechi.getDefaultLinkTarget(editor.settings);
-    }
-    if (value = dom.getAttrib(anchorElm, 'rel')) {
-      data.rel = value;
-    }
-    if (value = dom.getAttrib(anchorElm, 'class')) {
-      data.class = value;
-    }
-    if (value = dom.getAttrib(anchorElm, 'title')) {
-      data.title = value;
-    }
-    if (onlyText) {
-      textListCtrl = {
-        name: 'text',
-        type: 'textbox',
-        size: 40,
-        label: 'Text to display',
-        onchange: function () {
-          data.text = this.value();
+    var showDialog = function (editor, linkList) {
+      var data = {};
+      var selection = editor.selection;
+      var dom = editor.dom;
+      var anchorElm, initialText;
+      var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;
+      var linkListChangeHandler = function (e) {
+        var textCtrl = win.find('#text');
+        if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {
+          textCtrl.value(e.control.text());
         }
+        win.find('#href').value(e.control.value());
       };
-    }
-    if (linkList) {
-      linkListCtrl = {
-        type: 'listbox',
-        label: 'Link list',
-        values: buildListItems(linkList, function (item) {
-          item.value = editor.convertURL(item.value || item.url, 'href');
-        }, [{
+      var buildAnchorListControl = function (url) {
+        var anchorList = [];
+        global$4.each(editor.dom.select('a:not([href])'), function (anchor) {
+          var id = anchor.name || anchor.id;
+          if (id) {
+            anchorList.push({
+              text: id,
+              value: '#' + id,
+              selected: url.indexOf('#' + id) !== -1
+            });
+          }
+        });
+        if (anchorList.length) {
+          anchorList.unshift({
             text: 'None',
             value: ''
-          }]),
-        onselect: linkListChangeHandler,
-        value: editor.convertURL(data.href, 'href'),
-        onPostRender: function () {
-          linkListCtrl = this;
+          });
+          return {
+            name: 'anchor',
+            type: 'listbox',
+            label: 'Anchors',
+            values: anchorList,
+            onselect: linkListChangeHandler
+          };
         }
       };
-    }
-    if ($_1b4wbxfvjjgwechi.shouldShowTargetList(editor.settings)) {
-      if ($_1b4wbxfvjjgwechi.getTargetList(editor.settings) === undefined) {
-        $_1b4wbxfvjjgwechi.setTargetList(editor, [
-          {
-            text: 'None',
-            value: ''
-          },
-          {
-            text: 'New window',
-            value: '_blank'
-          }
-        ]);
-      }
-      targetListCtrl = {
-        name: 'target',
-        type: 'listbox',
-        label: 'Target',
-        values: buildListItems($_1b4wbxfvjjgwechi.getTargetList(editor.settings))
+      var updateText = function () {
+        if (!initialText && onlyText && !data.text) {
+          this.parent().parent().find('#text')[0].value(this.value());
+        }
       };
-    }
-    if ($_1b4wbxfvjjgwechi.hasRelList(editor.settings)) {
-      relListCtrl = {
-        name: 'rel',
-        type: 'listbox',
-        label: 'Rel',
-        values: buildListItems($_1b4wbxfvjjgwechi.getRelList(editor.settings), function (item) {
-          if ($_1b4wbxfvjjgwechi.allowUnsafeLinkTarget(editor.settings) === false) {
-            item.value = $_5298ug0jjgweci0.toggleTargetRules(item.value, data.target === '_blank');
+      var urlChange = function (e) {
+        var meta = e.meta || {};
+        if (linkListCtrl) {
+          linkListCtrl.value(editor.convertURL(this.value(), 'href'));
+        }
+        global$4.each(e.meta, function (value, key) {
+          var inp = win.find('#' + key);
+          if (key === 'text') {
+            if (initialText.length === 0) {
+              inp.value(value);
+              data.text = value;
+            }
+          } else {
+            inp.value(value);
           }
-        })
+        });
+        if (meta.attach) {
+          attachState = {
+            href: this.value(),
+            attach: meta.attach
+          };
+        }
+        if (!meta.text) {
+          updateText.call(this);
+        }
       };
-    }
-    if ($_1b4wbxfvjjgwechi.hasLinkClassList(editor.settings)) {
-      classListCtrl = {
-        name: 'class',
-        type: 'listbox',
-        label: 'Class',
-        values: buildListItems($_1b4wbxfvjjgwechi.getLinkClassList(editor.settings), function (item) {
-          if (item.value) {
-            item.textStyle = function () {
-              return editor.formatter.getCssText({
-                inline: 'a',
-                classes: [item.value]
-              });
-            };
-          }
-        })
+      var onBeforeCall = function (e) {
+        e.meta = win.toJSON();
       };
-    }
-    if ($_1b4wbxfvjjgwechi.shouldShowLinkTitle(editor.settings)) {
-      linkTitleCtrl = {
-        name: 'title',
-        type: 'textbox',
-        label: 'Title',
-        value: data.title
-      };
-    }
-    win = editor.windowManager.open({
-      title: 'Insert link',
-      data: data,
-      body: [
-        {
-          name: 'href',
-          type: 'filepicker',
-          filetype: 'file',
+      onlyText = Utils.isOnlyTextSelected(selection.getContent());
+      anchorElm = Utils.getAnchorElement(editor);
+      data.text = initialText = Utils.getAnchorText(editor.selection, anchorElm);
+      data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
+      if (anchorElm) {
+        data.target = dom.getAttrib(anchorElm, 'target');
+      } else if (Settings.hasDefaultLinkTarget(editor.settings)) {
+        data.target = Settings.getDefaultLinkTarget(editor.settings);
+      }
+      if (value = dom.getAttrib(anchorElm, 'rel')) {
+        data.rel = value;
+      }
+      if (value = dom.getAttrib(anchorElm, 'class')) {
+        data.class = value;
+      }
+      if (value = dom.getAttrib(anchorElm, 'title')) {
+        data.title = value;
+      }
+      if (onlyText) {
+        textListCtrl = {
+          name: 'text',
+          type: 'textbox',
           size: 40,
-          autofocus: true,
-          label: 'Url',
-          onchange: urlChange,
-          onkeyup: updateText,
-          onpaste: updateText,
-          onbeforecall: onBeforeCall
-        },
-        textListCtrl,
-        linkTitleCtrl,
-        buildAnchorListControl(data.href),
-        linkListCtrl,
-        relListCtrl,
-        targetListCtrl,
-        classListCtrl
-      ],
-      onSubmit: function (e) {
-        var assumeExternalTargets = $_1b4wbxfvjjgwechi.assumeExternalTargets(editor.settings);
-        var insertLink = $_5298ug0jjgweci0.link(editor, attachState);
-        var removeLink = $_5298ug0jjgweci0.unlink(editor);
-        var resultData = global$4.extend({}, data, e.data);
-        var href = resultData.href;
-        if (!href) {
-          removeLink();
-          return;
-        }
-        if (!onlyText || resultData.text === initialText) {
-          delete resultData.text;
-        }
-        if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {
-          delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {
-            if (state) {
-              resultData.href = 'mailto:' + href;
+          label: 'Text to display',
+          onchange: function () {
+            data.text = this.value();
+          }
+        };
+      }
+      if (linkList) {
+        linkListCtrl = {
+          type: 'listbox',
+          label: 'Link list',
+          values: buildListItems(linkList, function (item) {
+            item.value = editor.convertURL(item.value || item.url, 'href');
+          }, [{
+              text: 'None',
+              value: ''
+            }]),
+          onselect: linkListChangeHandler,
+          value: editor.convertURL(data.href, 'href'),
+          onPostRender: function () {
+            linkListCtrl = this;
+          }
+        };
+      }
+      if (Settings.shouldShowTargetList(editor.settings)) {
+        if (Settings.getTargetList(editor.settings) === undefined) {
+          Settings.setTargetList(editor, [
+            {
+              text: 'None',
+              value: ''
+            },
+            {
+              text: 'New window',
+              value: '_blank'
             }
-            insertLink(resultData);
-          });
-          return;
+          ]);
         }
-        if (assumeExternalTargets === true && !/^\w+:/i.test(href) || assumeExternalTargets === false && /^\s*www[\.|\d\.]/i.test(href)) {
-          delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {
-            if (state) {
-              resultData.href = 'http://' + href;
+        targetListCtrl = {
+          name: 'target',
+          type: 'listbox',
+          label: 'Target',
+          values: buildListItems(Settings.getTargetList(editor.settings))
+        };
+      }
+      if (Settings.hasRelList(editor.settings)) {
+        relListCtrl = {
+          name: 'rel',
+          type: 'listbox',
+          label: 'Rel',
+          values: buildListItems(Settings.getRelList(editor.settings), function (item) {
+            if (Settings.allowUnsafeLinkTarget(editor.settings) === false) {
+              item.value = Utils.toggleTargetRules(item.value, data.target === '_blank');
             }
-            insertLink(resultData);
-          });
-          return;
+          })
+        };
+      }
+      if (Settings.hasLinkClassList(editor.settings)) {
+        classListCtrl = {
+          name: 'class',
+          type: 'listbox',
+          label: 'Class',
+          values: buildListItems(Settings.getLinkClassList(editor.settings), function (item) {
+            if (item.value) {
+              item.textStyle = function () {
+                return editor.formatter.getCssText({
+                  inline: 'a',
+                  classes: [item.value]
+                });
+              };
+            }
+          })
+        };
+      }
+      if (Settings.shouldShowLinkTitle(editor.settings)) {
+        linkTitleCtrl = {
+          name: 'title',
+          type: 'textbox',
+          label: 'Title',
+          value: data.title
+        };
+      }
+      win = editor.windowManager.open({
+        title: 'Insert link',
+        data: data,
+        body: [
+          {
+            name: 'href',
+            type: 'filepicker',
+            filetype: 'file',
+            size: 40,
+            autofocus: true,
+            label: 'Url',
+            onchange: urlChange,
+            onkeyup: updateText,
+            onpaste: updateText,
+            onbeforecall: onBeforeCall
+          },
+          textListCtrl,
+          linkTitleCtrl,
+          buildAnchorListControl(data.href),
+          linkListCtrl,
+          relListCtrl,
+          targetListCtrl,
+          classListCtrl
+        ],
+        onSubmit: function (e) {
+          var assumeExternalTargets = Settings.assumeExternalTargets(editor.settings);
+          var insertLink = Utils.link(editor, attachState);
+          var removeLink = Utils.unlink(editor);
+          var resultData = global$4.extend({}, data, e.data);
+          var href = resultData.href;
+          if (!href) {
+            removeLink();
+            return;
+          }
+          if (!onlyText || resultData.text === initialText) {
+            delete resultData.text;
+          }
+          if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {
+            delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {
+              if (state) {
+                resultData.href = 'mailto:' + href;
+              }
+              insertLink(resultData);
+            });
+            return;
+          }
+          if (assumeExternalTargets === true && !/^\w+:/i.test(href) || assumeExternalTargets === false && /^\s*www[\.|\d\.]/i.test(href)) {
+            delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {
+              if (state) {
+                resultData.href = 'http://' + href;
+              }
+              insertLink(resultData);
+            });
+            return;
+          }
+          insertLink(resultData);
         }
-        insertLink(resultData);
-      }
-    });
-  };
-  var open$1 = function (editor) {
-    createLinkList(editor, showDialog);
-  };
-  var $_dxaplrg2jjgweci6 = { open: open$1 };
+      });
+    };
+    var open$1 = function (editor) {
+      createLinkList(editor, showDialog);
+    };
+    var Dialog = { open: open$1 };
 
-  var getLink = function (editor, elm) {
-    return editor.dom.getParent(elm, 'a[href]');
-  };
-  var getSelectedLink = function (editor) {
-    return getLink(editor, editor.selection.getStart());
-  };
-  var getHref = function (elm) {
-    var href = elm.getAttribute('data-mce-href');
-    return href ? href : elm.getAttribute('href');
-  };
-  var isContextMenuVisible = function (editor) {
-    var contextmenu = editor.plugins.contextmenu;
-    return contextmenu ? contextmenu.isContextMenuVisible() : false;
-  };
-  var hasOnlyAltModifier = function (e) {
-    return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;
-  };
-  var gotoLink = function (editor, a) {
-    if (a) {
-      var href = getHref(a);
-      if (/^#/.test(href)) {
-        var targetEl = editor.$(href);
-        if (targetEl.length) {
-          editor.selection.scrollIntoView(targetEl[0], true);
+    var getLink = function (editor, elm) {
+      return editor.dom.getParent(elm, 'a[href]');
+    };
+    var getSelectedLink = function (editor) {
+      return getLink(editor, editor.selection.getStart());
+    };
+    var getHref = function (elm) {
+      var href = elm.getAttribute('data-mce-href');
+      return href ? href : elm.getAttribute('href');
+    };
+    var isContextMenuVisible = function (editor) {
+      var contextmenu = editor.plugins.contextmenu;
+      return contextmenu ? contextmenu.isContextMenuVisible() : false;
+    };
+    var hasOnlyAltModifier = function (e) {
+      return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;
+    };
+    var gotoLink = function (editor, a) {
+      if (a) {
+        var href = getHref(a);
+        if (/^#/.test(href)) {
+          var targetEl = editor.$(href);
+          if (targetEl.length) {
+            editor.selection.scrollIntoView(targetEl[0], true);
+          }
+        } else {
+          OpenUrl.open(a.href);
         }
-      } else {
-        $_du0gebfwjjgwechl.open(a.href);
       }
-    }
-  };
-  var openDialog = function (editor) {
-    return function () {
-      $_dxaplrg2jjgweci6.open(editor);
     };
-  };
-  var gotoSelectedLink = function (editor) {
-    return function () {
-      gotoLink(editor, getSelectedLink(editor));
+    var openDialog = function (editor) {
+      return function () {
+        Dialog.open(editor);
+      };
     };
-  };
-  var leftClickedOnAHref = function (editor) {
-    return function (elm) {
-      var sel, rng, node;
-      if ($_1b4wbxfvjjgwechi.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && $_5298ug0jjgweci0.isLink(elm)) {
-        sel = editor.selection;
-        rng = sel.getRng();
-        node = rng.startContainer;
-        if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {
-          return true;
+    var gotoSelectedLink = function (editor) {
+      return function () {
+        gotoLink(editor, getSelectedLink(editor));
+      };
+    };
+    var leftClickedOnAHref = function (editor) {
+      return function (elm) {
+        var sel, rng, node;
+        if (Settings.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && Utils.isLink(elm)) {
+          sel = editor.selection;
+          rng = sel.getRng();
+          node = rng.startContainer;
+          if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {
+            return true;
+          }
         }
-      }
-      return false;
+        return false;
+      };
     };
-  };
-  var setupGotoLinks = function (editor) {
-    editor.on('click', function (e) {
-      var link = getLink(editor, e.target);
-      if (link && global$1.metaKeyPressed(e)) {
-        e.preventDefault();
-        gotoLink(editor, link);
-      }
-    });
-    editor.on('keydown', function (e) {
-      var link = getSelectedLink(editor);
-      if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {
-        e.preventDefault();
-        gotoLink(editor, link);
-      }
-    });
-  };
-  var toggleActiveState = function (editor) {
-    return function () {
-      var self = this;
-      editor.on('nodechange', function (e) {
-        self.active(!editor.readonly && !!$_5298ug0jjgweci0.getAnchorElement(editor, e.element));
+    var setupGotoLinks = function (editor) {
+      editor.on('click', function (e) {
+        var link = getLink(editor, e.target);
+        if (link && global$1.metaKeyPressed(e)) {
+          e.preventDefault();
+          gotoLink(editor, link);
+        }
       });
+      editor.on('keydown', function (e) {
+        var link = getSelectedLink(editor);
+        if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {
+          e.preventDefault();
+          gotoLink(editor, link);
+        }
+      });
     };
-  };
-  var toggleViewLinkState = function (editor) {
-    return function () {
-      var self = this;
-      var toggleVisibility = function (e) {
-        if ($_5298ug0jjgweci0.hasLinks(e.parents)) {
-          self.show();
-        } else {
+    var toggleActiveState = function (editor) {
+      return function () {
+        var self = this;
+        editor.on('nodechange', function (e) {
+          self.active(!editor.readonly && !!Utils.getAnchorElement(editor, e.element));
+        });
+      };
+    };
+    var toggleViewLinkState = function (editor) {
+      return function () {
+        var self = this;
+        var toggleVisibility = function (e) {
+          if (Utils.hasLinks(e.parents)) {
+            self.show();
+          } else {
+            self.hide();
+          }
+        };
+        if (!Utils.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {
           self.hide();
         }
+        editor.on('nodechange', toggleVisibility);
+        self.on('remove', function () {
+          editor.off('nodechange', toggleVisibility);
+        });
       };
-      if (!$_5298ug0jjgweci0.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {
-        self.hide();
-      }
-      editor.on('nodechange', toggleVisibility);
-      self.on('remove', function () {
-        editor.off('nodechange', toggleVisibility);
-      });
     };
-  };
-  var $_8hceq8ftjjgweche = {
-    openDialog: openDialog,
-    gotoSelectedLink: gotoSelectedLink,
-    leftClickedOnAHref: leftClickedOnAHref,
-    setupGotoLinks: setupGotoLinks,
-    toggleActiveState: toggleActiveState,
-    toggleViewLinkState: toggleViewLinkState
-  };
+    var Actions = {
+      openDialog: openDialog,
+      gotoSelectedLink: gotoSelectedLink,
+      leftClickedOnAHref: leftClickedOnAHref,
+      setupGotoLinks: setupGotoLinks,
+      toggleActiveState: toggleActiveState,
+      toggleViewLinkState: toggleViewLinkState
+    };
 
-  var register = function (editor) {
-    editor.addCommand('mceLink', $_8hceq8ftjjgweche.openDialog(editor));
-  };
-  var $_bauc80fsjjgwechc = { register: register };
+    var register = function (editor) {
+      editor.addCommand('mceLink', Actions.openDialog(editor));
+    };
+    var Commands = { register: register };
 
-  var setup = function (editor) {
-    editor.addShortcut('Meta+K', '', $_8hceq8ftjjgweche.openDialog(editor));
-  };
-  var $_49u4p1g5jjgwecie = { setup: setup };
+    var setup = function (editor) {
+      editor.addShortcut('Meta+K', '', Actions.openDialog(editor));
+    };
+    var Keyboard = { setup: setup };
 
-  var setupButtons = function (editor) {
-    editor.addButton('link', {
-      active: false,
-      icon: 'link',
-      tooltip: 'Insert/edit link',
-      onclick: $_8hceq8ftjjgweche.openDialog(editor),
-      onpostrender: $_8hceq8ftjjgweche.toggleActiveState(editor)
-    });
-    editor.addButton('unlink', {
-      active: false,
-      icon: 'unlink',
-      tooltip: 'Remove link',
-      onclick: $_5298ug0jjgweci0.unlink(editor),
-      onpostrender: $_8hceq8ftjjgweche.toggleActiveState(editor)
-    });
-    if (editor.addContextToolbar) {
-      editor.addButton('openlink', {
+    var setupButtons = function (editor) {
+      editor.addButton('link', {
+        active: false,
+        icon: 'link',
+        tooltip: 'Insert/edit link',
+        onclick: Actions.openDialog(editor),
+        onpostrender: Actions.toggleActiveState(editor)
+      });
+      editor.addButton('unlink', {
+        active: false,
+        icon: 'unlink',
+        tooltip: 'Remove link',
+        onclick: Utils.unlink(editor),
+        onpostrender: Actions.toggleActiveState(editor)
+      });
+      if (editor.addContextToolbar) {
+        editor.addButton('openlink', {
+          icon: 'newtab',
+          tooltip: 'Open link',
+          onclick: Actions.gotoSelectedLink(editor)
+        });
+      }
+    };
+    var setupMenuItems = function (editor) {
+      editor.addMenuItem('openlink', {
+        text: 'Open link',
         icon: 'newtab',
-        tooltip: 'Open link',
-        onclick: $_8hceq8ftjjgweche.gotoSelectedLink(editor)
+        onclick: Actions.gotoSelectedLink(editor),
+        onPostRender: Actions.toggleViewLinkState(editor),
+        prependToContext: true
       });
-    }
-  };
-  var setupMenuItems = function (editor) {
-    editor.addMenuItem('openlink', {
-      text: 'Open link',
-      icon: 'newtab',
-      onclick: $_8hceq8ftjjgweche.gotoSelectedLink(editor),
-      onPostRender: $_8hceq8ftjjgweche.toggleViewLinkState(editor),
-      prependToContext: true
+      editor.addMenuItem('link', {
+        icon: 'link',
+        text: 'Link',
+        shortcut: 'Meta+K',
+        onclick: Actions.openDialog(editor),
+        stateSelector: 'a[href]',
+        context: 'insert',
+        prependToContext: true
+      });
+      editor.addMenuItem('unlink', {
+        icon: 'unlink',
+        text: 'Remove link',
+        onclick: Utils.unlink(editor),
+        stateSelector: 'a[href]'
+      });
+    };
+    var setupContextToolbars = function (editor) {
+      if (editor.addContextToolbar) {
+        editor.addContextToolbar(Actions.leftClickedOnAHref(editor), 'openlink | link unlink');
+      }
+    };
+    var Controls = {
+      setupButtons: setupButtons,
+      setupMenuItems: setupMenuItems,
+      setupContextToolbars: setupContextToolbars
+    };
+
+    global.add('link', function (editor) {
+      Controls.setupButtons(editor);
+      Controls.setupMenuItems(editor);
+      Controls.setupContextToolbars(editor);
+      Actions.setupGotoLinks(editor);
+      Commands.register(editor);
+      Keyboard.setup(editor);
     });
-    editor.addMenuItem('link', {
-      icon: 'link',
-      text: 'Link',
-      shortcut: 'Meta+K',
-      onclick: $_8hceq8ftjjgweche.openDialog(editor),
-      stateSelector: 'a[href]',
-      context: 'insert',
-      prependToContext: true
-    });
-    editor.addMenuItem('unlink', {
-      icon: 'unlink',
-      text: 'Remove link',
-      onclick: $_5298ug0jjgweci0.unlink(editor),
-      stateSelector: 'a[href]'
-    });
-  };
-  var setupContextToolbars = function (editor) {
-    if (editor.addContextToolbar) {
-      editor.addContextToolbar($_8hceq8ftjjgweche.leftClickedOnAHref(editor), 'openlink | link unlink');
+    function Plugin () {
     }
-  };
-  var $_bn93cg6jjgwecif = {
-    setupButtons: setupButtons,
-    setupMenuItems: setupMenuItems,
-    setupContextToolbars: setupContextToolbars
-  };
 
-  global.add('link', function (editor) {
-    $_bn93cg6jjgwecif.setupButtons(editor);
-    $_bn93cg6jjgwecif.setupMenuItems(editor);
-    $_bn93cg6jjgwecif.setupContextToolbars(editor);
-    $_8hceq8ftjjgweche.setupGotoLinks(editor);
-    $_bauc80fsjjgwechc.register(editor);
-    $_49u4p1g5jjgwecie.setup(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.js	(working copy)
@@ -1,1114 +1,2181 @@
 (function () {
 var lists = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var isTextNode = function (node) {
-    return node && node.nodeType === 3;
-  };
-  var isListNode = function (node) {
-    return node && /^(OL|UL|DL)$/.test(node.nodeName);
-  };
-  var isListItemNode = function (node) {
-    return node && /^(LI|DT|DD)$/.test(node.nodeName);
-  };
-  var isTableCellNode = function (node) {
-    return node && /^(TH|TD)$/.test(node.nodeName);
-  };
-  var isBr = function (node) {
-    return node && node.nodeName === 'BR';
-  };
-  var isFirstChild = function (node) {
-    return node.parentNode.firstChild === node;
-  };
-  var isLastChild = function (node) {
-    return node.parentNode.lastChild === node;
-  };
-  var isTextBlock = function (editor, node) {
-    return node && !!editor.schema.getTextBlockElements()[node.nodeName];
-  };
-  var isBlock = function (node, blockElements) {
-    return node && node.nodeName in blockElements;
-  };
-  var isBogusBr = function (dom, node) {
-    if (!isBr(node)) {
+    var isTextNode = function (node) {
+      return node && node.nodeType === 3;
+    };
+    var isListNode = function (node) {
+      return node && /^(OL|UL|DL)$/.test(node.nodeName);
+    };
+    var isOlUlNode = function (node) {
+      return node && /^(OL|UL)$/.test(node.nodeName);
+    };
+    var isListItemNode = function (node) {
+      return node && /^(LI|DT|DD)$/.test(node.nodeName);
+    };
+    var isDlItemNode = function (node) {
+      return node && /^(DT|DD)$/.test(node.nodeName);
+    };
+    var isTableCellNode = function (node) {
+      return node && /^(TH|TD)$/.test(node.nodeName);
+    };
+    var isBr = function (node) {
+      return node && node.nodeName === 'BR';
+    };
+    var isFirstChild = function (node) {
+      return node.parentNode.firstChild === node;
+    };
+    var isLastChild = function (node) {
+      return node.parentNode.lastChild === node;
+    };
+    var isTextBlock = function (editor, node) {
+      return node && !!editor.schema.getTextBlockElements()[node.nodeName];
+    };
+    var isBlock = function (node, blockElements) {
+      return node && node.nodeName in blockElements;
+    };
+    var isBogusBr = function (dom, node) {
+      if (!isBr(node)) {
+        return false;
+      }
+      if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {
+        return true;
+      }
       return false;
-    }
-    if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {
-      return true;
-    }
-    return false;
-  };
-  var isEmpty = function (dom, elm, keepBookmarks) {
-    var empty = dom.isEmpty(elm);
-    if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {
-      return false;
-    }
-    return empty;
-  };
-  var isChildOfBody = function (dom, elm) {
-    return dom.isChildOf(elm, dom.getRoot());
-  };
-  var $_okk1ogljjgweckx = {
-    isTextNode: isTextNode,
-    isListNode: isListNode,
-    isListItemNode: isListItemNode,
-    isTableCellNode: isTableCellNode,
-    isBr: isBr,
-    isFirstChild: isFirstChild,
-    isLastChild: isLastChild,
-    isTextBlock: isTextBlock,
-    isBlock: isBlock,
-    isBogusBr: isBogusBr,
-    isEmpty: isEmpty,
-    isChildOfBody: isChildOfBody
-  };
+    };
+    var isEmpty = function (dom, elm, keepBookmarks) {
+      var empty = dom.isEmpty(elm);
+      if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {
+        return false;
+      }
+      return empty;
+    };
+    var isChildOfBody = function (dom, elm) {
+      return dom.isChildOf(elm, dom.getRoot());
+    };
+    var NodeType = {
+      isTextNode: isTextNode,
+      isListNode: isListNode,
+      isOlUlNode: isOlUlNode,
+      isDlItemNode: isDlItemNode,
+      isListItemNode: isListItemNode,
+      isTableCellNode: isTableCellNode,
+      isBr: isBr,
+      isFirstChild: isFirstChild,
+      isLastChild: isLastChild,
+      isTextBlock: isTextBlock,
+      isBlock: isBlock,
+      isBogusBr: isBogusBr,
+      isEmpty: isEmpty,
+      isChildOfBody: isChildOfBody
+    };
 
-  var getNormalizedEndPoint = function (container, offset) {
-    var node = global$1.getNode(container, offset);
-    if ($_okk1ogljjgweckx.isListItemNode(container) && $_okk1ogljjgweckx.isTextNode(node)) {
-      var textNodeOffset = offset >= container.childNodes.length ? node.data.length : 0;
+    var getNormalizedPoint = function (container, offset) {
+      if (NodeType.isTextNode(container)) {
+        return {
+          container: container,
+          offset: offset
+        };
+      }
+      var node = global$1.getNode(container, offset);
+      if (NodeType.isTextNode(node)) {
+        return {
+          container: node,
+          offset: offset >= container.childNodes.length ? node.data.length : 0
+        };
+      } else if (node.previousSibling && NodeType.isTextNode(node.previousSibling)) {
+        return {
+          container: node.previousSibling,
+          offset: node.previousSibling.data.length
+        };
+      } else if (node.nextSibling && NodeType.isTextNode(node.nextSibling)) {
+        return {
+          container: node.nextSibling,
+          offset: 0
+        };
+      }
       return {
-        container: node,
-        offset: textNodeOffset
+        container: container,
+        offset: offset
       };
-    }
-    return {
-      container: container,
-      offset: offset
     };
-  };
-  var normalizeRange = function (rng) {
-    var outRng = rng.cloneRange();
-    var rangeStart = getNormalizedEndPoint(rng.startContainer, rng.startOffset);
-    outRng.setStart(rangeStart.container, rangeStart.offset);
-    var rangeEnd = getNormalizedEndPoint(rng.endContainer, rng.endOffset);
-    outRng.setEnd(rangeEnd.container, rangeEnd.offset);
-    return outRng;
-  };
-  var $_a9cyhvgkjjgweckv = {
-    getNormalizedEndPoint: getNormalizedEndPoint,
-    normalizeRange: normalizeRange
-  };
+    var normalizeRange = function (rng) {
+      var outRng = rng.cloneRange();
+      var rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset);
+      outRng.setStart(rangeStart.container, rangeStart.offset);
+      var rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset);
+      outRng.setEnd(rangeEnd.container, rangeEnd.offset);
+      return outRng;
+    };
+    var Range = {
+      getNormalizedPoint: getNormalizedPoint,
+      normalizeRange: normalizeRange
+    };
 
-  var DOM = global$6.DOM;
-  var createBookmark = function (rng) {
-    var bookmark = {};
-    var setupEndPoint = function (start) {
-      var offsetNode, container, offset;
-      container = rng[start ? 'startContainer' : 'endContainer'];
-      offset = rng[start ? 'startOffset' : 'endOffset'];
-      if (container.nodeType === 1) {
-        offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });
-        if (container.hasChildNodes()) {
-          offset = Math.min(offset, container.childNodes.length - 1);
-          if (start) {
-            container.insertBefore(offsetNode, container.childNodes[offset]);
+    var DOM = global$6.DOM;
+    var createBookmark = function (rng) {
+      var bookmark = {};
+      var setupEndPoint = function (start) {
+        var offsetNode, container, offset;
+        container = rng[start ? 'startContainer' : 'endContainer'];
+        offset = rng[start ? 'startOffset' : 'endOffset'];
+        if (container.nodeType === 1) {
+          offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });
+          if (container.hasChildNodes()) {
+            offset = Math.min(offset, container.childNodes.length - 1);
+            if (start) {
+              container.insertBefore(offsetNode, container.childNodes[offset]);
+            } else {
+              DOM.insertAfter(offsetNode, container.childNodes[offset]);
+            }
           } else {
-            DOM.insertAfter(offsetNode, container.childNodes[offset]);
+            container.appendChild(offsetNode);
           }
-        } else {
-          container.appendChild(offsetNode);
+          container = offsetNode;
+          offset = 0;
         }
-        container = offsetNode;
-        offset = 0;
+        bookmark[start ? 'startContainer' : 'endContainer'] = container;
+        bookmark[start ? 'startOffset' : 'endOffset'] = offset;
+      };
+      setupEndPoint(true);
+      if (!rng.collapsed) {
+        setupEndPoint();
       }
-      bookmark[start ? 'startContainer' : 'endContainer'] = container;
-      bookmark[start ? 'startOffset' : 'endOffset'] = offset;
+      return bookmark;
     };
-    setupEndPoint(true);
-    if (!rng.collapsed) {
-      setupEndPoint();
-    }
-    return bookmark;
-  };
-  var resolveBookmark = function (bookmark) {
-    function restoreEndPoint(start) {
-      var container, offset, node;
-      var nodeIndex = function (container) {
-        var node = container.parentNode.firstChild, idx = 0;
-        while (node) {
-          if (node === container) {
-            return idx;
+    var resolveBookmark = function (bookmark) {
+      function restoreEndPoint(start) {
+        var container, offset, node;
+        var nodeIndex = function (container) {
+          var node = container.parentNode.firstChild, idx = 0;
+          while (node) {
+            if (node === container) {
+              return idx;
+            }
+            if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {
+              idx++;
+            }
+            node = node.nextSibling;
           }
-          if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {
-            idx++;
+          return -1;
+        };
+        container = node = bookmark[start ? 'startContainer' : 'endContainer'];
+        offset = bookmark[start ? 'startOffset' : 'endOffset'];
+        if (!container) {
+          return;
+        }
+        if (container.nodeType === 1) {
+          offset = nodeIndex(container);
+          container = container.parentNode;
+          DOM.remove(node);
+          if (!container.hasChildNodes() && DOM.isBlock(container)) {
+            container.appendChild(DOM.create('br'));
           }
-          node = node.nextSibling;
         }
-        return -1;
+        bookmark[start ? 'startContainer' : 'endContainer'] = container;
+        bookmark[start ? 'startOffset' : 'endOffset'] = offset;
+      }
+      restoreEndPoint(true);
+      restoreEndPoint();
+      var rng = DOM.createRng();
+      rng.setStart(bookmark.startContainer, bookmark.startOffset);
+      if (bookmark.endContainer) {
+        rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+      }
+      return Range.normalizeRange(rng);
+    };
+    var Bookmark = {
+      createBookmark: createBookmark,
+      resolveBookmark: resolveBookmark
+    };
+
+    var constant = function (value) {
+      return function () {
+        return value;
       };
-      container = node = bookmark[start ? 'startContainer' : 'endContainer'];
-      offset = bookmark[start ? 'startOffset' : 'endOffset'];
-      if (!container) {
-        return;
+    };
+    function curry(fn) {
+      var initialArgs = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+        initialArgs[_i - 1] = arguments[_i];
       }
-      if (container.nodeType === 1) {
-        offset = nodeIndex(container);
-        container = container.parentNode;
-        DOM.remove(node);
-        if (!container.hasChildNodes() && DOM.isBlock(container)) {
-          container.appendChild(DOM.create('br'));
+      return function () {
+        var restArgs = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          restArgs[_i] = arguments[_i];
         }
-      }
-      bookmark[start ? 'startContainer' : 'endContainer'] = container;
-      bookmark[start ? 'startOffset' : 'endOffset'] = offset;
+        var all = initialArgs.concat(restArgs);
+        return fn.apply(null, all);
+      };
     }
-    restoreEndPoint(true);
-    restoreEndPoint();
-    var rng = DOM.createRng();
-    rng.setStart(bookmark.startContainer, bookmark.startOffset);
-    if (bookmark.endContainer) {
-      rng.setEnd(bookmark.endContainer, bookmark.endOffset);
-    }
-    return $_a9cyhvgkjjgweckv.normalizeRange(rng);
-  };
-  var $_2nx1i4gjjjgweckt = {
-    createBookmark: createBookmark,
-    resolveBookmark: resolveBookmark
-  };
+    var not = function (f) {
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        return !f.apply(null, args);
+      };
+    };
+    var never = constant(false);
+    var always = constant(true);
 
-  var DOM$1 = global$6.DOM;
-  var normalizeList = function (dom, ul) {
-    var sibling;
-    var parentNode = ul.parentNode;
-    if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {
-      sibling = parentNode.previousSibling;
-      if (sibling && sibling.nodeName === 'LI') {
-        sibling.appendChild(ul);
-        if ($_okk1ogljjgweckx.isEmpty(dom, parentNode)) {
-          DOM$1.remove(parentNode);
+    var never$1 = never;
+    var always$1 = always;
+    var none = function () {
+      return NONE;
+    };
+    var NONE = function () {
+      var eq = function (o) {
+        return o.isNone();
+      };
+      var call$$1 = function (thunk) {
+        return thunk();
+      };
+      var id = function (n) {
+        return n;
+      };
+      var noop$$1 = function () {
+      };
+      var nul = function () {
+        return null;
+      };
+      var undef = function () {
+        return undefined;
+      };
+      var me = {
+        fold: function (n, s) {
+          return n();
+        },
+        is: never$1,
+        isSome: never$1,
+        isNone: always$1,
+        getOr: id,
+        getOrThunk: call$$1,
+        getOrDie: function (msg) {
+          throw new Error(msg || 'error: getOrDie called on none.');
+        },
+        getOrNull: nul,
+        getOrUndefined: undef,
+        or: id,
+        orThunk: call$$1,
+        map: none,
+        ap: none,
+        each: noop$$1,
+        bind: none,
+        flatten: none,
+        exists: never$1,
+        forall: always$1,
+        filter: none,
+        equals: eq,
+        equals_: eq,
+        toArray: function () {
+          return [];
+        },
+        toString: 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,
+        getOrNull: constant_a,
+        getOrUndefined: 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 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 = function (type) {
+      return function (value) {
+        return typeOf(value) === type;
+      };
+    };
+    var isString = isType('string');
+    var isBoolean = isType('boolean');
+    var isFunction = isType('function');
+    var isNumber = isType('number');
+
+    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 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 {
-        DOM$1.setStyle(parentNode, 'listStyleType', 'none');
+        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;
       }
-    }
-    if ($_okk1ogljjgweckx.isListNode(parentNode)) {
-      sibling = parentNode.previousSibling;
-      if (sibling && sibling.nodeName === 'LI') {
-        sibling.appendChild(ul);
+    };
+    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);
+        }
       }
-    }
-  };
-  var normalizeLists = function (dom, element) {
-    global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {
-      normalizeList(dom, ul);
-    });
-  };
-  var $_ekd4wzgmjjgwecl1 = {
-    normalizeList: normalizeList,
-    normalizeLists: normalizeLists
-  };
+      return Option.none();
+    };
+    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 slice = Array.prototype.slice;
+    var reverse = function (xs) {
+      var r = slice.call(xs, 0);
+      r.reverse();
+      return r;
+    };
+    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 from$1 = isFunction(Array.from) ? Array.from : function (x) {
+      return slice.call(x);
+    };
 
-  var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
+    var Global = typeof window !== 'undefined' ? window : Function('return this;')();
 
-  var getParentList = function (editor) {
-    var selectionStart = editor.selection.getStart(true);
-    return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));
-  };
-  var isParentListSelected = function (parentList, selectedBlocks) {
-    return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;
-  };
-  var findSubLists = function (parentList) {
-    return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {
-      return $_okk1ogljjgweckx.isListNode(elm);
-    });
-  };
-  var getSelectedSubLists = function (editor) {
-    var parentList = getParentList(editor);
-    var selectedBlocks = editor.selection.getSelectedBlocks();
-    if (isParentListSelected(parentList, selectedBlocks)) {
-      return findSubLists(parentList);
-    } else {
-      return global$5.grep(selectedBlocks, function (elm) {
-        return $_okk1ogljjgweckx.isListNode(elm) && parentList !== elm;
+    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 unsafe = function (name, scope) {
+      return 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 Global$1 = { getOrDie: getOrDie };
+
+    var htmlElement = function (scope) {
+      return Global$1.getOrDie('HTMLElement', scope);
+    };
+    var isPrototypeOf = function (x) {
+      var scope = resolve('ownerDocument.defaultView', x);
+      return htmlElement(scope).prototype.isPrototypeOf(x);
+    };
+    var HTMLElement = { isPrototypeOf: isPrototypeOf };
+
+    var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
+
+    var getParentList = function (editor) {
+      var selectionStart = editor.selection.getStart(true);
+      return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));
+    };
+    var isParentListSelected = function (parentList, selectedBlocks) {
+      return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;
+    };
+    var findSubLists = function (parentList) {
+      return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {
+        return NodeType.isListNode(elm);
       });
-    }
-  };
-  var findParentListItemsNodes = function (editor, elms) {
-    var listItemsElms = global$5.map(elms, function (elm) {
-      var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));
-      return parentLi ? parentLi : elm;
-    });
-    return global$7.unique(listItemsElms);
-  };
-  var getSelectedListItems = function (editor) {
-    var selectedBlocks = editor.selection.getSelectedBlocks();
-    return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {
-      return $_okk1ogljjgweckx.isListItemNode(block);
-    });
-  };
-  var getClosestListRootElm = function (editor, elm) {
-    var parentTableCell = editor.dom.getParents(elm, 'TD,TH');
-    var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();
-    return root;
-  };
-  var $_3xb1cggnjjgwecl3 = {
-    getParentList: getParentList,
-    getSelectedSubLists: getSelectedSubLists,
-    getSelectedListItems: getSelectedListItems,
-    getClosestListRootElm: getClosestListRootElm
-  };
+    };
+    var getSelectedSubLists = function (editor) {
+      var parentList = getParentList(editor);
+      var selectedBlocks = editor.selection.getSelectedBlocks();
+      if (isParentListSelected(parentList, selectedBlocks)) {
+        return findSubLists(parentList);
+      } else {
+        return global$5.grep(selectedBlocks, function (elm) {
+          return NodeType.isListNode(elm) && parentList !== elm;
+        });
+      }
+    };
+    var findParentListItemsNodes = function (editor, elms) {
+      var listItemsElms = global$5.map(elms, function (elm) {
+        var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));
+        return parentLi ? parentLi : elm;
+      });
+      return global$7.unique(listItemsElms);
+    };
+    var getSelectedListItems = function (editor) {
+      var selectedBlocks = editor.selection.getSelectedBlocks();
+      return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {
+        return NodeType.isListItemNode(block);
+      });
+    };
+    var getSelectedDlItems = function (editor) {
+      return filter(getSelectedListItems(editor), NodeType.isDlItemNode);
+    };
+    var getClosestListRootElm = function (editor, elm) {
+      var parentTableCell = editor.dom.getParents(elm, 'TD,TH');
+      var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();
+      return root;
+    };
+    var findLastParentListNode = function (editor, elm) {
+      var parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListRootElm(editor, elm));
+      return last(parentLists);
+    };
+    var getSelectedLists = function (editor) {
+      var firstList = findLastParentListNode(editor, editor.selection.getStart());
+      var subsequentLists = filter(editor.selection.getSelectedBlocks(), NodeType.isOlUlNode);
+      return firstList.toArray().concat(subsequentLists);
+    };
+    var getSelectedListRoots = function (editor) {
+      var selectedLists = getSelectedLists(editor);
+      return getUniqueListRoots(editor, selectedLists);
+    };
+    var getUniqueListRoots = function (editor, lists) {
+      var listRoots = map(lists, function (list) {
+        return findLastParentListNode(editor, list).getOr(list);
+      });
+      return global$7.unique(listRoots);
+    };
+    var isList = function (editor) {
+      var list = getParentList(editor);
+      return HTMLElement.isPrototypeOf(list);
+    };
+    var Selection = {
+      isList: isList,
+      getParentList: getParentList,
+      getSelectedSubLists: getSelectedSubLists,
+      getSelectedListItems: getSelectedListItems,
+      getClosestListRootElm: getClosestListRootElm,
+      getSelectedDlItems: getSelectedDlItems,
+      getSelectedListRoots: getSelectedListRoots
+    };
 
-  var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
+    var node = function () {
+      var f = Global$1.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 Node$1 = {
+      documentPositionPreceding: documentPositionPreceding,
+      documentPositionContainedBy: documentPositionContainedBy
+    };
 
-  var DOM$2 = global$6.DOM;
-  var createNewTextBlock = function (editor, contentNode, blockName) {
-    var node, textBlock;
-    var fragment = DOM$2.createFragment();
-    var hasContentNode;
-    var blockElements = editor.schema.getBlockElements();
-    if (editor.settings.forced_root_block) {
-      blockName = blockName || editor.settings.forced_root_block;
-    }
-    if (blockName) {
-      textBlock = DOM$2.create(blockName);
-      if (textBlock.tagName === editor.settings.forced_root_block) {
-        DOM$2.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
+    var cached = function (f) {
+      var called = false;
+      var r;
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        if (!called) {
+          called = true;
+          r = f.apply(null, args);
+        }
+        return r;
+      };
+    };
+
+    var firstMatch = function (regexes, s) {
+      for (var i = 0; i < regexes.length; i++) {
+        var x = regexes[i];
+        if (x.test(s))
+          return x;
       }
-      if (!$_okk1ogljjgweckx.isBlock(contentNode.firstChild, blockElements)) {
-        fragment.appendChild(textBlock);
-      }
-    }
-    if (contentNode) {
-      while (node = contentNode.firstChild) {
-        var nodeName = node.nodeName;
-        if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {
-          hasContentNode = true;
+      return undefined;
+    };
+    var find$1 = 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$1(versionRegexes, cleanedAgent);
+    };
+    var unknown = function () {
+      return nu(0, 0);
+    };
+    var nu = function (major, minor) {
+      return {
+        major: major,
+        minor: minor
+      };
+    };
+    var Version = {
+      nu: nu,
+      detect: detect,
+      unknown: unknown
+    };
+
+    var edge = 'Edge';
+    var chrome = 'Chrome';
+    var ie = 'IE';
+    var opera = '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: Version.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, current),
+        isOpera: isBrowser(opera, current),
+        isFirefox: isBrowser(firefox, current),
+        isSafari: isBrowser(safari, current)
+      };
+    };
+    var Browser = {
+      unknown: unknown$1,
+      nu: nu$1,
+      edge: constant(edge),
+      chrome: constant(chrome),
+      ie: constant(ie),
+      opera: constant(opera),
+      firefox: constant(firefox),
+      safari: constant(safari)
+    };
+
+    var windows = 'Windows';
+    var ios = 'iOS';
+    var android = '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: Version.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, current),
+        isOSX: isOS(osx, current),
+        isLinux: isOS(linux, current),
+        isSolaris: isOS(solaris, current),
+        isFreeBSD: isOS(freebsd, current)
+      };
+    };
+    var OperatingSystem = {
+      unknown: unknown$2,
+      nu: nu$2,
+      windows: constant(windows),
+      ios: constant(ios),
+      android: constant(android),
+      linux: constant(linux),
+      osx: constant(osx),
+      solaris: constant(solaris),
+      freebsd: constant(freebsd)
+    };
+
+    var DeviceType = function (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: constant(isiPad),
+        isiPhone: constant(isiPhone),
+        isTablet: constant(isTablet),
+        isPhone: constant(isPhone),
+        isTouch: constant(isTouch),
+        isAndroid: os.isAndroid,
+        isiOS: os.isiOS,
+        isWebView: constant(iOSwebview)
+      };
+    };
+
+    var detect$1 = function (candidates, userAgent) {
+      var agent = String(userAgent).toLowerCase();
+      return find(candidates, function (candidate) {
+        return candidate.search(agent);
+      });
+    };
+    var detectBrowser = function (browsers, userAgent) {
+      return detect$1(browsers, userAgent).map(function (browser) {
+        var version = Version.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 = Version.detect(os.versionRegexes, userAgent);
+        return {
+          current: os.name,
+          version: version
+        };
+      });
+    };
+    var UaString = {
+      detectBrowser: detectBrowser,
+      detectOs: detectOs
+    };
+
+    var contains$1 = function (str, substr) {
+      return str.indexOf(substr) !== -1;
+    };
+
+    var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
+    var checkContains = function (target) {
+      return function (uastring) {
+        return contains$1(uastring, target);
+      };
+    };
+    var browsers = [
+      {
+        name: 'Edge',
+        versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
+        search: function (uastring) {
+          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
+          return monstrosity;
         }
-        if ($_okk1ogljjgweckx.isBlock(node, blockElements)) {
-          fragment.appendChild(node);
-          textBlock = null;
-        } else {
-          if (blockName) {
-            if (!textBlock) {
-              textBlock = DOM$2.create(blockName);
-              fragment.appendChild(textBlock);
-            }
-            textBlock.appendChild(node);
-          } else {
-            fragment.appendChild(node);
-          }
+      },
+      {
+        name: 'Chrome',
+        versionRegexes: [
+          /.*?chrome\/([0-9]+)\.([0-9]+).*/,
+          normalVersionRegex
+        ],
+        search: function (uastring) {
+          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
         }
+      },
+      {
+        name: 'IE',
+        versionRegexes: [
+          /.*?msie\ ?([0-9]+)\.([0-9]+).*/,
+          /.*?rv:([0-9]+)\.([0-9]+).*/
+        ],
+        search: function (uastring) {
+          return contains$1(uastring, 'msie') || contains$1(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 (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
+        }
       }
-    }
-    if (!editor.settings.forced_root_block) {
-      fragment.appendChild(DOM$2.create('br'));
-    } else {
-      if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {
-        textBlock.appendChild(DOM$2.create('br', { 'data-mce-bogus': '1' }));
+    ];
+    var oses = [
+      {
+        name: 'Windows',
+        search: checkContains('win'),
+        versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
+      },
+      {
+        name: 'iOS',
+        search: function (uastring) {
+          return contains$1(uastring, 'iphone') || contains$1(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: []
       }
-    }
-    return fragment;
-  };
-  var $_kbc02gqjjgwecl9 = { createNewTextBlock: createNewTextBlock };
+    ];
+    var PlatformInfo = {
+      browsers: constant(browsers),
+      oses: constant(oses)
+    };
 
-  var DOM$3 = global$6.DOM;
-  var splitList = function (editor, ul, li, newBlock) {
-    var tmpRng, fragment, bookmarks, node;
-    var removeAndKeepBookmarks = function (targetNode) {
-      global$5.each(bookmarks, function (node) {
-        targetNode.parentNode.insertBefore(node, li.parentNode);
-      });
-      DOM$3.remove(targetNode);
+    var detect$2 = function (userAgent) {
+      var browsers = PlatformInfo.browsers();
+      var oses = PlatformInfo.oses();
+      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);
+      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
+      var deviceType = DeviceType(os, browser, userAgent);
+      return {
+        browser: browser,
+        os: os,
+        deviceType: deviceType
+      };
     };
-    bookmarks = DOM$3.select('span[data-mce-type="bookmark"]', ul);
-    newBlock = newBlock || $_kbc02gqjjgwecl9.createNewTextBlock(editor, li);
-    tmpRng = DOM$3.createRng();
-    tmpRng.setStartAfter(li);
-    tmpRng.setEndAfter(ul);
-    fragment = tmpRng.extractContents();
-    for (node = fragment.firstChild; node; node = node.firstChild) {
-      if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {
-        DOM$3.remove(node);
-        break;
+    var PlatformDetection = { detect: detect$2 };
+
+    var detect$3 = cached(function () {
+      var userAgent = navigator.userAgent;
+      return PlatformDetection.detect(userAgent);
+    });
+    var PlatformDetection$1 = { 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';
       }
-    }
-    if (!editor.dom.isEmpty(fragment)) {
-      DOM$3.insertAfter(fragment, ul);
-    }
-    DOM$3.insertAfter(newBlock, ul);
-    if ($_okk1ogljjgweckx.isEmpty(editor.dom, li.parentNode)) {
-      removeAndKeepBookmarks(li.parentNode);
-    }
-    DOM$3.remove(li);
-    if ($_okk1ogljjgweckx.isEmpty(editor.dom, ul)) {
-      DOM$3.remove(ul);
-    }
-  };
-  var $_fikiq7gpjjgwecl5 = { splitList: splitList };
+      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: constant(node) };
+    };
+    var fromPoint = function (docElm, x, y) {
+      var doc = docElm.dom();
+      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
+    };
+    var Element$$1 = {
+      fromHtml: fromHtml,
+      fromTag: fromTag,
+      fromText: fromText,
+      fromDom: fromDom,
+      fromPoint: fromPoint
+    };
 
-  var DOM$4 = global$6.DOM;
-  var removeEmptyLi = function (dom, li) {
-    if ($_okk1ogljjgweckx.isEmpty(dom, li)) {
-      DOM$4.remove(li);
-    }
-  };
-  var outdent = function (editor, li) {
-    var ul = li.parentNode;
-    var ulParent, newBlock;
-    if (ul) {
-      ulParent = ul.parentNode;
-    } else {
-      removeEmptyLi(editor.dom, li);
-      return true;
-    }
-    if (ul === editor.getBody()) {
-      return true;
-    }
-    if (li.nodeName === 'DD') {
-      DOM$4.rename(li, 'DT');
-      return true;
-    }
-    if ($_okk1ogljjgweckx.isFirstChild(li) && $_okk1ogljjgweckx.isLastChild(li)) {
-      if (ulParent.nodeName === 'LI') {
-        DOM$4.insertAfter(li, ulParent);
-        removeEmptyLi(editor.dom, ulParent);
-        DOM$4.remove(ul);
-      } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
-        DOM$4.remove(ul, true);
-      } else {
-        ulParent.insertBefore($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul);
-        DOM$4.remove(ul);
+    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
+    var COMMENT = Node.COMMENT_NODE;
+    var DOCUMENT = Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = Node.ELEMENT_NODE;
+    var TEXT = Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = Node.ENTITY_NODE;
+    var NOTATION = Node.NOTATION_NODE;
+
+    var ELEMENT$1 = ELEMENT;
+    var is = function (element, selector) {
+      var elem = element.dom();
+      if (elem.nodeType !== ELEMENT$1)
+        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 eq = function (e1, e2) {
+      return e1.dom() === e2.dom();
+    };
+    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 Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
+    };
+    var browser = PlatformDetection$1.detect().browser;
+    var contains$2 = browser.isIE() ? ieContains : regularContains;
+    var is$1 = is;
+
+    var keys = Object.keys;
+    var each$1 = 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);
       }
-      return true;
-    } else if ($_okk1ogljjgweckx.isFirstChild(li)) {
-      if (ulParent.nodeName === 'LI') {
-        DOM$4.insertAfter(li, ulParent);
-        li.appendChild(ul);
-        removeEmptyLi(editor.dom, ulParent);
-      } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
-        ulParent.insertBefore(li, ul);
+    };
+
+    var name = function (element) {
+      var r = element.dom().nodeName;
+      return r.toLowerCase();
+    };
+
+    var rawSet = function (dom, key, value$$1) {
+      if (isString(value$$1) || isBoolean(value$$1) || isNumber(value$$1)) {
+        dom.setAttribute(key, value$$1 + '');
       } else {
-        ulParent.insertBefore($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul);
-        DOM$4.remove(li);
+        console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value$$1, ':: Element ', dom);
+        throw new Error('Attribute value was not simple');
       }
-      return true;
-    } else if ($_okk1ogljjgweckx.isLastChild(li)) {
-      if (ulParent.nodeName === 'LI') {
-        DOM$4.insertAfter(li, ulParent);
-      } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
-        DOM$4.insertAfter(li, ul);
-      } else {
-        DOM$4.insertAfter($_kbc02gqjjgwecl9.createNewTextBlock(editor, li), ul);
-        DOM$4.remove(li);
+    };
+    var setAll = function (element, attrs) {
+      var dom = element.dom();
+      each$1(attrs, function (v, k) {
+        rawSet(dom, k, v);
+      });
+    };
+    var clone = function (element) {
+      return foldl(element.dom().attributes, function (acc, attr) {
+        acc[attr.name] = attr.value;
+        return acc;
+      }, {});
+    };
+
+    var Immutable = function () {
+      var fields = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        fields[_i] = arguments[_i];
       }
-      return true;
-    }
-    if (ulParent.nodeName === 'LI') {
-      ul = ulParent;
-      newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li, 'LI');
-    } else if ($_okk1ogljjgweckx.isListNode(ulParent)) {
-      newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li, 'LI');
-    } else {
-      newBlock = $_kbc02gqjjgwecl9.createNewTextBlock(editor, li);
-    }
-    $_fikiq7gpjjgwecl5.splitList(editor, ul, li, newBlock);
-    $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, ul.parentNode);
-    return true;
-  };
-  var outdentSelection = function (editor) {
-    var listElements = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
-    if (listElements.length) {
-      var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng());
-      var i = void 0, y = void 0;
-      var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true));
-      i = listElements.length;
-      while (i--) {
-        var node = listElements[i].parentNode;
-        while (node && node !== root) {
-          y = listElements.length;
-          while (y--) {
-            if (listElements[y] === node) {
-              listElements.splice(i, 1);
-              break;
+      return function () {
+        var values = [];
+        for (var _i = 0; _i < arguments.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 = {};
+        each(fields, function (name, i) {
+          struct[name] = constant(values[i]);
+        });
+        return struct;
+      };
+    };
+
+    var parent = function (element) {
+      var dom = element.dom();
+      return Option.from(dom.parentNode).map(Element$$1.fromDom);
+    };
+    var children = function (element) {
+      var dom = element.dom();
+      return map(dom.childNodes, Element$$1.fromDom);
+    };
+    var child = function (element, index) {
+      var children = element.dom().childNodes;
+      return Option.from(children[index]).map(Element$$1.fromDom);
+    };
+    var firstChild = function (element) {
+      return child(element, 0);
+    };
+    var lastChild = function (element) {
+      return child(element, element.dom().childNodes.length - 1);
+    };
+    var spot = Immutable('element', 'offset');
+
+    var before = function (marker, element) {
+      var parent$$1 = parent(marker);
+      parent$$1.each(function (v) {
+        v.dom().insertBefore(element.dom(), marker.dom());
+      });
+    };
+    var append = function (parent$$1, element) {
+      parent$$1.dom().appendChild(element.dom());
+    };
+
+    var before$1 = function (marker, elements) {
+      each(elements, function (x) {
+        before(marker, x);
+      });
+    };
+    var append$1 = function (parent, elements) {
+      each(elements, function (x) {
+        append(parent, x);
+      });
+    };
+
+    var remove$1 = function (element) {
+      var dom = element.dom();
+      if (dom.parentNode !== null)
+        dom.parentNode.removeChild(dom);
+    };
+
+    var clone$1 = function (original, deep) {
+      return Element$$1.fromDom(original.dom().cloneNode(deep));
+    };
+    var deep = function (original) {
+      return clone$1(original, true);
+    };
+    var shallowAs = function (original, tag) {
+      var nu = Element$$1.fromTag(tag);
+      var attributes = clone(original);
+      setAll(nu, attributes);
+      return nu;
+    };
+    var mutate = function (original, tag) {
+      var nu = shallowAs(original, tag);
+      before(original, nu);
+      var children$$1 = children(original);
+      append$1(nu, children$$1);
+      remove$1(original);
+      return nu;
+    };
+
+    var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
+
+    var DOM$1 = global$6.DOM;
+    var createNewTextBlock = function (editor, contentNode, blockName) {
+      var node, textBlock;
+      var fragment = DOM$1.createFragment();
+      var hasContentNode;
+      var blockElements = editor.schema.getBlockElements();
+      if (editor.settings.forced_root_block) {
+        blockName = blockName || editor.settings.forced_root_block;
+      }
+      if (blockName) {
+        textBlock = DOM$1.create(blockName);
+        if (textBlock.tagName === editor.settings.forced_root_block) {
+          DOM$1.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
+        }
+        if (!NodeType.isBlock(contentNode.firstChild, blockElements)) {
+          fragment.appendChild(textBlock);
+        }
+      }
+      if (contentNode) {
+        while (node = contentNode.firstChild) {
+          var nodeName = node.nodeName;
+          if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {
+            hasContentNode = true;
+          }
+          if (NodeType.isBlock(node, blockElements)) {
+            fragment.appendChild(node);
+            textBlock = null;
+          } else {
+            if (blockName) {
+              if (!textBlock) {
+                textBlock = DOM$1.create(blockName);
+                fragment.appendChild(textBlock);
+              }
+              textBlock.appendChild(node);
+            } else {
+              fragment.appendChild(node);
             }
           }
-          node = node.parentNode;
         }
       }
-      for (i = 0; i < listElements.length; i++) {
-        if (!outdent(editor, listElements[i]) && i === 0) {
-          break;
+      if (!editor.settings.forced_root_block) {
+        fragment.appendChild(DOM$1.create('br'));
+      } else {
+        if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {
+          textBlock.appendChild(DOM$1.create('br', { 'data-mce-bogus': '1' }));
         }
       }
-      editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
-      editor.nodeChanged();
-      return true;
-    }
-  };
-  var $_6pbactghjjgweckp = {
-    outdent: outdent,
-    outdentSelection: outdentSelection
-  };
+      return fragment;
+    };
+    var TextBlock = { createNewTextBlock: createNewTextBlock };
 
-  var updateListStyle = function (dom, el, detail) {
-    var type = detail['list-style-type'] ? detail['list-style-type'] : null;
-    dom.setStyle(el, 'list-style-type', type);
-  };
-  var setAttribs = function (elm, attrs) {
-    global$5.each(attrs, function (value, key) {
-      elm.setAttribute(key, value);
-    });
-  };
-  var updateListAttrs = function (dom, el, detail) {
-    setAttribs(el, detail['list-attributes']);
-    global$5.each(dom.select('li', el), function (li) {
-      setAttribs(li, detail['list-item-attributes']);
-    });
-  };
-  var updateListWithDetails = function (dom, el, detail) {
-    updateListStyle(dom, el, detail);
-    updateListAttrs(dom, el, detail);
-  };
-  var removeStyles = function (dom, element, styles) {
-    global$5.each(styles, function (style) {
-      var _a;
-      return dom.setStyle(element, (_a = {}, _a[style] = '', _a));
-    });
-  };
-  var getEndPointNode = function (editor, rng, start, root) {
-    var container, offset;
-    container = rng[start ? 'startContainer' : 'endContainer'];
-    offset = rng[start ? 'startOffset' : 'endOffset'];
-    if (container.nodeType === 1) {
-      container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
-    }
-    if (!start && $_okk1ogljjgweckx.isBr(container.nextSibling)) {
-      container = container.nextSibling;
-    }
-    while (container.parentNode !== root) {
-      if ($_okk1ogljjgweckx.isTextBlock(editor, container)) {
-        return container;
+    var DOM$2 = global$6.DOM;
+    var splitList = function (editor, ul, li, newBlock) {
+      var tmpRng, fragment, bookmarks, node;
+      var removeAndKeepBookmarks = function (targetNode) {
+        global$5.each(bookmarks, function (node) {
+          targetNode.parentNode.insertBefore(node, li.parentNode);
+        });
+        DOM$2.remove(targetNode);
+      };
+      bookmarks = DOM$2.select('span[data-mce-type="bookmark"]', ul);
+      newBlock = newBlock || TextBlock.createNewTextBlock(editor, li);
+      tmpRng = DOM$2.createRng();
+      tmpRng.setStartAfter(li);
+      tmpRng.setEndAfter(ul);
+      fragment = tmpRng.extractContents();
+      for (node = fragment.firstChild; node; node = node.firstChild) {
+        if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {
+          DOM$2.remove(node);
+          break;
+        }
       }
-      if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {
-        return container;
+      if (!editor.dom.isEmpty(fragment)) {
+        DOM$2.insertAfter(fragment, ul);
       }
-      container = container.parentNode;
-    }
-    return container;
-  };
-  var getSelectedTextBlocks = function (editor, rng, root) {
-    var textBlocks = [], dom = editor.dom;
-    var startNode = getEndPointNode(editor, rng, true, root);
-    var endNode = getEndPointNode(editor, rng, false, root);
-    var block;
-    var siblings = [];
-    for (var node = startNode; node; node = node.nextSibling) {
-      siblings.push(node);
-      if (node === endNode) {
-        break;
+      DOM$2.insertAfter(newBlock, ul);
+      if (NodeType.isEmpty(editor.dom, li.parentNode)) {
+        removeAndKeepBookmarks(li.parentNode);
       }
-    }
-    global$5.each(siblings, function (node) {
-      if ($_okk1ogljjgweckx.isTextBlock(editor, node)) {
-        textBlocks.push(node);
-        block = null;
-        return;
+      DOM$2.remove(li);
+      if (NodeType.isEmpty(editor.dom, ul)) {
+        DOM$2.remove(ul);
       }
-      if (dom.isBlock(node) || $_okk1ogljjgweckx.isBr(node)) {
-        if ($_okk1ogljjgweckx.isBr(node)) {
-          dom.remove(node);
+    };
+    var SplitList = { splitList: splitList };
+
+    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();
         }
-        block = null;
-        return;
       }
-      var nextSibling = node.nextSibling;
-      if (global$4.isBookmarkNode(node)) {
-        if ($_okk1ogljjgweckx.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {
-          block = null;
-          return;
-        }
+      return Option.some(f.apply(null, r));
+    };
+
+    var fromElements = function (elements, scope) {
+      var doc = scope || document;
+      var fragment = doc.createDocumentFragment();
+      each(elements, function (element) {
+        fragment.appendChild(element.dom());
+      });
+      return Element$$1.fromDom(fragment);
+    };
+
+    var isSupported = function (dom) {
+      return dom.style !== undefined;
+    };
+
+    var internalSet = function (dom, property, value$$1) {
+      if (!isString(value$$1)) {
+        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value$$1, ':: Element ', dom);
+        throw new Error('CSS value must be a string: ' + value$$1);
       }
-      if (!block) {
-        block = dom.create('p');
-        node.parentNode.insertBefore(block, node);
-        textBlocks.push(block);
+      if (isSupported(dom))
+        dom.style.setProperty(property, value$$1);
+    };
+    var set$1 = function (element, property, value$$1) {
+      var dom = element.dom();
+      internalSet(dom, property, value$$1);
+    };
+
+    var createSection = function (scope, listType) {
+      var section = {
+        list: Element$$1.fromTag(listType, scope),
+        item: Element$$1.fromTag('li', scope)
+      };
+      append(section.list, section.item);
+      return section;
+    };
+    var joinSections = function (parent, appendor) {
+      append(parent.item, appendor.list);
+    };
+    var createJoinedSections = function (scope, length, listType) {
+      var sections = [];
+      var _loop_1 = function (i) {
+        var newSection = createSection(scope, listType);
+        last(sections).each(function (lastSection) {
+          return joinSections(lastSection, newSection);
+        });
+        sections.push(newSection);
+      };
+      for (var i = 0; i < length; i++) {
+        _loop_1(i);
       }
-      block.appendChild(node);
-    });
-    return textBlocks;
-  };
-  var hasCompatibleStyle = function (dom, sib, detail) {
-    var sibStyle = dom.getStyle(sib, 'list-style-type');
-    var detailStyle = detail ? detail['list-style-type'] : '';
-    detailStyle = detailStyle === null ? '' : detailStyle;
-    return sibStyle === detailStyle;
-  };
-  var applyList = function (editor, listName, detail) {
-    if (detail === void 0) {
-      detail = {};
-    }
-    var rng = editor.selection.getRng(true);
-    var bookmark;
-    var listItemName = 'LI';
-    var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true));
-    var dom = editor.dom;
-    if (dom.getContentEditable(editor.selection.getNode()) === 'false') {
-      return;
-    }
-    listName = listName.toUpperCase();
-    if (listName === 'DL') {
-      listItemName = 'DT';
-    }
-    bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng);
-    global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {
-      var listBlock, sibling;
-      sibling = block.previousSibling;
-      if (sibling && $_okk1ogljjgweckx.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {
-        listBlock = sibling;
-        block = dom.rename(block, listItemName);
-        sibling.appendChild(block);
-      } else {
-        listBlock = dom.create(listName);
-        block.parentNode.insertBefore(listBlock, block);
-        listBlock.appendChild(block);
-        block = dom.rename(block, listItemName);
+      return sections;
+    };
+    var normalizeSection = function (section, entry) {
+      if (name(section.list).toUpperCase() !== entry.listType) {
+        section.list = mutate(section.list, entry.listType);
       }
-      removeStyles(dom, block, [
-        'margin',
-        'margin-right',
-        'margin-bottom',
-        'margin-left',
-        'margin-top',
-        'padding',
-        'padding-right',
-        'padding-bottom',
-        'padding-left',
-        'padding-top'
-      ]);
-      updateListWithDetails(dom, listBlock, detail);
-      mergeWithAdjacentLists(editor.dom, listBlock);
-    });
-    editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
-  };
-  var removeList = function (editor) {
-    var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
-    var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, editor.selection.getStart(true));
-    var listItems = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
-    var emptyListItems = global$5.grep(listItems, function (li) {
-      return editor.dom.isEmpty(li);
-    });
-    listItems = global$5.grep(listItems, function (li) {
-      return !editor.dom.isEmpty(li);
-    });
-    global$5.each(emptyListItems, function (li) {
-      if ($_okk1ogljjgweckx.isEmpty(editor.dom, li)) {
-        $_6pbactghjjgweckp.outdent(editor, li);
-        return;
+      setAll(section.list, entry.listAttributes);
+    };
+    var createItem = function (scope, attr, content) {
+      var item = Element$$1.fromTag('li', scope);
+      setAll(item, attr);
+      append$1(item, content);
+      return item;
+    };
+    var setItem = function (section, item) {
+      append(section.list, item);
+      section.item = item;
+    };
+    var writeShallow = function (scope, outline, entry) {
+      var newOutline = outline.slice(0, entry.depth);
+      last(newOutline).each(function (section) {
+        setItem(section, createItem(scope, entry.itemAttributes, entry.content));
+        normalizeSection(section, entry);
+      });
+      return newOutline;
+    };
+    var populateSections = function (sections, entry) {
+      last(sections).each(function (section) {
+        setAll(section.list, entry.listAttributes);
+        setAll(section.item, entry.itemAttributes);
+        append$1(section.item, entry.content);
+      });
+      for (var i = 0; i < sections.length - 1; i++) {
+        set$1(sections[i].item, 'list-style-type', 'none');
       }
-    });
-    global$5.each(listItems, function (li) {
-      var node, rootList;
-      if (li.parentNode === editor.getBody()) {
-        return;
+    };
+    var writeDeep = function (scope, outline, entry) {
+      var newSections = createJoinedSections(scope, entry.depth - outline.length, entry.listType);
+      populateSections(newSections, entry);
+      liftN([
+        last(outline),
+        head(newSections)
+      ], joinSections);
+      return outline.concat(newSections);
+    };
+    var composeList = function (scope, entries) {
+      var outline = foldl(entries, function (outline, entry) {
+        return entry.depth > outline.length ? writeDeep(scope, outline, entry) : writeShallow(scope, outline, entry);
+      }, []);
+      return head(outline).map(function (section) {
+        return section.list;
+      });
+    };
+
+    var isIndented = function (entry) {
+      return entry.depth > 0;
+    };
+    var isSelected = function (entry) {
+      return entry.isSelected;
+    };
+
+    var indentEntry = function (indentation, entry) {
+      switch (indentation) {
+      case 'Indent':
+        entry.depth++;
+        break;
+      case 'Outdent':
+        entry.depth--;
+        break;
+      case 'Flatten':
+        entry.depth = 0;
       }
-      for (node = li; node && node !== root; node = node.parentNode) {
-        if ($_okk1ogljjgweckx.isListNode(node)) {
-          rootList = node;
+    };
+
+    var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+    var shallow$1 = function (old, nu) {
+      return 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 (hasOwnProperty$1.call(curObject, key)) {
+              ret[key] = merger(ret[key], curObject[key]);
+            }
         }
+        return ret;
+      };
+    };
+    var merge = baseMerge(shallow$1);
+
+    var assimilateEntry = function (adherent, source) {
+      adherent.listType = source.listType;
+      adherent.listAttributes = merge({}, source.listAttributes);
+    };
+    var normalizeShallow = function (outline, entry) {
+      var matchingEntryDepth = entry.depth - 1;
+      outline[matchingEntryDepth].each(function (matchingEntry) {
+        return assimilateEntry(entry, matchingEntry);
+      });
+      var newOutline = outline.slice(0, matchingEntryDepth);
+      newOutline.push(Option.some(entry));
+      return newOutline;
+    };
+    var normalizeDeep = function (outline, entry) {
+      var newOutline = outline.slice(0);
+      var diff = entry.depth - outline.length;
+      for (var i = 1; i < diff; i++) {
+        newOutline.push(Option.none());
       }
-      $_fikiq7gpjjgwecl5.splitList(editor, rootList, li);
-      $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, rootList.parentNode);
-    });
-    editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
-  };
-  var isValidLists = function (list1, list2) {
-    return list1 && list2 && $_okk1ogljjgweckx.isListNode(list1) && list1.nodeName === list2.nodeName;
-  };
-  var hasSameListStyle = function (dom, list1, list2) {
-    var targetStyle = dom.getStyle(list1, 'list-style-type', true);
-    var style = dom.getStyle(list2, 'list-style-type', true);
-    return targetStyle === style;
-  };
-  var hasSameClasses = function (elm1, elm2) {
-    return elm1.className === elm2.className;
-  };
-  var shouldMerge = function (dom, list1, list2) {
-    return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);
-  };
-  var mergeWithAdjacentLists = function (dom, listBlock) {
-    var sibling, node;
-    sibling = listBlock.nextSibling;
-    if (shouldMerge(dom, listBlock, sibling)) {
-      while (node = sibling.firstChild) {
-        listBlock.appendChild(node);
+      newOutline.push(Option.some(entry));
+      return newOutline;
+    };
+    var normalizeEntries = function (entries) {
+      foldl(entries, function (outline, entry) {
+        return entry.depth > outline.length ? normalizeDeep(outline, entry) : normalizeShallow(outline, entry);
+      }, []);
+    };
+
+    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 ListType;
+    (function (ListType) {
+      ListType['OL'] = 'OL';
+      ListType['UL'] = 'UL';
+      ListType['DL'] = 'DL';
+    }(ListType || (ListType = {})));
+    var getListType = function (list) {
+      switch (name(list)) {
+      case 'ol':
+        return Option.some(ListType.OL);
+      case 'ul':
+        return Option.some(ListType.UL);
+      case 'dl':
+        return Option.some(ListType.DL);
+      default:
+        return Option.none();
       }
-      dom.remove(sibling);
-    }
-    sibling = listBlock.previousSibling;
-    if (shouldMerge(dom, listBlock, sibling)) {
-      while (node = sibling.lastChild) {
-        listBlock.insertBefore(node, listBlock.firstChild);
+    };
+    var isList$1 = function (el) {
+      return is$1(el, 'OL,UL,DL');
+    };
+
+    var hasFirstChildList = function (li) {
+      return firstChild(li).map(isList$1).getOr(false);
+    };
+    var hasLastChildList = function (li) {
+      return lastChild(li).map(isList$1).getOr(false);
+    };
+
+    var getItemContent = function (li) {
+      var childNodes = children(li);
+      var contentLength = childNodes.length + (hasLastChildList(li) ? -1 : 0);
+      return map(childNodes.slice(0, contentLength), deep);
+    };
+    var createEntry = function (li, depth, isSelected) {
+      var list = parent(li);
+      return {
+        depth: depth,
+        isSelected: isSelected,
+        content: getItemContent(li),
+        listType: list.bind(getListType).getOr(ListType.OL),
+        listAttributes: list.map(clone).getOr({}),
+        itemAttributes: clone(li)
+      };
+    };
+    var parseItem = function (depth, itemSelection, selectionState, item) {
+      var curriedParseList = curry(parseList, depth, itemSelection, selectionState);
+      var updateSelectionState = function (itemRange) {
+        return itemSelection.each(function (selection) {
+          if (eq(itemRange === 'Start' ? selection.start : selection.end, item)) {
+            selectionState.set(itemRange === 'Start');
+          }
+        });
+      };
+      return firstChild(item).filter(isList$1).fold(function () {
+        updateSelectionState('Start');
+        var fromCurrentItem = createEntry(item, depth, selectionState.get());
+        updateSelectionState('End');
+        var fromChildList = lastChild(item).filter(isList$1).map(curriedParseList).getOr([]);
+        return [fromCurrentItem].concat(fromChildList);
+      }, curriedParseList);
+    };
+    var parseList = function (depth, itemSelection, selectionState, list) {
+      var newDepth = depth + 1;
+      return bind(children(list), function (child$$1) {
+        return isList$1(child$$1) ? parseList(newDepth, itemSelection, selectionState, child$$1) : parseItem(newDepth, itemSelection, selectionState, child$$1);
+      });
+    };
+    var parseLists = function (lists, itemSelection) {
+      var selectionState = Cell(false);
+      var initialDepth = 0;
+      return map(lists, function (list) {
+        return {
+          entries: parseList(initialDepth, itemSelection, selectionState, list),
+          sourceList: list
+        };
+      });
+    };
+
+    var outdentedComposer = function (editor, entries) {
+      return map(entries, function (entry) {
+        var content = fromElements(entry.content);
+        return Element$$1.fromDom(TextBlock.createNewTextBlock(editor, content.dom()));
+      });
+    };
+    var indentedComposer = function (editor, entries) {
+      normalizeEntries(entries);
+      return composeList(editor.contentDocument, entries).toArray();
+    };
+    var composeEntries = function (editor, entries) {
+      return bind(groupBy(entries, isIndented), function (entries) {
+        var groupIsIndented = head(entries).map(isIndented).getOr(false);
+        return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries);
+      });
+    };
+    var indentSelectedEntries = function (entries, indentation) {
+      each(filter(entries, isSelected), function (entry) {
+        return indentEntry(indentation, entry);
+      });
+    };
+    var getItemSelection = function (editor) {
+      var selectedListItems = map(Selection.getSelectedListItems(editor), Element$$1.fromDom);
+      return liftN([
+        find(selectedListItems, not(hasFirstChildList)),
+        find(reverse(selectedListItems), not(hasFirstChildList))
+      ], function (start, end) {
+        return {
+          start: start,
+          end: end
+        };
+      });
+    };
+    var listsIndentation = function (editor, lists, indentation) {
+      var parsedLists = parseLists(lists, getItemSelection(editor));
+      each(parsedLists, function (entrySet) {
+        indentSelectedEntries(entrySet.entries, indentation);
+        before$1(entrySet.sourceList, composeEntries(editor, entrySet.entries));
+        remove$1(entrySet.sourceList);
+      });
+    };
+
+    var outdentDlItem = function (editor, item) {
+      if (is$1(item, 'DD')) {
+        mutate(item, 'DT');
+      } else if (is$1(item, 'DT')) {
+        parent(item).each(function (dl) {
+          return SplitList.splitList(editor, dl.dom(), item.dom());
+        });
       }
-      dom.remove(sibling);
-    }
-  };
-  var updateList = function (dom, list, listName, detail) {
-    if (list.nodeName !== listName) {
-      var newList = dom.rename(list, listName);
-      updateListWithDetails(dom, newList, detail);
-    } else {
-      updateListWithDetails(dom, list, detail);
-    }
-  };
-  var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {
-    if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {
-      removeList(editor);
-    } else {
-      var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
-      global$5.each([parentList].concat(lists), function (elm) {
-        updateList(editor.dom, elm, listName, detail);
-      });
-      editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
-    }
-  };
-  var hasListStyleDetail = function (detail) {
-    return 'list-style-type' in detail;
-  };
-  var toggleSingleList = function (editor, parentList, listName, detail) {
-    if (parentList === editor.getBody()) {
-      return;
-    }
-    if (parentList) {
-      if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {
-        removeList(editor);
+    };
+    var indentDlItem = function (item) {
+      if (is$1(item, 'DT')) {
+        mutate(item, 'DD');
+      }
+    };
+    var dlIndentation = function (editor, indentation, dlItems) {
+      if (indentation === 'Indent') {
+        each(dlItems, indentDlItem);
       } else {
-        var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
-        updateListWithDetails(editor.dom, parentList, detail);
-        mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));
-        editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
+        each(dlItems, function (item) {
+          return outdentDlItem(editor, item);
+        });
       }
-    } else {
-      applyList(editor, listName, detail);
-    }
-  };
-  var toggleList = function (editor, listName, detail) {
-    var parentList = $_3xb1cggnjjgwecl3.getParentList(editor);
-    var selectedSubLists = $_3xb1cggnjjgwecl3.getSelectedSubLists(editor);
-    detail = detail ? detail : {};
-    if (parentList && selectedSubLists.length > 0) {
-      toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);
-    } else {
-      toggleSingleList(editor, parentList, listName, detail);
-    }
-  };
-  var $_aek3i3gejjgwecki = {
-    toggleList: toggleList,
-    removeList: removeList,
-    mergeWithAdjacentLists: mergeWithAdjacentLists
-  };
+    };
+    var selectionIndentation = function (editor, indentation) {
+      var dlItems = map(Selection.getSelectedDlItems(editor), Element$$1.fromDom);
+      var lists = map(Selection.getSelectedListRoots(editor), Element$$1.fromDom);
+      if (dlItems.length || lists.length) {
+        var bookmark = editor.selection.getBookmark();
+        dlIndentation(editor, indentation, dlItems);
+        listsIndentation(editor, lists, indentation);
+        editor.selection.moveToBookmark(bookmark);
+        editor.selection.setRng(Range.normalizeRange(editor.selection.getRng()));
+        editor.nodeChanged();
+      }
+    };
+    var indentListSelection = function (editor) {
+      selectionIndentation(editor, 'Indent');
+    };
+    var outdentListSelection = function (editor) {
+      selectionIndentation(editor, 'Outdent');
+    };
+    var flattenListSelection = function (editor) {
+      selectionIndentation(editor, 'Flatten');
+    };
 
-  var findNextCaretContainer = function (editor, rng, isForward, root) {
-    var node = rng.startContainer;
-    var offset = rng.startOffset;
-    var nonEmptyBlocks, walker;
-    if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {
-      return node;
-    }
-    nonEmptyBlocks = editor.schema.getNonEmptyElements();
-    if (node.nodeType === 1) {
-      node = global$1.getNode(node, offset);
-    }
-    walker = new global$2(node, root);
-    if (isForward) {
-      if ($_okk1ogljjgweckx.isBogusBr(editor.dom, node)) {
-        walker.next();
+    var updateListStyle = function (dom, el, detail) {
+      var type = detail['list-style-type'] ? detail['list-style-type'] : null;
+      dom.setStyle(el, 'list-style-type', type);
+    };
+    var setAttribs = function (elm, attrs) {
+      global$5.each(attrs, function (value, key) {
+        elm.setAttribute(key, value);
+      });
+    };
+    var updateListAttrs = function (dom, el, detail) {
+      setAttribs(el, detail['list-attributes']);
+      global$5.each(dom.select('li', el), function (li) {
+        setAttribs(li, detail['list-item-attributes']);
+      });
+    };
+    var updateListWithDetails = function (dom, el, detail) {
+      updateListStyle(dom, el, detail);
+      updateListAttrs(dom, el, detail);
+    };
+    var removeStyles = function (dom, element, styles) {
+      global$5.each(styles, function (style) {
+        var _a;
+        return dom.setStyle(element, (_a = {}, _a[style] = '', _a));
+      });
+    };
+    var getEndPointNode = function (editor, rng, start, root) {
+      var container, offset;
+      container = rng[start ? 'startContainer' : 'endContainer'];
+      offset = rng[start ? 'startOffset' : 'endOffset'];
+      if (container.nodeType === 1) {
+        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
       }
-    }
-    while (node = walker[isForward ? 'next' : 'prev2']()) {
-      if (node.nodeName === 'LI' && !node.hasChildNodes()) {
-        return node;
+      if (!start && NodeType.isBr(container.nextSibling)) {
+        container = container.nextSibling;
       }
-      if (nonEmptyBlocks[node.nodeName]) {
-        return node;
+      while (container.parentNode !== root) {
+        if (NodeType.isTextBlock(editor, container)) {
+          return container;
+        }
+        if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {
+          return container;
+        }
+        container = container.parentNode;
       }
-      if (node.nodeType === 3 && node.data.length > 0) {
-        return node;
+      return container;
+    };
+    var getSelectedTextBlocks = function (editor, rng, root) {
+      var textBlocks = [], dom = editor.dom;
+      var startNode = getEndPointNode(editor, rng, true, root);
+      var endNode = getEndPointNode(editor, rng, false, root);
+      var block;
+      var siblings = [];
+      for (var node = startNode; node; node = node.nextSibling) {
+        siblings.push(node);
+        if (node === endNode) {
+          break;
+        }
       }
-    }
-  };
-  var hasOnlyOneBlockChild = function (dom, elm) {
-    var childNodes = elm.childNodes;
-    return childNodes.length === 1 && !$_okk1ogljjgweckx.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);
-  };
-  var unwrapSingleBlockChild = function (dom, elm) {
-    if (hasOnlyOneBlockChild(dom, elm)) {
-      dom.remove(elm.firstChild, true);
-    }
-  };
-  var moveChildren = function (dom, fromElm, toElm) {
-    var node, targetElm;
-    targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;
-    unwrapSingleBlockChild(dom, fromElm);
-    if (!$_okk1ogljjgweckx.isEmpty(dom, fromElm, true)) {
-      while (node = fromElm.firstChild) {
-        targetElm.appendChild(node);
+      global$5.each(siblings, function (node) {
+        if (NodeType.isTextBlock(editor, node)) {
+          textBlocks.push(node);
+          block = null;
+          return;
+        }
+        if (dom.isBlock(node) || NodeType.isBr(node)) {
+          if (NodeType.isBr(node)) {
+            dom.remove(node);
+          }
+          block = null;
+          return;
+        }
+        var nextSibling = node.nextSibling;
+        if (global$4.isBookmarkNode(node)) {
+          if (NodeType.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {
+            block = null;
+            return;
+          }
+        }
+        if (!block) {
+          block = dom.create('p');
+          node.parentNode.insertBefore(block, node);
+          textBlocks.push(block);
+        }
+        block.appendChild(node);
+      });
+      return textBlocks;
+    };
+    var hasCompatibleStyle = function (dom, sib, detail) {
+      var sibStyle = dom.getStyle(sib, 'list-style-type');
+      var detailStyle = detail ? detail['list-style-type'] : '';
+      detailStyle = detailStyle === null ? '' : detailStyle;
+      return sibStyle === detailStyle;
+    };
+    var applyList = function (editor, listName, detail) {
+      if (detail === void 0) {
+        detail = {};
       }
-    }
-  };
-  var mergeLiElements = function (dom, fromElm, toElm) {
-    var node, listNode;
-    var ul = fromElm.parentNode;
-    if (!$_okk1ogljjgweckx.isChildOfBody(dom, fromElm) || !$_okk1ogljjgweckx.isChildOfBody(dom, toElm)) {
-      return;
-    }
-    if ($_okk1ogljjgweckx.isListNode(toElm.lastChild)) {
-      listNode = toElm.lastChild;
-    }
-    if (ul === toElm.lastChild) {
-      if ($_okk1ogljjgweckx.isBr(ul.previousSibling)) {
-        dom.remove(ul.previousSibling);
+      var rng = editor.selection.getRng(true);
+      var bookmark;
+      var listItemName = 'LI';
+      var root = Selection.getClosestListRootElm(editor, editor.selection.getStart(true));
+      var dom = editor.dom;
+      if (dom.getContentEditable(editor.selection.getNode()) === 'false') {
+        return;
       }
-    }
-    node = toElm.lastChild;
-    if (node && $_okk1ogljjgweckx.isBr(node) && fromElm.hasChildNodes()) {
-      dom.remove(node);
-    }
-    if ($_okk1ogljjgweckx.isEmpty(dom, toElm, true)) {
-      dom.$(toElm).empty();
-    }
-    moveChildren(dom, fromElm, toElm);
-    if (listNode) {
-      toElm.appendChild(listNode);
-    }
-    dom.remove(fromElm);
-    if ($_okk1ogljjgweckx.isEmpty(dom, ul) && ul !== dom.getRoot()) {
-      dom.remove(ul);
-    }
-  };
-  var mergeIntoEmptyLi = function (editor, fromLi, toLi) {
-    editor.dom.$(toLi).empty();
-    mergeLiElements(editor.dom, fromLi, toLi);
-    editor.selection.setCursorLocation(toLi);
-  };
-  var mergeForward = function (editor, rng, fromLi, toLi) {
-    var dom = editor.dom;
-    if (dom.isEmpty(toLi)) {
-      mergeIntoEmptyLi(editor, fromLi, toLi);
-    } else {
-      var bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng);
-      mergeLiElements(dom, fromLi, toLi);
-      editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
-    }
-  };
-  var mergeBackward = function (editor, rng, fromLi, toLi) {
-    var bookmark = $_2nx1i4gjjjgweckt.createBookmark(rng);
-    mergeLiElements(editor.dom, fromLi, toLi);
-    var resolvedBookmark = $_2nx1i4gjjjgweckt.resolveBookmark(bookmark);
-    editor.selection.setRng(resolvedBookmark);
-  };
-  var backspaceDeleteFromListToListCaret = function (editor, isForward) {
-    var dom = editor.dom, selection = editor.selection;
-    var selectionStartElm = selection.getStart();
-    var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm);
-    var li = dom.getParent(selection.getStart(), 'LI', root);
-    var ul, rng, otherLi;
-    if (li) {
-      ul = li.parentNode;
-      if (ul === editor.getBody() && $_okk1ogljjgweckx.isEmpty(dom, ul)) {
-        return true;
+      listName = listName.toUpperCase();
+      if (listName === 'DL') {
+        listItemName = 'DT';
       }
-      rng = $_a9cyhvgkjjgweckv.normalizeRange(selection.getRng(true));
-      otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
-      if (otherLi && otherLi !== li) {
-        if (isForward) {
-          mergeForward(editor, rng, otherLi, li);
+      bookmark = Bookmark.createBookmark(rng);
+      global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {
+        var listBlock, sibling;
+        sibling = block.previousSibling;
+        if (sibling && NodeType.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {
+          listBlock = sibling;
+          block = dom.rename(block, listItemName);
+          sibling.appendChild(block);
         } else {
-          mergeBackward(editor, rng, li, otherLi);
+          listBlock = dom.create(listName);
+          block.parentNode.insertBefore(listBlock, block);
+          listBlock.appendChild(block);
+          block = dom.rename(block, listItemName);
         }
-        return true;
-      } else if (!otherLi) {
-        if (!isForward && $_aek3i3gejjgwecki.removeList(editor)) {
-          return true;
+        removeStyles(dom, block, [
+          'margin',
+          'margin-right',
+          'margin-bottom',
+          'margin-left',
+          'margin-top',
+          'padding',
+          'padding-right',
+          'padding-bottom',
+          'padding-left',
+          'padding-top'
+        ]);
+        updateListWithDetails(dom, listBlock, detail);
+        mergeWithAdjacentLists(editor.dom, listBlock);
+      });
+      editor.selection.setRng(Bookmark.resolveBookmark(bookmark));
+    };
+    var isValidLists = function (list1, list2) {
+      return list1 && list2 && NodeType.isListNode(list1) && list1.nodeName === list2.nodeName;
+    };
+    var hasSameListStyle = function (dom, list1, list2) {
+      var targetStyle = dom.getStyle(list1, 'list-style-type', true);
+      var style = dom.getStyle(list2, 'list-style-type', true);
+      return targetStyle === style;
+    };
+    var hasSameClasses = function (elm1, elm2) {
+      return elm1.className === elm2.className;
+    };
+    var shouldMerge = function (dom, list1, list2) {
+      return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);
+    };
+    var mergeWithAdjacentLists = function (dom, listBlock) {
+      var sibling, node;
+      sibling = listBlock.nextSibling;
+      if (shouldMerge(dom, listBlock, sibling)) {
+        while (node = sibling.firstChild) {
+          listBlock.appendChild(node);
         }
+        dom.remove(sibling);
       }
-    }
-    return false;
-  };
-  var removeBlock = function (dom, block, root) {
-    var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);
-    dom.remove(block);
-    if (parentBlock && dom.isEmpty(parentBlock)) {
-      dom.remove(parentBlock);
-    }
-  };
-  var backspaceDeleteIntoListCaret = function (editor, isForward) {
-    var dom = editor.dom;
-    var selectionStartElm = editor.selection.getStart();
-    var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm);
-    var block = dom.getParent(selectionStartElm, dom.isBlock, root);
-    if (block && dom.isEmpty(block)) {
-      var rng = $_a9cyhvgkjjgweckv.normalizeRange(editor.selection.getRng(true));
-      var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
-      if (otherLi_1) {
-        editor.undoManager.transact(function () {
-          removeBlock(dom, block, root);
-          $_aek3i3gejjgwecki.mergeWithAdjacentLists(dom, otherLi_1.parentNode);
-          editor.selection.select(otherLi_1, true);
-          editor.selection.collapse(isForward);
+      sibling = listBlock.previousSibling;
+      if (shouldMerge(dom, listBlock, sibling)) {
+        while (node = sibling.lastChild) {
+          listBlock.insertBefore(node, listBlock.firstChild);
+        }
+        dom.remove(sibling);
+      }
+    };
+    var updateList = function (dom, list, listName, detail) {
+      if (list.nodeName !== listName) {
+        var newList = dom.rename(list, listName);
+        updateListWithDetails(dom, newList, detail);
+      } else {
+        updateListWithDetails(dom, list, detail);
+      }
+    };
+    var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {
+      if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {
+        flattenListSelection(editor);
+      } else {
+        var bookmark = Bookmark.createBookmark(editor.selection.getRng(true));
+        global$5.each([parentList].concat(lists), function (elm) {
+          updateList(editor.dom, elm, listName, detail);
         });
-        return true;
+        editor.selection.setRng(Bookmark.resolveBookmark(bookmark));
       }
-    }
-    return false;
-  };
-  var backspaceDeleteCaret = function (editor, isForward) {
-    return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);
-  };
-  var backspaceDeleteRange = function (editor) {
-    var selectionStartElm = editor.selection.getStart();
-    var root = $_3xb1cggnjjgwecl3.getClosestListRootElm(editor, selectionStartElm);
-    var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);
-    if (startListParent || $_3xb1cggnjjgwecl3.getSelectedListItems(editor).length > 0) {
-      editor.undoManager.transact(function () {
-        editor.execCommand('Delete');
-        $_ekd4wzgmjjgwecl1.normalizeLists(editor.dom, editor.getBody());
-      });
-      return true;
-    }
-    return false;
-  };
-  var backspaceDelete = function (editor, isForward) {
-    return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);
-  };
-  var setup = function (editor) {
-    editor.on('keydown', function (e) {
-      if (e.keyCode === global$3.BACKSPACE) {
-        if (backspaceDelete(editor, false)) {
-          e.preventDefault();
+    };
+    var hasListStyleDetail = function (detail) {
+      return 'list-style-type' in detail;
+    };
+    var toggleSingleList = function (editor, parentList, listName, detail) {
+      if (parentList === editor.getBody()) {
+        return;
+      }
+      if (parentList) {
+        if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {
+          flattenListSelection(editor);
+        } else {
+          var bookmark = Bookmark.createBookmark(editor.selection.getRng(true));
+          updateListWithDetails(editor.dom, parentList, detail);
+          mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));
+          editor.selection.setRng(Bookmark.resolveBookmark(bookmark));
         }
-      } else if (e.keyCode === global$3.DELETE) {
-        if (backspaceDelete(editor, true)) {
-          e.preventDefault();
-        }
+      } else {
+        applyList(editor, listName, detail);
       }
-    });
-  };
-  var $_brhyezgajjgweck7 = {
-    setup: setup,
-    backspaceDelete: backspaceDelete
-  };
+    };
+    var toggleList = function (editor, listName, detail) {
+      var parentList = Selection.getParentList(editor);
+      var selectedSubLists = Selection.getSelectedSubLists(editor);
+      detail = detail ? detail : {};
+      if (parentList && selectedSubLists.length > 0) {
+        toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);
+      } else {
+        toggleSingleList(editor, parentList, listName, detail);
+      }
+    };
+    var ToggleList = {
+      toggleList: toggleList,
+      mergeWithAdjacentLists: mergeWithAdjacentLists
+    };
 
-  var get = function (editor) {
-    return {
-      backspaceDelete: function (isForward) {
-        $_brhyezgajjgweck7.backspaceDelete(editor, isForward);
+    var DOM$3 = global$6.DOM;
+    var normalizeList = function (dom, ul) {
+      var sibling;
+      var parentNode = ul.parentNode;
+      if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {
+        sibling = parentNode.previousSibling;
+        if (sibling && sibling.nodeName === 'LI') {
+          sibling.appendChild(ul);
+          if (NodeType.isEmpty(dom, parentNode)) {
+            DOM$3.remove(parentNode);
+          }
+        } else {
+          DOM$3.setStyle(parentNode, 'listStyleType', 'none');
+        }
       }
+      if (NodeType.isListNode(parentNode)) {
+        sibling = parentNode.previousSibling;
+        if (sibling && sibling.nodeName === 'LI') {
+          sibling.appendChild(ul);
+        }
+      }
     };
-  };
-  var $_nb3yvg9jjgweck5 = { get: get };
+    var normalizeLists = function (dom, element) {
+      global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {
+        normalizeList(dom, ul);
+      });
+    };
+    var NormalizeLists = {
+      normalizeList: normalizeList,
+      normalizeLists: normalizeLists
+    };
 
-  var DOM$5 = global$6.DOM;
-  var mergeLists = function (from, to) {
-    var node;
-    if ($_okk1ogljjgweckx.isListNode(from)) {
-      while (node = from.firstChild) {
-        to.appendChild(node);
+    var findNextCaretContainer = function (editor, rng, isForward, root) {
+      var node = rng.startContainer;
+      var offset = rng.startOffset;
+      var nonEmptyBlocks, walker;
+      if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {
+        return node;
       }
-      DOM$5.remove(from);
-    }
-  };
-  var indent = function (li) {
-    var sibling, newList, listStyle;
-    if (li.nodeName === 'DT') {
-      DOM$5.rename(li, 'DD');
-      return true;
-    }
-    sibling = li.previousSibling;
-    if (sibling && $_okk1ogljjgweckx.isListNode(sibling)) {
-      sibling.appendChild(li);
-      return true;
-    }
-    if (sibling && sibling.nodeName === 'LI' && $_okk1ogljjgweckx.isListNode(sibling.lastChild)) {
-      sibling.lastChild.appendChild(li);
-      mergeLists(li.lastChild, sibling.lastChild);
-      return true;
-    }
-    sibling = li.nextSibling;
-    if (sibling && $_okk1ogljjgweckx.isListNode(sibling)) {
-      sibling.insertBefore(li, sibling.firstChild);
-      return true;
-    }
-    sibling = li.previousSibling;
-    if (sibling && sibling.nodeName === 'LI') {
-      newList = DOM$5.create(li.parentNode.nodeName);
-      listStyle = DOM$5.getStyle(li.parentNode, 'listStyleType');
-      if (listStyle) {
-        DOM$5.setStyle(newList, 'listStyleType', listStyle);
+      nonEmptyBlocks = editor.schema.getNonEmptyElements();
+      if (node.nodeType === 1) {
+        node = global$1.getNode(node, offset);
       }
-      sibling.appendChild(newList);
-      newList.appendChild(li);
-      mergeLists(li.lastChild, newList);
-      return true;
-    }
-    return false;
-  };
-  var indentSelection = function (editor) {
-    var listElements = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
-    if (listElements.length) {
-      var bookmark = $_2nx1i4gjjjgweckt.createBookmark(editor.selection.getRng(true));
-      for (var i = 0; i < listElements.length; i++) {
-        if (!indent(listElements[i]) && i === 0) {
-          break;
+      walker = new global$2(node, root);
+      if (isForward) {
+        if (NodeType.isBogusBr(editor.dom, node)) {
+          walker.next();
         }
       }
-      editor.selection.setRng($_2nx1i4gjjjgweckt.resolveBookmark(bookmark));
-      editor.nodeChanged();
-      return true;
-    }
-  };
-  var $_3rkwagtjjgweclf = { indentSelection: indentSelection };
-
-  var queryListCommandState = function (editor, listName) {
-    return function () {
-      var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');
-      return parentList && parentList.nodeName === listName;
-    };
-  };
-  var register = function (editor) {
-    editor.on('BeforeExecCommand', function (e) {
-      var cmd = e.command.toLowerCase();
-      var isHandled;
-      if (cmd === 'indent') {
-        if ($_3rkwagtjjgweclf.indentSelection(editor)) {
-          isHandled = true;
+      while (node = walker[isForward ? 'next' : 'prev2']()) {
+        if (node.nodeName === 'LI' && !node.hasChildNodes()) {
+          return node;
         }
-      } else if (cmd === 'outdent') {
-        if ($_6pbactghjjgweckp.outdentSelection(editor)) {
-          isHandled = true;
+        if (nonEmptyBlocks[node.nodeName]) {
+          return node;
         }
+        if (node.nodeType === 3 && node.data.length > 0) {
+          return node;
+        }
       }
-      if (isHandled) {
-        editor.fire('ExecCommand', { command: e.command });
-        e.preventDefault();
-        return true;
+    };
+    var hasOnlyOneBlockChild = function (dom, elm) {
+      var childNodes = elm.childNodes;
+      return childNodes.length === 1 && !NodeType.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);
+    };
+    var unwrapSingleBlockChild = function (dom, elm) {
+      if (hasOnlyOneBlockChild(dom, elm)) {
+        dom.remove(elm.firstChild, true);
       }
-    });
-    editor.addCommand('InsertUnorderedList', function (ui, detail) {
-      $_aek3i3gejjgwecki.toggleList(editor, 'UL', detail);
-    });
-    editor.addCommand('InsertOrderedList', function (ui, detail) {
-      $_aek3i3gejjgwecki.toggleList(editor, 'OL', detail);
-    });
-    editor.addCommand('InsertDefinitionList', function (ui, detail) {
-      $_aek3i3gejjgwecki.toggleList(editor, 'DL', detail);
-    });
-    editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));
-    editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));
-    editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));
-  };
-  var $_blnfs1gsjjgwecld = { register: register };
-
-  var shouldIndentOnTab = function (editor) {
-    return editor.getParam('lists_indent_on_tab', true);
-  };
-  var $_8obsbgvjjgweclk = { shouldIndentOnTab: shouldIndentOnTab };
-
-  var setupTabKey = function (editor) {
-    editor.on('keydown', function (e) {
-      if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {
+    };
+    var moveChildren = function (dom, fromElm, toElm) {
+      var node, targetElm;
+      targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;
+      unwrapSingleBlockChild(dom, fromElm);
+      if (!NodeType.isEmpty(dom, fromElm, true)) {
+        while (node = fromElm.firstChild) {
+          targetElm.appendChild(node);
+        }
+      }
+    };
+    var mergeLiElements = function (dom, fromElm, toElm) {
+      var node, listNode;
+      var ul = fromElm.parentNode;
+      if (!NodeType.isChildOfBody(dom, fromElm) || !NodeType.isChildOfBody(dom, toElm)) {
         return;
       }
-      if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {
-        e.preventDefault();
-        if (e.shiftKey) {
-          $_6pbactghjjgweckp.outdentSelection(editor);
-        } else {
-          $_3rkwagtjjgweclf.indentSelection(editor);
+      if (NodeType.isListNode(toElm.lastChild)) {
+        listNode = toElm.lastChild;
+      }
+      if (ul === toElm.lastChild) {
+        if (NodeType.isBr(ul.previousSibling)) {
+          dom.remove(ul.previousSibling);
         }
       }
-    });
-  };
-  var setup$1 = function (editor) {
-    if ($_8obsbgvjjgweclk.shouldIndentOnTab(editor)) {
-      setupTabKey(editor);
-    }
-    $_brhyezgajjgweck7.setup(editor);
-  };
-  var $_ees9z9gujjgwecli = { setup: setup$1 };
-
-  var findIndex = function (list, predicate) {
-    for (var index = 0; index < list.length; index++) {
-      var element = list[index];
-      if (predicate(element)) {
-        return index;
+      node = toElm.lastChild;
+      if (node && NodeType.isBr(node) && fromElm.hasChildNodes()) {
+        dom.remove(node);
       }
-    }
-    return -1;
-  };
-  var listState = function (editor, listName) {
-    return function (e) {
-      var ctrl = e.control;
-      editor.on('NodeChange', function (e) {
-        var tableCellIndex = findIndex(e.parents, $_okk1ogljjgweckx.isTableCellNode);
-        var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;
-        var lists = global$5.grep(parents, $_okk1ogljjgweckx.isListNode);
-        ctrl.active(lists.length > 0 && lists[0].nodeName === listName);
+      if (NodeType.isEmpty(dom, toElm, true)) {
+        dom.$(toElm).empty();
+      }
+      moveChildren(dom, fromElm, toElm);
+      if (listNode) {
+        toElm.appendChild(listNode);
+      }
+      dom.remove(fromElm);
+      if (NodeType.isEmpty(dom, ul) && ul !== dom.getRoot()) {
+        dom.remove(ul);
+      }
+    };
+    var mergeIntoEmptyLi = function (editor, fromLi, toLi) {
+      editor.dom.$(toLi).empty();
+      mergeLiElements(editor.dom, fromLi, toLi);
+      editor.selection.setCursorLocation(toLi);
+    };
+    var mergeForward = function (editor, rng, fromLi, toLi) {
+      var dom = editor.dom;
+      if (dom.isEmpty(toLi)) {
+        mergeIntoEmptyLi(editor, fromLi, toLi);
+      } else {
+        var bookmark = Bookmark.createBookmark(rng);
+        mergeLiElements(dom, fromLi, toLi);
+        editor.selection.setRng(Bookmark.resolveBookmark(bookmark));
+      }
+    };
+    var mergeBackward = function (editor, rng, fromLi, toLi) {
+      var bookmark = Bookmark.createBookmark(rng);
+      mergeLiElements(editor.dom, fromLi, toLi);
+      var resolvedBookmark = Bookmark.resolveBookmark(bookmark);
+      editor.selection.setRng(resolvedBookmark);
+    };
+    var backspaceDeleteFromListToListCaret = function (editor, isForward) {
+      var dom = editor.dom, selection = editor.selection;
+      var selectionStartElm = selection.getStart();
+      var root = Selection.getClosestListRootElm(editor, selectionStartElm);
+      var li = dom.getParent(selection.getStart(), 'LI', root);
+      var ul, rng, otherLi;
+      if (li) {
+        ul = li.parentNode;
+        if (ul === editor.getBody() && NodeType.isEmpty(dom, ul)) {
+          return true;
+        }
+        rng = Range.normalizeRange(selection.getRng(true));
+        otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
+        if (otherLi && otherLi !== li) {
+          if (isForward) {
+            mergeForward(editor, rng, otherLi, li);
+          } else {
+            mergeBackward(editor, rng, li, otherLi);
+          }
+          return true;
+        } else if (!otherLi) {
+          if (!isForward) {
+            flattenListSelection(editor);
+            return true;
+          }
+        }
+      }
+      return false;
+    };
+    var removeBlock = function (dom, block, root) {
+      var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);
+      dom.remove(block);
+      if (parentBlock && dom.isEmpty(parentBlock)) {
+        dom.remove(parentBlock);
+      }
+    };
+    var backspaceDeleteIntoListCaret = function (editor, isForward) {
+      var dom = editor.dom;
+      var selectionStartElm = editor.selection.getStart();
+      var root = Selection.getClosestListRootElm(editor, selectionStartElm);
+      var block = dom.getParent(selectionStartElm, dom.isBlock, root);
+      if (block && dom.isEmpty(block)) {
+        var rng = Range.normalizeRange(editor.selection.getRng(true));
+        var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
+        if (otherLi_1) {
+          editor.undoManager.transact(function () {
+            removeBlock(dom, block, root);
+            ToggleList.mergeWithAdjacentLists(dom, otherLi_1.parentNode);
+            editor.selection.select(otherLi_1, true);
+            editor.selection.collapse(isForward);
+          });
+          return true;
+        }
+      }
+      return false;
+    };
+    var backspaceDeleteCaret = function (editor, isForward) {
+      return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);
+    };
+    var backspaceDeleteRange = function (editor) {
+      var selectionStartElm = editor.selection.getStart();
+      var root = Selection.getClosestListRootElm(editor, selectionStartElm);
+      var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);
+      if (startListParent || Selection.getSelectedListItems(editor).length > 0) {
+        editor.undoManager.transact(function () {
+          editor.execCommand('Delete');
+          NormalizeLists.normalizeLists(editor.dom, editor.getBody());
+        });
+        return true;
+      }
+      return false;
+    };
+    var backspaceDelete = function (editor, isForward) {
+      return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);
+    };
+    var setup = function (editor) {
+      editor.on('keydown', function (e) {
+        if (e.keyCode === global$3.BACKSPACE) {
+          if (backspaceDelete(editor, false)) {
+            e.preventDefault();
+          }
+        } else if (e.keyCode === global$3.DELETE) {
+          if (backspaceDelete(editor, true)) {
+            e.preventDefault();
+          }
+        }
       });
     };
-  };
-  var indentPostRender = function (editor) {
-    return function (e) {
-      var ctrl = e.control;
-      editor.on('nodechange', function () {
-        var listItemBlocks = $_3xb1cggnjjgwecl3.getSelectedListItems(editor);
-        var disable = listItemBlocks.length > 0 && $_okk1ogljjgweckx.isFirstChild(listItemBlocks[0]);
-        ctrl.disabled(disable);
+    var Delete = {
+      setup: setup,
+      backspaceDelete: backspaceDelete
+    };
+
+    var get$3 = function (editor) {
+      return {
+        backspaceDelete: function (isForward) {
+          Delete.backspaceDelete(editor, isForward);
+        }
+      };
+    };
+    var Api = { get: get$3 };
+
+    var queryListCommandState = function (editor, listName) {
+      return function () {
+        var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');
+        return parentList && parentList.nodeName === listName;
+      };
+    };
+    var register = function (editor) {
+      editor.on('BeforeExecCommand', function (e) {
+        var cmd = e.command.toLowerCase();
+        if (cmd === 'indent') {
+          indentListSelection(editor);
+        } else if (cmd === 'outdent') {
+          outdentListSelection(editor);
+        }
       });
+      editor.addCommand('InsertUnorderedList', function (ui, detail) {
+        ToggleList.toggleList(editor, 'UL', detail);
+      });
+      editor.addCommand('InsertOrderedList', function (ui, detail) {
+        ToggleList.toggleList(editor, 'OL', detail);
+      });
+      editor.addCommand('InsertDefinitionList', function (ui, detail) {
+        ToggleList.toggleList(editor, 'DL', detail);
+      });
+      editor.addCommand('RemoveList', function () {
+        flattenListSelection(editor);
+      });
+      editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));
+      editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));
+      editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));
     };
-  };
-  var register$1 = function (editor) {
-    var hasPlugin = function (editor, plugin) {
-      var plugins = editor.settings.plugins ? editor.settings.plugins : '';
-      return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;
+    var Commands = { register: register };
+
+    var shouldIndentOnTab = function (editor) {
+      return editor.getParam('lists_indent_on_tab', true);
     };
-    if (!hasPlugin(editor, 'advlist')) {
-      editor.addButton('numlist', {
-        active: false,
-        title: 'Numbered list',
-        cmd: 'InsertOrderedList',
-        onPostRender: listState(editor, 'OL')
+    var Settings = { shouldIndentOnTab: shouldIndentOnTab };
+
+    var setupTabKey = function (editor) {
+      editor.on('keydown', function (e) {
+        if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {
+          return;
+        }
+        if (Selection.isList(editor)) {
+          e.preventDefault();
+          editor.undoManager.transact(function () {
+            if (e.shiftKey) {
+              outdentListSelection(editor);
+            } else {
+              indentListSelection(editor);
+            }
+          });
+        }
       });
-      editor.addButton('bullist', {
-        active: false,
-        title: 'Bullet list',
-        cmd: 'InsertUnorderedList',
-        onPostRender: listState(editor, 'UL')
+    };
+    var setup$1 = function (editor) {
+      if (Settings.shouldIndentOnTab(editor)) {
+        setupTabKey(editor);
+      }
+      Delete.setup(editor);
+    };
+    var Keyboard = { setup: setup$1 };
+
+    var findIndex$2 = function (list, predicate) {
+      for (var index = 0; index < list.length; index++) {
+        var element = list[index];
+        if (predicate(element)) {
+          return index;
+        }
+      }
+      return -1;
+    };
+    var listState = function (editor, listName) {
+      return function (e) {
+        var ctrl = e.control;
+        editor.on('NodeChange', function (e) {
+          var tableCellIndex = findIndex$2(e.parents, NodeType.isTableCellNode);
+          var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;
+          var lists = global$5.grep(parents, NodeType.isListNode);
+          ctrl.active(lists.length > 0 && lists[0].nodeName === listName);
+        });
+      };
+    };
+    var register$1 = function (editor) {
+      var hasPlugin = function (editor, plugin) {
+        var plugins = editor.settings.plugins ? editor.settings.plugins : '';
+        return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;
+      };
+      if (!hasPlugin(editor, 'advlist')) {
+        editor.addButton('numlist', {
+          active: false,
+          title: 'Numbered list',
+          cmd: 'InsertOrderedList',
+          onPostRender: listState(editor, 'OL')
+        });
+        editor.addButton('bullist', {
+          active: false,
+          title: 'Bullet list',
+          cmd: 'InsertUnorderedList',
+          onPostRender: listState(editor, 'UL')
+        });
+      }
+      editor.addButton('indent', {
+        icon: 'indent',
+        title: 'Increase indent',
+        cmd: 'Indent'
       });
+    };
+    var Buttons = { register: register$1 };
+
+    global.add('lists', function (editor) {
+      Keyboard.setup(editor);
+      Buttons.register(editor);
+      Commands.register(editor);
+      return Api.get(editor);
+    });
+    function Plugin () {
     }
-    editor.addButton('indent', {
-      icon: 'indent',
-      title: 'Increase indent',
-      cmd: 'Indent',
-      onPostRender: indentPostRender(editor)
-    });
-  };
-  var $_s7o0sgwjjgweclm = { register: register$1 };
 
-  global.add('lists', function (editor) {
-    $_ees9z9gujjgwecli.setup(editor);
-    $_s7o0sgwjjgweclm.register(editor);
-    $_blnfs1gsjjgwecld.register(editor);
-    return $_nb3yvg9jjgweck5.get(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/lists/plugin.min.js	(working copy)
@@ -1 +1 @@
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),l=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),n=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),o=function(e){return e&&"BR"===e.nodeName},r=function(e){return e&&3===e.nodeType},h=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},i=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},a=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},C=o,s=function(e){return e.parentNode.firstChild===e},c=function(e){return e.parentNode.lastChild===e},y=function(e,t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]},f=function(e,t){return e&&e.nodeName in t},u=function(e,t){return!!o(t)&&!(!e.isBlock(t.nextSibling)||o(t.previousSibling))},m=function(e,t,n){var o=e.isEmpty(t);return!(n&&0<e.select("span[data-mce-type=bookmark]",t).length)&&o},g=function(e,t){return e.isChildOf(t,e.getRoot())},N=function(e,t){var n=d.getNode(e,t);return i(e)&&r(n)?{container:n,offset:t>=e.childNodes.length?n.data.length:0}:{container:e,offset:t}},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=t.DOM,b=function(r){var i={},e=function(e){var t,n,o;n=r[e?"startContainer":"endContainer"],o=r[e?"startOffset":"endOffset"],1===n.nodeType&&(t=S.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(o=Math.min(o,n.childNodes.length-1),e?n.insertBefore(t,n.childNodes[o]):S.insertAfter(t,n.childNodes[o])):n.appendChild(t),n=t,o=0),i[e?"startContainer":"endContainer"]=n,i[e?"startOffset":"endOffset"]=o};return e(!0),r.collapsed||e(),i},D=function(r){function e(e){var t,n,o;t=o=r[e?"startContainer":"endContainer"],n=r[e?"startOffset":"endOffset"],t&&(1===t.nodeType&&(n=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}(t),t=t.parentNode,S.remove(o),!t.hasChildNodes()&&S.isBlock(t)&&t.appendChild(S.create("br"))),r[e?"startContainer":"endContainer"]=t,r[e?"startOffset":"endOffset"]=n)}e(!0),e();var t=S.createRng();return t.setStart(r.startContainer,r.startOffset),r.endContainer&&t.setEnd(r.endContainer,r.endOffset),L(t)},k=t.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),m(e,o)&&k.remove(o)):k.setStyle(o,"listStyleType","none")),h(o)&&(n=o.previousSibling)&&"LI"===n.nodeName&&n.appendChild(t)},I=function(t,e){v.each(v.grep(t.select("ol,ul",e)),function(e){T(t,e)})},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 0<n.length?n[0]:e.getBody()},E={getParentList:R,getSelectedSubLists:function(e){var t,n,o,r=R(e),i=e.selection.getSelectedBlocks();return o=i,(n=r)&&1===o.length&&o[0]===n?(t=r,v.grep(t.querySelectorAll("ol,ul,dl"),function(e){return h(e)})):v.grep(i,function(e){return h(e)&&r!==e})},getSelectedListItems:function(e){var n,t,o,r=e.selection.getSelectedBlocks();return v.grep((n=e,t=r,o=v.map(t,function(e){var t=n.dom.getParent(e,"li,dd,dt",O(n,e));return t||e}),B.unique(o)),function(e){return i(e)})},getClosestListRootElm:O},A=tinymce.util.Tools.resolve("tinymce.Env"),P=t.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),f(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),f(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&&!(10<A.ie)||r.appendChild(P.create("br",{"data-mce-bogus":"1"})):a.appendChild(P.create("br")),a},_=t.DOM,M=function(e,t,n,o){var r,i,a,s,d;for(a=_.select('span[data-mce-type="bookmark"]',t),o=o||x(e,n),(r=_.createRng()).setStartAfter(n),r.setEndAfter(t),s=(i=r.extractContents()).firstChild;s;s=s.firstChild)if("LI"===s.nodeName&&e.dom.isEmpty(s)){_.remove(s);break}e.dom.isEmpty(i)||_.insertAfter(i,t),_.insertAfter(o,t),m(e.dom,n.parentNode)&&(d=n.parentNode,v.each(a,function(e){d.parentNode.insertBefore(e,n.parentNode)}),_.remove(d)),_.remove(n),m(e.dom,t)&&_.remove(t)},U=t.DOM,H=function(e,t){m(e,t)&&U.remove(t)},$=function(e,t){var n,o,r=t.parentNode;return r?(n=r.parentNode,r===e.getBody()||("DD"===t.nodeName?U.rename(t,"DT"):s(t)&&c(t)?"LI"===n.nodeName?(U.insertAfter(t,n),H(e.dom,n),U.remove(r)):h(n)?U.remove(r,!0):(n.insertBefore(x(e,t),r),U.remove(r)):s(t)?"LI"===n.nodeName?(U.insertAfter(t,n),t.appendChild(r),H(e.dom,n)):h(n)?n.insertBefore(t,r):(n.insertBefore(x(e,t),r),U.remove(t)):c(t)?"LI"===n.nodeName?U.insertAfter(t,n):h(n)?U.insertAfter(t,r):(U.insertAfter(x(e,t),r),U.remove(t)):("LI"===n.nodeName?(r=n,o=x(e,t,"LI")):o=h(n)?x(e,t,"LI"):x(e,t),M(e,r,t,o),I(e.dom,r.parentNode)))):H(e.dom,t),!0},w=$,K=function(e){var t=E.getSelectedListItems(e);if(t.length){var n=b(e.selection.getRng()),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(n,e){v.each(e,function(e,t){n.setAttribute(t,e)})},W=function(e,t,n){var o,r,i,a,s,d,l;o=e,r=t,a=(i=n)["list-style-type"]?i["list-style-type"]:null,o.setStyle(r,"list-style-type",a),s=e,Q(d=t,(l=n)["list-attributes"]),v.each(s.select("li",d),function(e){Q(e,l["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&&C(r.nextSibling)&&(r=r.nextSibling);r.parentNode!==o;){if(y(e,r))return r;if(/^(TD|TH)$/.test(r.parentNode.nodeName))return r;r=r.parentNode}return r},q=function(c,f,u){void 0===u&&(u={});var e,t=c.selection.getRng(!0),m="LI",n=E.getClosestListRootElm(c,c.selection.getStart(!0)),g=c.dom;"false"!==g.getContentEditable(c.selection.getNode())&&("DL"===(f=f.toUpperCase())&&(m="DT"),e=b(t),v.each(function(n,e,o){for(var r,i=[],a=n.dom,t=j(n,e,!0,o),s=j(n,e,!1,o),d=[],l=t;l&&(d.push(l),l!==s);l=l.nextSibling);return v.each(d,function(e){if(y(n,e))return i.push(e),void(r=null);if(a.isBlock(e)||C(e))return C(e)&&a.remove(e),void(r=null);var t=e.nextSibling;p.isBookmarkNode(e)&&(y(n,t)||!t&&e.parentNode===o)?r=null:(r||(r=a.create("p"),e.parentNode.insertBefore(r,e),i.push(r)),r.appendChild(e))}),i}(c,t,n),function(e){var t,n,o,r,i,a,s,d,l;(n=e.previousSibling)&&h(n)&&n.nodeName===f&&(o=n,r=u,i=g.getStyle(o,"list-style-type"),a=r?r["list-style-type"]:"",i===(a=null===a?"":a))?(t=n,e=g.rename(e,m),n.appendChild(e)):(t=g.create(f),e.parentNode.insertBefore(t,e),t.appendChild(e),e=g.rename(e,m)),s=g,d=e,l=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(l,function(e){var t;return s.setStyle(d,((t={})[e]="",t))}),W(g,t,u),z(c.dom,t)}),c.selection.setRng(D(e)))},F=function(o){var e=b(o.selection.getRng(!0)),r=E.getClosestListRootElm(o,o.selection.getStart(!0)),t=E.getSelectedListItems(o),n=v.grep(t,function(e){return o.dom.isEmpty(e)});t=v.grep(t,function(e){return!o.dom.isEmpty(e)}),v.each(n,function(e){m(o.dom,e)&&w(o,e)}),v.each(t,function(e){var t,n;if(e.parentNode!==o.getBody()){for(t=e;t&&t!==r;t=t.parentNode)h(t)&&(n=t);M(o,n,e),I(o.dom,n.parentNode)}}),o.selection.setRng(D(e))},V=function(e,t,n){return d=n,(s=t)&&d&&h(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(t,e,n,o,r){if(e.nodeName!==o||J(r)){var i=b(t.selection.getRng(!0));v.each([e].concat(n),function(e){!function(e,t,n,o){if(t.nodeName!==n){var r=e.rename(t,n);W(e,r,o)}else W(e,t,o)}(t.dom,e,o,r)}),t.selection.setRng(D(i))}else F(t)},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&&0<r.length?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,t,n,o){var r,i,a=t.startContainer,s=t.startOffset;if(3===a.nodeType&&(n?s<a.data.length:0<s))return a;for(r=e.schema.getNonEmptyElements(),1===a.nodeType&&(a=d.getNode(a,s)),i=new l(a,o),n&&u(e.dom,a)&&i.next();a=i[n?"next":"prev2"]();){if("LI"===a.nodeName&&!a.hasChildNodes())return a;if(r[a.nodeName])return a;if(3===a.nodeType&&0<a.data.length)return a}},Z=function(e,t){var n=t.childNodes;return 1===n.length&&!h(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),!m(e,t,!0))for(;o=t.firstChild;)r.appendChild(o)},te=function(e,t,n){var o,r,i=t.parentNode;g(e,t)&&g(e,n)&&(h(n.lastChild)&&(r=n.lastChild),i===n.lastChild&&C(i.previousSibling)&&e.remove(i.previousSibling),(o=n.lastChild)&&C(o)&&t.hasChildNodes()&&e.remove(o),m(e,n,!0)&&e.$(n).empty(),ee(e,t,n),r&&n.appendChild(r),e.remove(t),m(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()&&m(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(r,i){var a=r.dom,e=r.selection.getStart(),s=E.getClosestListRootElm(r,e),d=a.getParent(e,a.isBlock,s);if(d&&a.isEmpty(d)){var t=L(r.selection.getRng(!0)),l=a.getParent(Y(r,t,i,s),"LI",s);if(l)return r.undoManager.transact(function(){var e,t,n,o;t=d,n=s,o=(e=a).getParent(t.parentNode,e.isBlock,n),e.remove(t),o&&e.isEmpty(o)&&e.remove(o),X.mergeWithAdjacentLists(a,l.parentNode),r.selection.select(l,!0),r.selection.collapse(i)}),!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)||0<E.getSelectedListItems(n).length)&&(n.undoManager.transact(function(){n.execCommand("Delete"),I(n.dom,n.getBody())}),!0));var n,o,r},ae=function(t){t.on("keydown",function(e){e.keyCode===n.BACKSPACE?ie(t,!1)&&e.preventDefault():e.keyCode===n.DELETE&&ie(t,!0)&&e.preventDefault()})},se=ie,de=function(t){return{backspaceDelete:function(e){se(t,e)}}},le=t.DOM,ce=function(e,t){var n;if(h(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],r=o=n=void 0,("DT"===t.nodeName?(le.rename(t,"DD"),1):(n=t.previousSibling)&&h(n)?(n.appendChild(t),1):n&&"LI"===n.nodeName&&h(n.lastChild)?(n.lastChild.appendChild(t),ce(t.lastChild,n.lastChild),1):(n=t.nextSibling)&&h(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(t,n){return function(){var e=t.dom.getParent(t.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===n}},me=function(o){o.on("BeforeExecCommand",function(e){var t,n=e.command.toLowerCase();if("indent"===n?fe(o)&&(t=!0):"outdent"===n&&K(o)&&(t=!0),t)return o.fire("ExecCommand",{command:e.command}),e.preventDefault(),!0}),o.addCommand("InsertUnorderedList",function(e,t){X.toggleList(o,"UL",t)}),o.addCommand("InsertOrderedList",function(e,t){X.toggleList(o,"OL",t)}),o.addCommand("InsertDefinitionList",function(e,t){X.toggleList(o,"DL",t)}),o.addQueryStateHandler("InsertUnorderedList",ue(o,"UL")),o.addQueryStateHandler("InsertOrderedList",ue(o,"OL")),o.addQueryStateHandler("InsertDefinitionList",ue(o,"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!==n.TAB||n.metaKeyPressed(e)||t.dom.getParent(t.selection.getStart(),"LI,DT,DD")&&(e.preventDefault(),e.shiftKey?K(t):fe(t))}),ae(e)},ve=function(t,i){return function(e){var r=e.control;t.on("NodeChange",function(e){var t=function(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n;return-1}(e.parents,a),n=-1!==t?e.parents.slice(0,t):e.parents,o=v.grep(n,h);r.active(0<o.length&&o[0].nodeName===i)})}},he=function(e){var t,n,o,r;n="advlist",o=(t=e).settings.plugins?t.settings.plugins:"",-1===v.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 n=e.control;r.on("nodechange",function(){var e=E.getSelectedListItems(r),t=0<e.length&&s(e[0]);n.disabled(t)})})})};e.add("lists",function(e){return pe(e),he(e),me(e),de(e)})}();
\ No newline at end of file
+!function(){"use strict";var e,n,t,r,o,i,u,a,l,s,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),d=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),m=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),h=function(e){return e&&"BR"===e.nodeName},y=function(e){return e&&3===e.nodeType},N=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},S=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},O=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},C=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},b=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},L=h,T=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},D=function(e,n){return e&&e.nodeName in n},E=function(e,n){return!!h(n)&&!(!e.isBlock(n.nextSibling)||h(n.previousSibling))},w=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},k=function(e,n){return e.isChildOf(n,e.getRoot())},A=function(e,n){if(y(e))return{container:e,offset:n};var t=f.getNode(e,n);return y(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&y(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&y(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},x=function(e){var n=e.cloneRange(),t=A(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=A(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},R=g.DOM,I=function(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=R.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):R.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},B=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,R.remove(r),!n.hasChildNodes()&&R.isBlock(n)&&n.appendChild(R.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=R.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),x(n)},_=function(e){return function(){return e}},P=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},M=_(!1),U=_(!0),F=M,j=U,H=function(){return $},$=(r={fold:function(e,n){return e()},is:F,isSome:F,isNone:j,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:t,orThunk:n,map:H,ap:H,each:function(){},bind:H,flatten:H,exists:F,forall:j,filter:H,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:_("none()")},Object.freeze&&Object.freeze(r),r),q=function(t){var e=function(){return t},n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:j,isNone:F,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return q(e(t))},ap:function(e){return e.fold(H,function(e){return q(e(t))})},each:function(e){e(t)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(t)?o:$},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(F,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},W={some:q,none:H,from:function(e){return null===e||e===undefined?$:q(e)}},z=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&Array.prototype.isPrototypeOf(e)?"array":"object"===n&&String.prototype.isPrototypeOf(e)?"string":n}(e)===n}},K=z("string"),V=z("boolean"),X=z("function"),Q=z("number"),Y=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o,e)}return r},G=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t,e)},J=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r,e)&&t.push(i)}return t},Z=function(e,n,t){return G(e,function(e){t=n(t,e)}),t},ee=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t,e))return W.some(o)}return W.none()},ne=Array.prototype.push,te=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Array.prototype.isPrototypeOf(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);ne.apply(n,e[t])}return n}(Y(e,n))},re=Array.prototype.slice,oe=function(e){return 0===e.length?W.none():W.some(e[0])},ie=function(e){return 0===e.length?W.none():W.some(e[e.length-1])},ue=(X(Array.from)&&Array.from,"undefined"!=typeof window?window:Function("return this;")()),ae=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ue,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},se=function(e,n){var t=ae(e,n);if(t===undefined||null===t)throw e+" not available on this browser";return t},ce=function(e){var n,t=ae("ownerDocument.defaultView",e);return(n=t,se("HTMLElement",n)).prototype.isPrototypeOf(e)},fe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),le=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",me(e,n))},de=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",me(t,e));return n||e}),fe.unique(r)),function(e){return C(e)})},me=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},ge=function(e,n){var t=e.dom.getParents(n,"ol,ul",me(e,n));return ie(t)},pe=function(n,e){var t=Y(e,function(e){return ge(n,e).getOr(e)});return fe.unique(t)},ve={isList:function(e){var n=le(e);return ce(n)},getParentList:le,getSelectedSubLists:function(e){var n,t,r,o=le(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return N(e)})):v.grep(i,function(e){return N(e)&&o!==e})},getSelectedListItems:de,getClosestListRootElm:me,getSelectedDlItems:function(e){return J(de(e),O)},getSelectedListRoots:function(e){var n,t,r,o=(t=ge(n=e,n.selection.getStart()),r=J(n.selection.getSelectedBlocks(),S),t.toArray().concat(r));return pe(e,o)}},he=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};var r=function(e){return Number(n.replace(t,"$"+e))};return Ne(r(1),r(2))},ye=function(){return Ne(0,0)},Ne=function(e,n){return{major:e,minor:n}},Se={nu:Ne,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?ye():he(e,t)},unknown:ye},Oe="Firefox",Ce=function(e,n){return function(){return n===e}},be=function(e){var n=e.current;return{current:n,version:e.version,isEdge:Ce("Edge",n),isChrome:Ce("Chrome",n),isIE:Ce("IE",n),isOpera:Ce("Opera",n),isFirefox:Ce(Oe,n),isSafari:Ce("Safari",n)}},Le={unknown:function(){return be({current:undefined,version:Se.unknown()})},nu:be,edge:_("Edge"),chrome:_("Chrome"),ie:_("IE"),opera:_("Opera"),firefox:_(Oe),safari:_("Safari")},Te="Windows",De="Android",Ee="Solaris",we="FreeBSD",ke=function(e,n){return function(){return n===e}},Ae=function(e){var n=e.current;return{current:n,version:e.version,isWindows:ke(Te,n),isiOS:ke("iOS",n),isAndroid:ke(De,n),isOSX:ke("OSX",n),isLinux:ke("Linux",n),isSolaris:ke(Ee,n),isFreeBSD:ke(we,n)}},xe={unknown:function(){return Ae({current:undefined,version:Se.unknown()})},nu:Ae,windows:_(Te),ios:_("iOS"),android:_(De),linux:_("Linux"),osx:_("OSX"),solaris:_(Ee),freebsd:_(we)},Re=function(e,n){var t=String(n).toLowerCase();return ee(e,function(e){return e.search(t)})},Ie=function(e,t){return Re(e,t).map(function(e){var n=Se.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Be=function(e,t){return Re(e,t).map(function(e){var n=Se.detect(e.versionRegexes,t);return{current:e.name,version:n}})},_e=function(e,n){return-1!==e.indexOf(n)},Pe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Me=function(n){return function(e){return _e(e,n)}},Ue=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return _e(e,"edge/")&&_e(e,"chrome")&&_e(e,"safari")&&_e(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Pe],search:function(e){return _e(e,"chrome")&&!_e(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return _e(e,"msie")||_e(e,"trident")}},{name:"Opera",versionRegexes:[Pe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Me("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Me("firefox")},{name:"Safari",versionRegexes:[Pe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(_e(e,"safari")||_e(e,"mobile/"))&&_e(e,"applewebkit")}}],Fe=[{name:"Windows",search:Me("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return _e(e,"iphone")||_e(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Me("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Me("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Me("linux"),versionRegexes:[]},{name:"Solaris",search:Me("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Me("freebsd"),versionRegexes:[]}],je={browsers:_(Ue),oses:_(Fe)},He=function(e){var n,t,r,o,i,u,a,s,c,f,l,d=je.browsers(),m=je.oses(),g=Ie(d,e).fold(Le.unknown,Le.nu),p=Be(m,e).fold(xe.unknown,xe.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,a=n.isAndroid()&&4===n.version.major,s=o||u||a&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!s,l=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:_(o),isiPhone:_(i),isTablet:_(s),isPhone:_(f),isTouch:_(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:_(l)})}},$e={detect:(o=function(){var e=navigator.userAgent;return He(e)},u=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return u||(u=!0,i=o.apply(null,e)),i})},qe=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:_(e)}},We={fromHtml:function(e,n){var t=(n||document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return qe(t.childNodes[0])},fromTag:function(e,n){var t=(n||document).createElement(e);return qe(t)},fromText:function(e,n){var t=(n||document).createTextNode(e);return qe(t)},fromDom:qe,fromPoint:function(e,n,t){var r=e.dom();return W.from(r.elementFromPoint(n,t)).map(qe)}},ze=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE,Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),Ke=(Node.TEXT_NODE,Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,ze),Ve=($e.detect().browser.isIE(),function(e,n){var t=e.dom();if(t.nodeType!==Ke)return!1;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}),Xe=Object.keys,Qe=function(e){return e.dom().nodeName.toLowerCase()},Ye=function(e,n){var t=e.dom();!function(e,n){for(var t=Xe(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i,e)}}(n,function(e,n){!function(e,n,t){if(!(K(t)||V(t)||Q(t)))throw console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},Ge=function(e){return Z(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},Je=function(e){var n=e.dom();return W.from(n.parentNode).map(We.fromDom)},Ze=function(e){var n=e.dom();return Y(n.childNodes,We.fromDom)},en=function(e,n){var t=e.dom().childNodes;return W.from(t[n]).map(We.fromDom)},nn=function(e){return en(e,0)},tn=function(e){return en(e,e.dom().childNodes.length-1)},rn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){Je(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),on=function(e,n){e.dom().appendChild(n.dom())},un=function(n,e){G(e,function(e){on(n,e)})},an=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},sn=function(e){return n=e,t=!0,We.fromDom(n.dom().cloneNode(t));var n,t},cn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=We.fromTag(r),i=Ge(t),Ye(o,i),o);rn(e,u);var a=Ze(e);return un(u,a),an(e),u},fn=tinymce.util.Tools.resolve("tinymce.Env"),ln=g.DOM,dn=function(e,n,t){var r,o,i,u=ln.createFragment(),a=e.schema.getBlockElements();if(e.settings.forced_root_block&&(t=t||e.settings.forced_root_block),t&&((o=ln.create(t)).tagName===e.settings.forced_root_block&&ln.setAttribs(o,e.settings.forced_root_block_attrs),D(n.firstChild,a)||u.appendChild(o)),n)for(;r=n.firstChild;){var s=r.nodeName;i||"SPAN"===s&&"bookmark"===r.getAttribute("data-mce-type")||(i=!0),D(r,a)?(u.appendChild(r),o=null):t?(o||(o=ln.create(t),u.appendChild(o)),o.appendChild(r)):u.appendChild(r)}return e.settings.forced_root_block?i||fn.ie&&!(10<fn.ie)||o.appendChild(ln.create("br",{"data-mce-bogus":"1"})):u.appendChild(ln.create("br")),u},mn=g.DOM,gn=function(e,n,t,r){var o,i,u,a,s;for(u=mn.select('span[data-mce-type="bookmark"]',n),r=r||dn(e,t),(o=mn.createRng()).setStartAfter(t),o.setEndAfter(n),a=(i=o.extractContents()).firstChild;a;a=a.firstChild)if("LI"===a.nodeName&&e.dom.isEmpty(a)){mn.remove(a);break}e.dom.isEmpty(i)||mn.insertAfter(i,n),mn.insertAfter(r,n),w(e.dom,t.parentNode)&&(s=t.parentNode,v.each(u,function(e){s.parentNode.insertBefore(e,t.parentNode)}),mn.remove(s)),mn.remove(t),w(e.dom,n)&&mn.remove(n)},pn=function(e,n){for(var t=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return W.none();t.push(o.getOrDie())}return W.some(n.apply(null,t))},vn=function(e,n,t){if(!K(t))throw console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);e.style!==undefined&&e.style.setProperty(n,t)},hn=function(e,n){on(e.item,n.list)},yn=function(i,e,u){for(var a=[],n=function(e){var n,t,r,o=(n=i,t=u,r={list:We.fromTag(t,n),item:We.fromTag("li",n)},on(r.list,r.item),r);ie(a).each(function(e){return hn(e,o)}),a.push(o)},t=0;t<e;t++)n();return a},Nn=function(c,e,f){var n=e.slice(0,f.depth);return ie(n).each(function(e){var n,t,r,o,i,u,a,s;n=e,r=c,o=f.itemAttributes,i=f.content,u=We.fromTag("li",r),Ye(u,o),un(u,i),t=u,on(n.list,t),n.item=t,s=f,Qe((a=e).list).toUpperCase()!==s.listType&&(a.list=cn(a.list,s.listType)),Ye(a.list,s.listAttributes)}),n},Sn=function(e,n,t){var r=yn(e,t.depth-n.length,t.listType);return function(e,n){ie(e).each(function(e){Ye(e.list,n.listAttributes),Ye(e.item,n.itemAttributes),un(e.item,n.content)});for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),vn(u,o,i);var r,o,i,u}(r,t),pn([ie(n),oe(r)],hn),n.concat(r)},On=function(e){return 0<e.depth},Cn=function(e){return e.isSelected},bn=Object.prototype.hasOwnProperty,Ln=(a=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)bn.call(o,i)&&(t[i]=a(t[i],o[i]))}return t}),Tn=function(e,r){var n=r.depth-1;e[n].each(function(e){return t=e,(n=r).listType=t.listType,void(n.listAttributes=Ln({},t.listAttributes));var n,t});var t=e.slice(0,n);return t.push(W.some(r)),t},Dn=function(e){Z(e,function(e,n){return n.depth>e.length?function(e,n){for(var t=e.slice(0),r=n.depth-e.length,o=1;o<r;o++)t.push(W.none());return t.push(W.some(n)),t}(e,n):Tn(e,n)},[])},En=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return En(t())}}};(s=l||(l={})).OL="OL",s.UL="UL",s.DL="DL";var wn=function(e){switch(Qe(e)){case"ol":return W.some(l.OL);case"ul":return W.some(l.UL);case"dl":return W.some(l.DL);default:return W.none()}},kn=function(e){return Ve(e,"OL,UL,DL")},An=function(e){return nn(e).map(kn).getOr(!1)},xn=function(e){var n=Ze(e),t=n.length+(tn(e).map(kn).getOr(!1)?-1:0);return Y(n.slice(0,t),sn)},Rn=function(u,e,a,s){var c=function(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}(In,u,e,a),f=function(r){return e.each(function(e){var n,t;n="Start"===r?e.start:e.end,t=s,n.dom()===t.dom()&&a.set("Start"===r)})};return nn(s).filter(kn).fold(function(){f("Start");var e,n,t,r,o=(e=s,n=u,t=a.get(),r=Je(e),{depth:n,isSelected:t,content:xn(e),listType:r.bind(wn).getOr(l.OL),listAttributes:r.map(Ge).getOr({}),itemAttributes:Ge(e)});f("End");var i=tn(s).filter(kn).map(c).getOr([]);return[o].concat(i)},c)},In=function(e,n,t,r){var o=e+1;return te(Ze(r),function(e){return kn(e)?In(o,n,t,e):Rn(o,n,t,e)})},Bn=function(i,e){return Y(e,function(e){var n,t,r,o=(n=e.content,r=(t||document).createDocumentFragment(),G(n,function(e){r.appendChild(e.dom())}),We.fromDom(r));return We.fromDom(dn(i,o.dom()))})},_n=function(e,n){return Dn(n),(t=e.contentDocument,r=n,o=Z(r,function(e,n){return n.depth>e.length?Sn(t,e,n):Nn(t,e,n)},[]),oe(o).map(function(e){return e.list})).toArray();var t,r,o},Pn=function(e){var n,t,r=Y(ve.getSelectedListItems(e),We.fromDom);return pn([ee(r,P(An)),ee((n=r,t=re.call(n,0),t.reverse(),t),P(An))],function(e,n){return{start:e,end:n}})},Mn=function(a,e,s){var n,t,r,o=(n=e,t=Pn(a),r=En(!1),Y(n,function(e){return{entries:In(0,t,r,e),sourceList:e}}));G(o,function(e){var n,t,r,o,i,u;n=e.entries,t=s,G(J(n,Cn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=a,u=e.entries,o=te(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var a=e[i],s=n(a);s!==t&&(r.push(o),o=[]),t=s,o.push(a)}return 0!==o.length&&r.push(o),r}(u,On),function(e){return oe(e).map(On).getOr(!1)?_n(i,e):Bn(i,e)}),G(o,function(e){rn(r,e)}),an(e.sourceList)})},Un=function(e){Ve(e,"DT")&&cn(e,"DD")},Fn=function(r,e,n){G(n,"Indent"===e?Un:function(e){return n=r,void(Ve(t=e,"DD")?cn(t,"DT"):Ve(t,"DT")&&Je(t).each(function(e){return gn(n,e.dom(),t.dom())}));var n,t})},jn=function(e,n){var t=Y(ve.getSelectedDlItems(e),We.fromDom),r=Y(ve.getSelectedListRoots(e),We.fromDom);if(t.length||r.length){var o=e.selection.getBookmark();Fn(e,n,t),Mn(e,r,n),e.selection.moveToBookmark(o),e.selection.setRng(x(e.selection.getRng())),e.nodeChanged()}},Hn=function(e){jn(e,"Indent")},$n=function(e){jn(e,"Outdent")},qn=function(e){jn(e,"Flatten")},Wn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},zn=function(e,n,t){var r,o,i,u,a,s,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,"list-style-type",u),a=e,Wn(s=n,(c=t)["list-attributes"]),v.each(a.select("li",s),function(e){Wn(e,c["list-item-attributes"])})},Kn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&L(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(T(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Vn=function(f,l,d){void 0===d&&(d={});var e,n=f.selection.getRng(!0),m="LI",t=ve.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selection.getNode())&&("DL"===(l=l.toUpperCase())&&(m="DT"),e=I(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Kn(t,e,!0,r),a=Kn(t,e,!1,r),s=[],c=n;c&&(s.push(c),c!==a);c=c.nextSibling);return v.each(s,function(e){if(T(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||L(e))return L(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(T(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,a,s,c;(t=e.previousSibling)&&N(t)&&t.nodeName===l&&(r=t,o=d,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(l),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),a=g,s=e,c=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return a.setStyle(s,((n={})[e]="",n))}),zn(g,n,d),Qn(f.dom,n)}),f.selection.setRng(B(e)))},Xn=function(e,n,t){return s=t,(a=n)&&s&&N(a)&&a.nodeName===s.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,a,s},Qn=function(e,n){var t,r;if(t=n.nextSibling,Xn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Xn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Yn=function(n,e,t,r,o){if(e.nodeName!==r||Gn(o)){var i=I(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);zn(e,o,r)}else zn(e,n,r)}(n.dom,e,r,o)}),n.selection.setRng(B(i))}else qn(n)},Gn=function(e){return"list-style-type"in e},Jn={toggleList:function(e,n,t){var r=ve.getParentList(e),o=ve.getSelectedSubLists(e);t=t||{},r&&0<o.length?Yn(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||Gn(r)){var o=I(e.selection.getRng(!0));zn(e.dom,n,r),Qn(e.dom,e.dom.rename(n,t)),e.selection.setRng(B(o))}else qn(e);else Vn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Qn},Zn=g.DOM,et=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),w(e,r)&&Zn.remove(r)):Zn.setStyle(r,"listStyleType","none")),N(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},nt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){et(n,e)})},tt=function(e,n,t,r){var o,i,u=n.startContainer,a=n.startOffset;if(3===u.nodeType&&(t?a<u.data.length:0<a))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=f.getNode(u,a)),i=new d(u,r),t&&E(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI"===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},rt=function(e,n){var t=n.childNodes;return 1===t.length&&!N(t[0])&&e.isBlock(t[0])},ot=function(e,n,t){var r,o,i,u;if(o=rt(e,t)?t.firstChild:t,rt(i=e,u=n)&&i.remove(u.firstChild,!0),!w(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},it=function(e,n,t){var r,o,i=n.parentNode;k(e,n)&&k(e,t)&&(N(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&L(i.previousSibling)&&e.remove(i.previousSibling),(r=t.lastChild)&&L(r)&&n.hasChildNodes()&&e.remove(r),w(e,t,!0)&&e.$(t).empty(),ot(e,n,t),o&&t.appendChild(o),e.remove(n),w(e,i)&&i!==e.getRoot()&&e.remove(i))},ut=function(e,n,t,r){var o,i,u,a=e.dom;if(a.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),it(o.dom,i,u),o.selection.setCursorLocation(u);else{var s=I(n);it(a,t,r),e.selection.setRng(B(s))}},at=function(e,n){var t,r,o,i=e.dom,u=e.selection,a=u.getStart(),s=ve.getClosestListRootElm(e,a),c=i.getParent(u.getStart(),"LI",s);if(c){if((t=c.parentNode)===e.getBody()&&w(i,t))return!0;if(r=x(u.getRng(!0)),(o=i.getParent(tt(e,r,n,s),"LI",s))&&o!==c)return n?ut(e,r,o,c):function(e,n,t,r){var o=I(n);it(e.dom,t,r);var i=B(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return qn(e),!0}return!1},st=function(e,n){return at(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),a=ve.getClosestListRootElm(o,e),s=u.getParent(e,u.isBlock,a);if(s&&u.isEmpty(s)){var n=x(o.selection.getRng(!0)),c=u.getParent(tt(o,n,i,a),"LI",a);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=s,t=a,r=(e=u).getParent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),Jn.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o.selection.collapse(i)}),!0}return!1}(e,n)},ct=function(e,n){return e.selection.isCollapsed()?st(e,n):(r=(t=e).selection.getStart(),o=ve.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<ve.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),nt(t.dom,t.getBody())}),!0));var t,r,o},ft=function(n){n.on("keydown",function(e){e.keyCode===m.BACKSPACE?ct(n,!1)&&e.preventDefault():e.keyCode===m.DELETE&&ct(n,!0)&&e.preventDefault()})},lt=ct,dt=function(n){return{backspaceDelete:function(e){lt(n,e)}}},mt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},gt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?Hn(t):"outdent"===n&&$n(t)}),t.addCommand("InsertUnorderedList",function(e,n){Jn.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){Jn.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){Jn.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){qn(t)}),t.addQueryStateHandler("InsertUnorderedList",mt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",mt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",mt(t,"DL"))},pt=function(e){return e.getParam("lists_indent_on_tab",!0)},vt=function(e){var n;pt(e)&&(n=e).on("keydown",function(e){e.keyCode!==m.TAB||m.metaKeyPressed(e)||ve.isList(n)&&(e.preventDefault(),n.undoManager.transact(function(){e.shiftKey?$n(n):Hn(n)}))}),ft(e)},ht=function(n,i){return function(e){var o=e.control;n.on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,b),t=-1!==n?e.parents.slice(0,n):e.parents,r=v.grep(t,N);o.active(0<r.length&&r[0].nodeName===i)})}},yt=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:ht(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:ht(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};c.add("lists",function(e){return vt(e),yt(e),gt(e),dt(e)})}();
\ No newline at end of file
Index: src/js/_enqueues/vendor/tinymce/plugins/media/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/media/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/media/plugin.js	(working copy)
@@ -1,1166 +1,1166 @@
 (function () {
 var media = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var getScripts = function (editor) {
-    return editor.getParam('media_scripts');
-  };
-  var getAudioTemplateCallback = function (editor) {
-    return editor.getParam('audio_template_callback');
-  };
-  var getVideoTemplateCallback = function (editor) {
-    return editor.getParam('video_template_callback');
-  };
-  var hasLiveEmbeds = function (editor) {
-    return editor.getParam('media_live_embeds', true);
-  };
-  var shouldFilterHtml = function (editor) {
-    return editor.getParam('media_filter_html', true);
-  };
-  var getUrlResolver = function (editor) {
-    return editor.getParam('media_url_resolver');
-  };
-  var hasAltSource = function (editor) {
-    return editor.getParam('media_alt_source', true);
-  };
-  var hasPoster = function (editor) {
-    return editor.getParam('media_poster', true);
-  };
-  var hasDimensions = function (editor) {
-    return editor.getParam('media_dimensions', true);
-  };
-  var $_69rpmgh3jjgwecnr = {
-    getScripts: getScripts,
-    getAudioTemplateCallback: getAudioTemplateCallback,
-    getVideoTemplateCallback: getVideoTemplateCallback,
-    hasLiveEmbeds: hasLiveEmbeds,
-    shouldFilterHtml: shouldFilterHtml,
-    getUrlResolver: getUrlResolver,
-    hasAltSource: hasAltSource,
-    hasPoster: hasPoster,
-    hasDimensions: hasDimensions
-  };
+    var getScripts = function (editor) {
+      return editor.getParam('media_scripts');
+    };
+    var getAudioTemplateCallback = function (editor) {
+      return editor.getParam('audio_template_callback');
+    };
+    var getVideoTemplateCallback = function (editor) {
+      return editor.getParam('video_template_callback');
+    };
+    var hasLiveEmbeds = function (editor) {
+      return editor.getParam('media_live_embeds', true);
+    };
+    var shouldFilterHtml = function (editor) {
+      return editor.getParam('media_filter_html', true);
+    };
+    var getUrlResolver = function (editor) {
+      return editor.getParam('media_url_resolver');
+    };
+    var hasAltSource = function (editor) {
+      return editor.getParam('media_alt_source', true);
+    };
+    var hasPoster = function (editor) {
+      return editor.getParam('media_poster', true);
+    };
+    var hasDimensions = function (editor) {
+      return editor.getParam('media_dimensions', true);
+    };
+    var Settings = {
+      getScripts: getScripts,
+      getAudioTemplateCallback: getAudioTemplateCallback,
+      getVideoTemplateCallback: getVideoTemplateCallback,
+      hasLiveEmbeds: hasLiveEmbeds,
+      shouldFilterHtml: shouldFilterHtml,
+      getUrlResolver: getUrlResolver,
+      hasAltSource: hasAltSource,
+      hasPoster: hasPoster,
+      hasDimensions: hasDimensions
+    };
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var getVideoScriptMatch = function (prefixes, src) {
-    if (prefixes) {
-      for (var i = 0; i < prefixes.length; i++) {
-        if (src.indexOf(prefixes[i].filter) !== -1) {
-          return prefixes[i];
+    var getVideoScriptMatch = function (prefixes, src) {
+      if (prefixes) {
+        for (var i = 0; i < prefixes.length; i++) {
+          if (src.indexOf(prefixes[i].filter) !== -1) {
+            return prefixes[i];
+          }
         }
       }
-    }
-  };
-  var $_4q3fmh7jjgwecnw = { getVideoScriptMatch: getVideoScriptMatch };
+    };
+    var VideoScript = { getVideoScriptMatch: getVideoScriptMatch };
 
-  var trimPx = function (value) {
-    return value.replace(/px$/, '');
-  };
-  var addPx = function (value) {
-    return /^[0-9.]+$/.test(value) ? value + 'px' : value;
-  };
-  var getSize = function (name) {
-    return function (elm) {
-      return elm ? trimPx(elm.style[name]) : '';
+    var trimPx = function (value) {
+      return value.replace(/px$/, '');
     };
-  };
-  var setSize = function (name) {
-    return function (elm, value) {
-      if (elm) {
-        elm.style[name] = addPx(value);
-      }
+    var addPx = function (value) {
+      return /^[0-9.]+$/.test(value) ? value + 'px' : value;
     };
-  };
-  var $_jbvx7h8jjgwecnx = {
-    getMaxWidth: getSize('maxWidth'),
-    getMaxHeight: getSize('maxHeight'),
-    setMaxWidth: setSize('maxWidth'),
-    setMaxHeight: setSize('maxHeight')
-  };
+    var getSize = function (name) {
+      return function (elm) {
+        return elm ? trimPx(elm.style[name]) : '';
+      };
+    };
+    var setSize = function (name) {
+      return function (elm, value) {
+        if (elm) {
+          elm.style[name] = addPx(value);
+        }
+      };
+    };
+    var Size = {
+      getMaxWidth: getSize('maxWidth'),
+      getMaxHeight: getSize('maxHeight'),
+      setMaxWidth: setSize('maxWidth'),
+      setMaxHeight: setSize('maxHeight')
+    };
 
-  var DOM = global$4.DOM;
-  var getEphoxEmbedIri = function (elm) {
-    return DOM.getAttrib(elm, 'data-ephox-embed-iri');
-  };
-  var isEphoxEmbed = function (html) {
-    var fragment = DOM.createFragment(html);
-    return getEphoxEmbedIri(fragment.firstChild) !== '';
-  };
-  var htmlToDataSax = function (prefixes, html) {
-    var data = {};
-    global$3({
-      validate: false,
-      allow_conditional_comments: true,
-      special: 'script,noscript',
-      start: function (name, attrs) {
-        if (!data.source1 && name === 'param') {
-          data.source1 = attrs.map.movie;
-        }
-        if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {
-          if (!data.type) {
-            data.type = name;
+    var DOM = global$4.DOM;
+    var getEphoxEmbedIri = function (elm) {
+      return DOM.getAttrib(elm, 'data-ephox-embed-iri');
+    };
+    var isEphoxEmbed = function (html) {
+      var fragment = DOM.createFragment(html);
+      return getEphoxEmbedIri(fragment.firstChild) !== '';
+    };
+    var htmlToDataSax = function (prefixes, html) {
+      var data = {};
+      global$3({
+        validate: false,
+        allow_conditional_comments: true,
+        special: 'script,noscript',
+        start: function (name, attrs) {
+          if (!data.source1 && name === 'param') {
+            data.source1 = attrs.map.movie;
           }
-          data = global$2.extend(attrs.map, data);
-        }
-        if (name === 'script') {
-          var videoScript = $_4q3fmh7jjgwecnw.getVideoScriptMatch(prefixes, attrs.map.src);
-          if (!videoScript) {
-            return;
+          if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {
+            if (!data.type) {
+              data.type = name;
+            }
+            data = global$2.extend(attrs.map, data);
           }
-          data = {
-            type: 'script',
-            source1: attrs.map.src,
-            width: videoScript.width,
-            height: videoScript.height
-          };
-        }
-        if (name === 'source') {
-          if (!data.source1) {
-            data.source1 = attrs.map.src;
-          } else if (!data.source2) {
-            data.source2 = attrs.map.src;
+          if (name === 'script') {
+            var videoScript = VideoScript.getVideoScriptMatch(prefixes, attrs.map.src);
+            if (!videoScript) {
+              return;
+            }
+            data = {
+              type: 'script',
+              source1: attrs.map.src,
+              width: videoScript.width,
+              height: videoScript.height
+            };
           }
+          if (name === 'source') {
+            if (!data.source1) {
+              data.source1 = attrs.map.src;
+            } else if (!data.source2) {
+              data.source2 = attrs.map.src;
+            }
+          }
+          if (name === 'img' && !data.poster) {
+            data.poster = attrs.map.src;
+          }
         }
-        if (name === 'img' && !data.poster) {
-          data.poster = attrs.map.src;
-        }
-      }
-    }).parse(html);
-    data.source1 = data.source1 || data.src || data.data;
-    data.source2 = data.source2 || '';
-    data.poster = data.poster || '';
-    return data;
-  };
-  var ephoxEmbedHtmlToData = function (html) {
-    var fragment = DOM.createFragment(html);
-    var div = fragment.firstChild;
-    return {
-      type: 'ephox-embed-iri',
-      source1: getEphoxEmbedIri(div),
-      source2: '',
-      poster: '',
-      width: $_jbvx7h8jjgwecnx.getMaxWidth(div),
-      height: $_jbvx7h8jjgwecnx.getMaxHeight(div)
+      }).parse(html);
+      data.source1 = data.source1 || data.src || data.data;
+      data.source2 = data.source2 || '';
+      data.poster = data.poster || '';
+      return data;
     };
-  };
-  var htmlToData = function (prefixes, html) {
-    return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);
-  };
-  var $_6mep3hh4jjgwecnt = { htmlToData: htmlToData };
+    var ephoxEmbedHtmlToData = function (html) {
+      var fragment = DOM.createFragment(html);
+      var div = fragment.firstChild;
+      return {
+        type: 'ephox-embed-iri',
+        source1: getEphoxEmbedIri(div),
+        source2: '',
+        poster: '',
+        width: Size.getMaxWidth(div),
+        height: Size.getMaxHeight(div)
+      };
+    };
+    var htmlToData = function (prefixes, html) {
+      return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);
+    };
+    var HtmlToData = { htmlToData: htmlToData };
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');
 
-  var guess = function (url) {
-    var mimes = {
-      mp3: 'audio/mpeg',
-      wav: 'audio/wav',
-      mp4: 'video/mp4',
-      webm: 'video/webm',
-      ogg: 'video/ogg',
-      swf: 'application/x-shockwave-flash'
+    var guess = function (url) {
+      var mimes = {
+        mp3: 'audio/mpeg',
+        wav: 'audio/wav',
+        mp4: 'video/mp4',
+        webm: 'video/webm',
+        ogg: 'video/ogg',
+        swf: 'application/x-shockwave-flash'
+      };
+      var fileEnd = url.toLowerCase().split('.').pop();
+      var mime = mimes[fileEnd];
+      return mime ? mime : '';
     };
-    var fileEnd = url.toLowerCase().split('.').pop();
-    var mime = mimes[fileEnd];
-    return mime ? mime : '';
-  };
-  var $_d9gn6bhcjjgwecol = { guess: guess };
+    var Mime = { guess: guess };
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');
 
-  var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');
+    var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');
 
-  var DOM$1 = global$4.DOM;
-  var setAttributes = function (attrs, updatedAttrs) {
-    var name;
-    var i;
-    var value;
-    var attr;
-    for (name in updatedAttrs) {
-      value = '' + updatedAttrs[name];
-      if (attrs.map[name]) {
-        i = attrs.length;
-        while (i--) {
-          attr = attrs[i];
-          if (attr.name === name) {
-            if (value) {
-              attrs.map[name] = value;
-              attr.value = value;
-            } else {
-              delete attrs.map[name];
-              attrs.splice(i, 1);
+    var DOM$1 = global$4.DOM;
+    var setAttributes = function (attrs, updatedAttrs) {
+      var name;
+      var i;
+      var value;
+      var attr;
+      for (name in updatedAttrs) {
+        value = '' + updatedAttrs[name];
+        if (attrs.map[name]) {
+          i = attrs.length;
+          while (i--) {
+            attr = attrs[i];
+            if (attr.name === name) {
+              if (value) {
+                attrs.map[name] = value;
+                attr.value = value;
+              } else {
+                delete attrs.map[name];
+                attrs.splice(i, 1);
+              }
             }
           }
+        } else if (value) {
+          attrs.push({
+            name: name,
+            value: value
+          });
+          attrs.map[name] = value;
         }
-      } else if (value) {
-        attrs.push({
-          name: name,
-          value: value
-        });
-        attrs.map[name] = value;
       }
-    }
-  };
-  var normalizeHtml = function (html) {
-    var writer = global$6();
-    var parser = global$3(writer);
-    parser.parse(html);
-    return writer.getContent();
-  };
-  var updateHtmlSax = function (html, data, updateAll) {
-    var writer = global$6();
-    var sourceCount = 0;
-    var hasImage;
-    global$3({
-      validate: false,
-      allow_conditional_comments: true,
-      special: 'script,noscript',
-      comment: function (text) {
-        writer.comment(text);
-      },
-      cdata: function (text) {
-        writer.cdata(text);
-      },
-      text: function (text, raw) {
-        writer.text(text, raw);
-      },
-      start: function (name, attrs, empty) {
-        switch (name) {
-        case 'video':
-        case 'object':
-        case 'embed':
-        case 'img':
-        case 'iframe':
-          if (data.height !== undefined && data.width !== undefined) {
-            setAttributes(attrs, {
-              width: data.width,
-              height: data.height
-            });
-          }
-          break;
-        }
-        if (updateAll) {
+    };
+    var normalizeHtml = function (html) {
+      var writer = global$6();
+      var parser = global$3(writer);
+      parser.parse(html);
+      return writer.getContent();
+    };
+    var updateHtmlSax = function (html, data, updateAll) {
+      var writer = global$6();
+      var sourceCount = 0;
+      var hasImage;
+      global$3({
+        validate: false,
+        allow_conditional_comments: true,
+        special: 'script,noscript',
+        comment: function (text) {
+          writer.comment(text);
+        },
+        cdata: function (text) {
+          writer.cdata(text);
+        },
+        text: function (text, raw) {
+          writer.text(text, raw);
+        },
+        start: function (name, attrs, empty) {
           switch (name) {
           case 'video':
-            setAttributes(attrs, {
-              poster: data.poster,
-              src: ''
-            });
-            if (data.source2) {
-              setAttributes(attrs, { src: '' });
-            }
-            break;
+          case 'object':
+          case 'embed':
+          case 'img':
           case 'iframe':
-            setAttributes(attrs, { src: data.source1 });
-            break;
-          case 'source':
-            sourceCount++;
-            if (sourceCount <= 2) {
+            if (data.height !== undefined && data.width !== undefined) {
               setAttributes(attrs, {
-                src: data['source' + sourceCount],
-                type: data['source' + sourceCount + 'mime']
+                width: data.width,
+                height: data.height
               });
-              if (!data['source' + sourceCount]) {
-                return;
-              }
             }
             break;
-          case 'img':
-            if (!data.poster) {
-              return;
-            }
-            hasImage = true;
-            break;
           }
-        }
-        writer.start(name, attrs, empty);
-      },
-      end: function (name) {
-        if (name === 'video' && updateAll) {
-          for (var index = 1; index <= 2; index++) {
-            if (data['source' + index]) {
-              var attrs = [];
-              attrs.map = {};
-              if (sourceCount < index) {
+          if (updateAll) {
+            switch (name) {
+            case 'video':
+              setAttributes(attrs, {
+                poster: data.poster,
+                src: ''
+              });
+              if (data.source2) {
+                setAttributes(attrs, { src: '' });
+              }
+              break;
+            case 'iframe':
+              setAttributes(attrs, { src: data.source1 });
+              break;
+            case 'source':
+              sourceCount++;
+              if (sourceCount <= 2) {
                 setAttributes(attrs, {
-                  src: data['source' + index],
-                  type: data['source' + index + 'mime']
+                  src: data['source' + sourceCount],
+                  type: data['source' + sourceCount + 'mime']
                 });
-                writer.start('source', attrs, true);
+                if (!data['source' + sourceCount]) {
+                  return;
+                }
               }
+              break;
+            case 'img':
+              if (!data.poster) {
+                return;
+              }
+              hasImage = true;
+              break;
             }
           }
+          writer.start(name, attrs, empty);
+        },
+        end: function (name) {
+          if (name === 'video' && updateAll) {
+            for (var index = 1; index <= 2; index++) {
+              if (data['source' + index]) {
+                var attrs = [];
+                attrs.map = {};
+                if (sourceCount < index) {
+                  setAttributes(attrs, {
+                    src: data['source' + index],
+                    type: data['source' + index + 'mime']
+                  });
+                  writer.start('source', attrs, true);
+                }
+              }
+            }
+          }
+          if (data.poster && name === 'object' && updateAll && !hasImage) {
+            var imgAttrs = [];
+            imgAttrs.map = {};
+            setAttributes(imgAttrs, {
+              src: data.poster,
+              width: data.width,
+              height: data.height
+            });
+            writer.start('img', imgAttrs, true);
+          }
+          writer.end(name);
         }
-        if (data.poster && name === 'object' && updateAll && !hasImage) {
-          var imgAttrs = [];
-          imgAttrs.map = {};
-          setAttributes(imgAttrs, {
-            src: data.poster,
-            width: data.width,
-            height: data.height
-          });
-          writer.start('img', imgAttrs, true);
-        }
-        writer.end(name);
-      }
-    }, global$7({})).parse(html);
-    return writer.getContent();
-  };
-  var isEphoxEmbed$1 = function (html) {
-    var fragment = DOM$1.createFragment(html);
-    return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';
-  };
-  var updateEphoxEmbed = function (html, data) {
-    var fragment = DOM$1.createFragment(html);
-    var div = fragment.firstChild;
-    $_jbvx7h8jjgwecnx.setMaxWidth(div, data.width);
-    $_jbvx7h8jjgwecnx.setMaxHeight(div, data.height);
-    return normalizeHtml(div.outerHTML);
-  };
-  var updateHtml = function (html, data, updateAll) {
-    return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);
-  };
-  var $_s3qkohdjjgwecon = { updateHtml: updateHtml };
-
-  var urlPatterns = [
-    {
-      regex: /youtu\.be\/([\w\-_\?&=.]+)/i,
-      type: 'iframe',
-      w: 560,
-      h: 314,
-      url: '//www.youtube.com/embed/$1',
-      allowFullscreen: true
-    },
-    {
-      regex: /youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,
-      type: 'iframe',
-      w: 560,
-      h: 314,
-      url: '//www.youtube.com/embed/$2?$4',
-      allowFullscreen: true
-    },
-    {
-      regex: /youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,
-      type: 'iframe',
-      w: 560,
-      h: 314,
-      url: '//www.youtube.com/embed/$1',
-      allowFullscreen: true
-    },
-    {
-      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: true
-    },
-    {
-      regex: /vimeo\.com\/(.*)\/([0-9]+)/,
-      type: 'iframe',
-      w: 425,
-      h: 350,
-      url: '//player.vimeo.com/video/$2?title=0&amp;byline=0',
-      allowFullscreen: true
-    },
-    {
-      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: false
-    },
-    {
-      regex: /dailymotion\.com\/video\/([^_]+)/,
-      type: 'iframe',
-      w: 480,
-      h: 270,
-      url: '//www.dailymotion.com/embed/video/$1',
-      allowFullscreen: true
-    },
-    {
-      regex: /dai\.ly\/([^_]+)/,
-      type: 'iframe',
-      w: 480,
-      h: 270,
-      url: '//www.dailymotion.com/embed/video/$1',
-      allowFullscreen: true
-    }
-  ];
-  var getUrl = function (pattern, url) {
-    var match = pattern.regex.exec(url);
-    var newUrl = pattern.url;
-    var _loop_1 = function (i) {
-      newUrl = newUrl.replace('$' + i, function () {
-        return match[i] ? match[i] : '';
-      });
+      }, global$7({})).parse(html);
+      return writer.getContent();
     };
-    for (var i = 0; i < match.length; i++) {
-      _loop_1(i);
-    }
-    return newUrl.replace(/\?$/, '');
-  };
-  var matchPattern = function (url) {
-    var pattern = urlPatterns.filter(function (pattern) {
-      return pattern.regex.test(url);
-    });
-    if (pattern.length > 0) {
-      return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });
-    } else {
-      return null;
-    }
-  };
+    var isEphoxEmbed$1 = function (html) {
+      var fragment = DOM$1.createFragment(html);
+      return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';
+    };
+    var updateEphoxEmbed = function (html, data) {
+      var fragment = DOM$1.createFragment(html);
+      var div = fragment.firstChild;
+      Size.setMaxWidth(div, data.width);
+      Size.setMaxHeight(div, data.height);
+      return normalizeHtml(div.outerHTML);
+    };
+    var updateHtml = function (html, data, updateAll) {
+      return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);
+    };
+    var UpdateHtml = { updateHtml: updateHtml };
 
-  var getIframeHtml = function (data) {
-    var allowFullscreen = data.allowFullscreen ? ' allowFullscreen="1"' : '';
-    return '<iframe src="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '"' + allowFullscreen + '></iframe>';
-  };
-  var getFlashHtml = function (data) {
-    var html = '<object data="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '" type="application/x-shockwave-flash">';
-    if (data.poster) {
-      html += '<img src="' + data.poster + '" width="' + data.width + '" height="' + data.height + '" />';
-    }
-    html += '</object>';
-    return html;
-  };
-  var getAudioHtml = function (data, audioTemplateCallback) {
-    if (audioTemplateCallback) {
-      return audioTemplateCallback(data);
-    } else {
-      return '<audio controls="controls" src="' + data.source1 + '">' + (data.source2 ? '\n<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') + '</audio>';
-    }
-  };
-  var getVideoHtml = function (data, videoTemplateCallback) {
-    if (videoTemplateCallback) {
-      return videoTemplateCallback(data);
-    } else {
-      return '<video width="' + data.width + '" height="' + data.height + '"' + (data.poster ? ' poster="' + data.poster + '"' : '') + ' controls="controls">\n' + '<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' + (data.source2 ? '<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') + '</video>';
-    }
-  };
-  var getScriptHtml = function (data) {
-    return '<script src="' + data.source1 + '"></script>';
-  };
-  var dataToHtml = function (editor, dataIn) {
-    var data = global$2.extend({}, dataIn);
-    if (!data.source1) {
-      global$2.extend(data, $_6mep3hh4jjgwecnt.htmlToData($_69rpmgh3jjgwecnr.getScripts(editor), data.embed));
-      if (!data.source1) {
-        return '';
+    var urlPatterns = [
+      {
+        regex: /youtu\.be\/([\w\-_\?&=.]+)/i,
+        type: 'iframe',
+        w: 560,
+        h: 314,
+        url: '//www.youtube.com/embed/$1',
+        allowFullscreen: true
+      },
+      {
+        regex: /youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,
+        type: 'iframe',
+        w: 560,
+        h: 314,
+        url: '//www.youtube.com/embed/$2?$4',
+        allowFullscreen: true
+      },
+      {
+        regex: /youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,
+        type: 'iframe',
+        w: 560,
+        h: 314,
+        url: '//www.youtube.com/embed/$1',
+        allowFullscreen: true
+      },
+      {
+        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: true
+      },
+      {
+        regex: /vimeo\.com\/(.*)\/([0-9]+)/,
+        type: 'iframe',
+        w: 425,
+        h: 350,
+        url: '//player.vimeo.com/video/$2?title=0&amp;byline=0',
+        allowFullscreen: true
+      },
+      {
+        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: false
+      },
+      {
+        regex: /dailymotion\.com\/video\/([^_]+)/,
+        type: 'iframe',
+        w: 480,
+        h: 270,
+        url: '//www.dailymotion.com/embed/video/$1',
+        allowFullscreen: true
+      },
+      {
+        regex: /dai\.ly\/([^_]+)/,
+        type: 'iframe',
+        w: 480,
+        h: 270,
+        url: '//www.dailymotion.com/embed/video/$1',
+        allowFullscreen: true
       }
-    }
-    if (!data.source2) {
-      data.source2 = '';
-    }
-    if (!data.poster) {
-      data.poster = '';
-    }
-    data.source1 = editor.convertURL(data.source1, 'source');
-    data.source2 = editor.convertURL(data.source2, 'source');
-    data.source1mime = $_d9gn6bhcjjgwecol.guess(data.source1);
-    data.source2mime = $_d9gn6bhcjjgwecol.guess(data.source2);
-    data.poster = editor.convertURL(data.poster, 'poster');
-    var pattern = matchPattern(data.source1);
-    if (pattern) {
-      data.source1 = pattern.url;
-      data.type = pattern.type;
-      data.allowFullscreen = pattern.allowFullscreen;
-      data.width = data.width || pattern.w;
-      data.height = data.height || pattern.h;
-    }
-    if (data.embed) {
-      return $_s3qkohdjjgwecon.updateHtml(data.embed, data, true);
-    } else {
-      var videoScript = $_4q3fmh7jjgwecnw.getVideoScriptMatch($_69rpmgh3jjgwecnr.getScripts(editor), data.source1);
-      if (videoScript) {
-        data.type = 'script';
-        data.width = videoScript.width;
-        data.height = videoScript.height;
+    ];
+    var getUrl = function (pattern, url) {
+      var match = pattern.regex.exec(url);
+      var newUrl = pattern.url;
+      var _loop_1 = function (i) {
+        newUrl = newUrl.replace('$' + i, function () {
+          return match[i] ? match[i] : '';
+        });
+      };
+      for (var i = 0; i < match.length; i++) {
+        _loop_1(i);
       }
-      var audioTemplateCallback = $_69rpmgh3jjgwecnr.getAudioTemplateCallback(editor);
-      var videoTemplateCallback = $_69rpmgh3jjgwecnr.getVideoTemplateCallback(editor);
-      data.width = data.width || 300;
-      data.height = data.height || 150;
-      global$2.each(data, function (value, key) {
-        data[key] = editor.dom.encode(value);
+      return newUrl.replace(/\?$/, '');
+    };
+    var matchPattern = function (url) {
+      var pattern = urlPatterns.filter(function (pattern) {
+        return pattern.regex.test(url);
       });
-      if (data.type === 'iframe') {
-        return getIframeHtml(data);
-      } else if (data.source1mime === 'application/x-shockwave-flash') {
-        return getFlashHtml(data);
-      } else if (data.source1mime.indexOf('audio') !== -1) {
-        return getAudioHtml(data, audioTemplateCallback);
-      } else if (data.type === 'script') {
-        return getScriptHtml(data);
+      if (pattern.length > 0) {
+        return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });
       } else {
-        return getVideoHtml(data, videoTemplateCallback);
+        return null;
       }
-    }
-  };
-  var $_bc7nlthbjjgwecoh = { dataToHtml: dataToHtml };
+    };
 
-  var cache = {};
-  var embedPromise = function (data, dataToHtml, handler) {
-    return new global$5(function (res, rej) {
-      var wrappedResolve = function (response) {
-        if (response.html) {
-          cache[data.source1] = response;
-        }
-        return res({
-          url: data.source1,
-          html: response.html ? response.html : dataToHtml(data)
-        });
-      };
-      if (cache[data.source1]) {
-        wrappedResolve(cache[data.source1]);
+    var getIframeHtml = function (data) {
+      var allowFullscreen = data.allowFullscreen ? ' allowFullscreen="1"' : '';
+      return '<iframe src="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '"' + allowFullscreen + '></iframe>';
+    };
+    var getFlashHtml = function (data) {
+      var html = '<object data="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '" type="application/x-shockwave-flash">';
+      if (data.poster) {
+        html += '<img src="' + data.poster + '" width="' + data.width + '" height="' + data.height + '" />';
+      }
+      html += '</object>';
+      return html;
+    };
+    var getAudioHtml = function (data, audioTemplateCallback) {
+      if (audioTemplateCallback) {
+        return audioTemplateCallback(data);
       } else {
-        handler({ url: data.source1 }, wrappedResolve, rej);
+        return '<audio controls="controls" src="' + data.source1 + '">' + (data.source2 ? '\n<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') + '</audio>';
       }
-    });
-  };
-  var defaultPromise = function (data, dataToHtml) {
-    return new global$5(function (res) {
-      res({
-        html: dataToHtml(data),
-        url: data.source1
-      });
-    });
-  };
-  var loadedData = function (editor) {
-    return function (data) {
-      return $_bc7nlthbjjgwecoh.dataToHtml(editor, data);
     };
-  };
-  var getEmbedHtml = function (editor, data) {
-    var embedHandler = $_69rpmgh3jjgwecnr.getUrlResolver(editor);
-    return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));
-  };
-  var isCached = function (url) {
-    return cache.hasOwnProperty(url);
-  };
-  var $_cwvqyth9jjgweco9 = {
-    getEmbedHtml: getEmbedHtml,
-    isCached: isCached
-  };
-
-  var doSyncSize = function (widthCtrl, heightCtrl) {
-    widthCtrl.state.set('oldVal', widthCtrl.value());
-    heightCtrl.state.set('oldVal', heightCtrl.value());
-  };
-  var doSizeControls = function (win, f) {
-    var widthCtrl = win.find('#width')[0];
-    var heightCtrl = win.find('#height')[0];
-    var constrained = win.find('#constrain')[0];
-    if (widthCtrl && heightCtrl && constrained) {
-      f(widthCtrl, heightCtrl, constrained.checked());
-    }
-  };
-  var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {
-    var oldWidth = widthCtrl.state.get('oldVal');
-    var oldHeight = heightCtrl.state.get('oldVal');
-    var newWidth = widthCtrl.value();
-    var newHeight = heightCtrl.value();
-    if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {
-      if (newWidth !== oldWidth) {
-        newHeight = Math.round(newWidth / oldWidth * newHeight);
-        if (!isNaN(newHeight)) {
-          heightCtrl.value(newHeight);
+    var getVideoHtml = function (data, videoTemplateCallback) {
+      if (videoTemplateCallback) {
+        return videoTemplateCallback(data);
+      } else {
+        return '<video width="' + data.width + '" height="' + data.height + '"' + (data.poster ? ' poster="' + data.poster + '"' : '') + ' controls="controls">\n' + '<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' + (data.source2 ? '<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') + '</video>';
+      }
+    };
+    var getScriptHtml = function (data) {
+      return '<script src="' + data.source1 + '"></script>';
+    };
+    var dataToHtml = function (editor, dataIn) {
+      var data = global$2.extend({}, dataIn);
+      if (!data.source1) {
+        global$2.extend(data, HtmlToData.htmlToData(Settings.getScripts(editor), data.embed));
+        if (!data.source1) {
+          return '';
         }
+      }
+      if (!data.source2) {
+        data.source2 = '';
+      }
+      if (!data.poster) {
+        data.poster = '';
+      }
+      data.source1 = editor.convertURL(data.source1, 'source');
+      data.source2 = editor.convertURL(data.source2, 'source');
+      data.source1mime = Mime.guess(data.source1);
+      data.source2mime = Mime.guess(data.source2);
+      data.poster = editor.convertURL(data.poster, 'poster');
+      var pattern = matchPattern(data.source1);
+      if (pattern) {
+        data.source1 = pattern.url;
+        data.type = pattern.type;
+        data.allowFullscreen = pattern.allowFullscreen;
+        data.width = data.width || pattern.w;
+        data.height = data.height || pattern.h;
+      }
+      if (data.embed) {
+        return UpdateHtml.updateHtml(data.embed, data, true);
       } else {
-        newWidth = Math.round(newHeight / oldHeight * newWidth);
-        if (!isNaN(newWidth)) {
-          widthCtrl.value(newWidth);
+        var videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), data.source1);
+        if (videoScript) {
+          data.type = 'script';
+          data.width = videoScript.width;
+          data.height = videoScript.height;
         }
+        var audioTemplateCallback = Settings.getAudioTemplateCallback(editor);
+        var videoTemplateCallback = Settings.getVideoTemplateCallback(editor);
+        data.width = data.width || 300;
+        data.height = data.height || 150;
+        global$2.each(data, function (value, key) {
+          data[key] = editor.dom.encode(value);
+        });
+        if (data.type === 'iframe') {
+          return getIframeHtml(data);
+        } else if (data.source1mime === 'application/x-shockwave-flash') {
+          return getFlashHtml(data);
+        } else if (data.source1mime.indexOf('audio') !== -1) {
+          return getAudioHtml(data, audioTemplateCallback);
+        } else if (data.type === 'script') {
+          return getScriptHtml(data);
+        } else {
+          return getVideoHtml(data, videoTemplateCallback);
+        }
       }
-    }
-    doSyncSize(widthCtrl, heightCtrl);
-  };
-  var syncSize = function (win) {
-    doSizeControls(win, doSyncSize);
-  };
-  var updateSize = function (win) {
-    doSizeControls(win, doUpdateSize);
-  };
-  var createUi = function (onChange) {
-    var recalcSize = function () {
-      onChange(function (win) {
-        updateSize(win);
-      });
     };
-    return {
-      type: 'container',
-      label: 'Dimensions',
-      layout: 'flex',
-      align: 'center',
-      spacing: 5,
-      items: [
-        {
-          name: 'width',
-          type: 'textbox',
-          maxLength: 5,
-          size: 5,
-          onchange: recalcSize,
-          ariaLabel: 'Width'
-        },
-        {
-          type: 'label',
-          text: 'x'
-        },
-        {
-          name: 'height',
-          type: 'textbox',
-          maxLength: 5,
-          size: 5,
-          onchange: recalcSize,
-          ariaLabel: 'Height'
-        },
-        {
-          name: 'constrain',
-          type: 'checkbox',
-          checked: true,
-          text: 'Constrain proportions'
+    var DataToHtml = { dataToHtml: dataToHtml };
+
+    var cache = {};
+    var embedPromise = function (data, dataToHtml, handler) {
+      return new global$5(function (res, rej) {
+        var wrappedResolve = function (response) {
+          if (response.html) {
+            cache[data.source1] = response;
+          }
+          return res({
+            url: data.source1,
+            html: response.html ? response.html : dataToHtml(data)
+          });
+        };
+        if (cache[data.source1]) {
+          wrappedResolve(cache[data.source1]);
+        } else {
+          handler({ url: data.source1 }, wrappedResolve, rej);
         }
-      ]
+      });
     };
-  };
-  var $_ewaahuhhjjgwecow = {
-    createUi: createUi,
-    syncSize: syncSize,
-    updateSize: updateSize
-  };
-
-  var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';
-  var handleError = function (editor) {
-    return function (error) {
-      var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';
-      editor.notificationManager.open({
-        type: 'error',
-        text: errorMessage
+    var defaultPromise = function (data, dataToHtml) {
+      return new global$5(function (res) {
+        res({
+          html: dataToHtml(data),
+          url: data.source1
+        });
       });
     };
-  };
-  var getData = function (editor) {
-    var element = editor.selection.getNode();
-    var dataEmbed = element.getAttribute('data-ephox-embed-iri');
-    if (dataEmbed) {
-      return {
-        'source1': dataEmbed,
-        'data-ephox-embed-iri': dataEmbed,
-        'width': $_jbvx7h8jjgwecnx.getMaxWidth(element),
-        'height': $_jbvx7h8jjgwecnx.getMaxHeight(element)
+    var loadedData = function (editor) {
+      return function (data) {
+        return DataToHtml.dataToHtml(editor, data);
       };
-    }
-    return element.getAttribute('data-mce-object') ? $_6mep3hh4jjgwecnt.htmlToData($_69rpmgh3jjgwecnr.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};
-  };
-  var getSource = function (editor) {
-    var elm = editor.selection.getNode();
-    if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {
-      return editor.selection.getContent();
-    }
-  };
-  var addEmbedHtml = function (win, editor) {
-    return function (response) {
-      var html = response.html;
-      var embed = win.find('#embed')[0];
-      var data = global$2.extend($_6mep3hh4jjgwecnt.htmlToData($_69rpmgh3jjgwecnr.getScripts(editor), html), { source1: response.url });
-      win.fromJSON(data);
-      if (embed) {
-        embed.value(html);
-        $_ewaahuhhjjgwecow.updateSize(win);
+    };
+    var getEmbedHtml = function (editor, data) {
+      var embedHandler = Settings.getUrlResolver(editor);
+      return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));
+    };
+    var isCached = function (url) {
+      return cache.hasOwnProperty(url);
+    };
+    var Service = {
+      getEmbedHtml: getEmbedHtml,
+      isCached: isCached
+    };
+
+    var doSyncSize = function (widthCtrl, heightCtrl) {
+      widthCtrl.state.set('oldVal', widthCtrl.value());
+      heightCtrl.state.set('oldVal', heightCtrl.value());
+    };
+    var doSizeControls = function (win, f) {
+      var widthCtrl = win.find('#width')[0];
+      var heightCtrl = win.find('#height')[0];
+      var constrained = win.find('#constrain')[0];
+      if (widthCtrl && heightCtrl && constrained) {
+        f(widthCtrl, heightCtrl, constrained.checked());
       }
     };
-  };
-  var selectPlaceholder = function (editor, beforeObjects) {
-    var i;
-    var y;
-    var afterObjects = editor.dom.select('img[data-mce-object]');
-    for (i = 0; i < beforeObjects.length; i++) {
-      for (y = afterObjects.length - 1; y >= 0; y--) {
-        if (beforeObjects[i] === afterObjects[y]) {
-          afterObjects.splice(y, 1);
+    var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {
+      var oldWidth = widthCtrl.state.get('oldVal');
+      var oldHeight = heightCtrl.state.get('oldVal');
+      var newWidth = widthCtrl.value();
+      var newHeight = heightCtrl.value();
+      if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {
+        if (newWidth !== oldWidth) {
+          newHeight = Math.round(newWidth / oldWidth * newHeight);
+          if (!isNaN(newHeight)) {
+            heightCtrl.value(newHeight);
+          }
+        } else {
+          newWidth = Math.round(newHeight / oldHeight * newWidth);
+          if (!isNaN(newWidth)) {
+            widthCtrl.value(newWidth);
+          }
         }
       }
-    }
-    editor.selection.select(afterObjects[0]);
-  };
-  var handleInsert = function (editor, html) {
-    var beforeObjects = editor.dom.select('img[data-mce-object]');
-    editor.insertContent(html);
-    selectPlaceholder(editor, beforeObjects);
-    editor.nodeChanged();
-  };
-  var submitForm = function (win, editor) {
-    var data = win.toJSON();
-    data.embed = $_s3qkohdjjgwecon.updateHtml(data.embed, data);
-    if (data.embed && $_cwvqyth9jjgweco9.isCached(data.source1)) {
-      handleInsert(editor, data.embed);
-    } else {
-      $_cwvqyth9jjgweco9.getEmbedHtml(editor, data).then(function (response) {
-        handleInsert(editor, response.html);
-      }).catch(handleError(editor));
-    }
-  };
-  var populateMeta = function (win, meta) {
-    global$2.each(meta, function (value, key) {
-      win.find('#' + key).value(value);
-    });
-  };
-  var showDialog = function (editor) {
-    var win;
-    var data;
-    var generalFormItems = [{
-        name: 'source1',
-        type: 'filepicker',
-        filetype: 'media',
-        size: 40,
-        autofocus: true,
-        label: 'Source',
-        onpaste: function () {
-          setTimeout(function () {
-            $_cwvqyth9jjgweco9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));
-          }, 1);
-        },
-        onchange: function (e) {
-          $_cwvqyth9jjgweco9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));
-          populateMeta(win, e.meta);
-        },
-        onbeforecall: function (e) {
-          e.meta = win.toJSON();
-        }
-      }];
-    var advancedFormItems = [];
-    var reserialise = function (update) {
-      update(win);
-      data = win.toJSON();
-      win.find('#embed').value($_s3qkohdjjgwecon.updateHtml(data.embed, data));
+      doSyncSize(widthCtrl, heightCtrl);
     };
-    if ($_69rpmgh3jjgwecnr.hasAltSource(editor)) {
-      advancedFormItems.push({
-        name: 'source2',
-        type: 'filepicker',
-        filetype: 'media',
-        size: 40,
-        label: 'Alternative source'
-      });
-    }
-    if ($_69rpmgh3jjgwecnr.hasPoster(editor)) {
-      advancedFormItems.push({
-        name: 'poster',
-        type: 'filepicker',
-        filetype: 'image',
-        size: 40,
-        label: 'Poster'
-      });
-    }
-    if ($_69rpmgh3jjgwecnr.hasDimensions(editor)) {
-      var control = $_ewaahuhhjjgwecow.createUi(reserialise);
-      generalFormItems.push(control);
-    }
-    data = getData(editor);
-    var embedTextBox = {
-      id: 'mcemediasource',
-      type: 'textbox',
-      flex: 1,
-      name: 'embed',
-      value: getSource(editor),
-      multiline: true,
-      rows: 5,
-      label: 'Source'
+    var syncSize = function (win) {
+      doSizeControls(win, doSyncSize);
     };
-    var updateValueOnChange = function () {
-      data = global$2.extend({}, $_6mep3hh4jjgwecnt.htmlToData($_69rpmgh3jjgwecnr.getScripts(editor), this.value()));
-      this.parent().parent().fromJSON(data);
+    var updateSize = function (win) {
+      doSizeControls(win, doUpdateSize);
     };
-    embedTextBox[embedChange] = updateValueOnChange;
-    var body = [
-      {
-        title: 'General',
-        type: 'form',
-        items: generalFormItems
-      },
-      {
-        title: 'Embed',
+    var createUi = function (onChange) {
+      var recalcSize = function () {
+        onChange(function (win) {
+          updateSize(win);
+        });
+      };
+      return {
         type: 'container',
+        label: 'Dimensions',
         layout: 'flex',
-        direction: 'column',
-        align: 'stretch',
-        padding: 10,
-        spacing: 10,
+        align: 'center',
+        spacing: 5,
         items: [
           {
+            name: 'width',
+            type: 'textbox',
+            maxLength: 5,
+            size: 5,
+            onchange: recalcSize,
+            ariaLabel: 'Width'
+          },
+          {
             type: 'label',
-            text: 'Paste your embed code below:',
-            forId: 'mcemediasource'
+            text: 'x'
           },
-          embedTextBox
+          {
+            name: 'height',
+            type: 'textbox',
+            maxLength: 5,
+            size: 5,
+            onchange: recalcSize,
+            ariaLabel: 'Height'
+          },
+          {
+            name: 'constrain',
+            type: 'checkbox',
+            checked: true,
+            text: 'Constrain proportions'
+          }
         ]
+      };
+    };
+    var SizeManager = {
+      createUi: createUi,
+      syncSize: syncSize,
+      updateSize: updateSize
+    };
+
+    var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';
+    var handleError = function (editor) {
+      return function (error) {
+        var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';
+        editor.notificationManager.open({
+          type: 'error',
+          text: errorMessage
+        });
+      };
+    };
+    var getData = function (editor) {
+      var element = editor.selection.getNode();
+      var dataEmbed = element.getAttribute('data-ephox-embed-iri');
+      if (dataEmbed) {
+        return {
+          'source1': dataEmbed,
+          'data-ephox-embed-iri': dataEmbed,
+          'width': Size.getMaxWidth(element),
+          'height': Size.getMaxHeight(element)
+        };
       }
-    ];
-    if (advancedFormItems.length > 0) {
-      body.push({
-        title: 'Advanced',
-        type: 'form',
-        items: advancedFormItems
+      return element.getAttribute('data-mce-object') ? HtmlToData.htmlToData(Settings.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};
+    };
+    var getSource = function (editor) {
+      var elm = editor.selection.getNode();
+      if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {
+        return editor.selection.getContent();
+      }
+    };
+    var addEmbedHtml = function (win, editor) {
+      return function (response) {
+        var html = response.html;
+        var embed = win.find('#embed')[0];
+        var data = global$2.extend(HtmlToData.htmlToData(Settings.getScripts(editor), html), { source1: response.url });
+        win.fromJSON(data);
+        if (embed) {
+          embed.value(html);
+          SizeManager.updateSize(win);
+        }
+      };
+    };
+    var selectPlaceholder = function (editor, beforeObjects) {
+      var i;
+      var y;
+      var afterObjects = editor.dom.select('img[data-mce-object]');
+      for (i = 0; i < beforeObjects.length; i++) {
+        for (y = afterObjects.length - 1; y >= 0; y--) {
+          if (beforeObjects[i] === afterObjects[y]) {
+            afterObjects.splice(y, 1);
+          }
+        }
+      }
+      editor.selection.select(afterObjects[0]);
+    };
+    var handleInsert = function (editor, html) {
+      var beforeObjects = editor.dom.select('img[data-mce-object]');
+      editor.insertContent(html);
+      selectPlaceholder(editor, beforeObjects);
+      editor.nodeChanged();
+    };
+    var submitForm = function (win, editor) {
+      var data = win.toJSON();
+      data.embed = UpdateHtml.updateHtml(data.embed, data);
+      if (data.embed && Service.isCached(data.source1)) {
+        handleInsert(editor, data.embed);
+      } else {
+        Service.getEmbedHtml(editor, data).then(function (response) {
+          handleInsert(editor, response.html);
+        }).catch(handleError(editor));
+      }
+    };
+    var populateMeta = function (win, meta) {
+      global$2.each(meta, function (value, key) {
+        win.find('#' + key).value(value);
       });
-    }
-    win = editor.windowManager.open({
-      title: 'Insert/edit media',
-      data: data,
-      bodyType: 'tabpanel',
-      body: body,
-      onSubmit: function () {
-        $_ewaahuhhjjgwecow.updateSize(win);
-        submitForm(win, editor);
+    };
+    var showDialog = function (editor) {
+      var win;
+      var data;
+      var generalFormItems = [{
+          name: 'source1',
+          type: 'filepicker',
+          filetype: 'media',
+          size: 40,
+          autofocus: true,
+          label: 'Source',
+          onpaste: function () {
+            setTimeout(function () {
+              Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));
+            }, 1);
+          },
+          onchange: function (e) {
+            Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));
+            populateMeta(win, e.meta);
+          },
+          onbeforecall: function (e) {
+            e.meta = win.toJSON();
+          }
+        }];
+      var advancedFormItems = [];
+      var reserialise = function (update) {
+        update(win);
+        data = win.toJSON();
+        win.find('#embed').value(UpdateHtml.updateHtml(data.embed, data));
+      };
+      if (Settings.hasAltSource(editor)) {
+        advancedFormItems.push({
+          name: 'source2',
+          type: 'filepicker',
+          filetype: 'media',
+          size: 40,
+          label: 'Alternative source'
+        });
       }
-    });
-    $_ewaahuhhjjgwecow.syncSize(win);
-  };
-  var $_e3lvjbh0jjgwecnm = { showDialog: showDialog };
+      if (Settings.hasPoster(editor)) {
+        advancedFormItems.push({
+          name: 'poster',
+          type: 'filepicker',
+          filetype: 'image',
+          size: 40,
+          label: 'Poster'
+        });
+      }
+      if (Settings.hasDimensions(editor)) {
+        var control = SizeManager.createUi(reserialise);
+        generalFormItems.push(control);
+      }
+      data = getData(editor);
+      var embedTextBox = {
+        id: 'mcemediasource',
+        type: 'textbox',
+        flex: 1,
+        name: 'embed',
+        value: getSource(editor),
+        multiline: true,
+        rows: 5,
+        label: 'Source'
+      };
+      var updateValueOnChange = function () {
+        data = global$2.extend({}, HtmlToData.htmlToData(Settings.getScripts(editor), this.value()));
+        this.parent().parent().fromJSON(data);
+      };
+      embedTextBox[embedChange] = updateValueOnChange;
+      var body = [
+        {
+          title: 'General',
+          type: 'form',
+          items: generalFormItems
+        },
+        {
+          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'
+            },
+            embedTextBox
+          ]
+        }
+      ];
+      if (advancedFormItems.length > 0) {
+        body.push({
+          title: 'Advanced',
+          type: 'form',
+          items: advancedFormItems
+        });
+      }
+      win = editor.windowManager.open({
+        title: 'Insert/edit media',
+        data: data,
+        bodyType: 'tabpanel',
+        body: body,
+        onSubmit: function () {
+          SizeManager.updateSize(win);
+          submitForm(win, editor);
+        }
+      });
+      SizeManager.syncSize(win);
+    };
+    var Dialog = { showDialog: showDialog };
 
-  var get = function (editor) {
-    var showDialog = function () {
-      $_e3lvjbh0jjgwecnm.showDialog(editor);
+    var get = function (editor) {
+      var showDialog = function () {
+        Dialog.showDialog(editor);
+      };
+      return { showDialog: showDialog };
     };
-    return { showDialog: showDialog };
-  };
-  var $_9lh0mgzjjgwecnk = { get: get };
+    var Api = { get: get };
 
-  var register = function (editor) {
-    var showDialog = function () {
-      $_e3lvjbh0jjgwecnm.showDialog(editor);
+    var register = function (editor) {
+      var showDialog = function () {
+        Dialog.showDialog(editor);
+      };
+      editor.addCommand('mceMedia', showDialog);
     };
-    editor.addCommand('mceMedia', showDialog);
-  };
-  var $_3pne6fhijjgwecoz = { register: register };
+    var Commands = { register: register };
 
-  var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');
+    var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');
 
-  var sanitize = function (editor, html) {
-    if ($_69rpmgh3jjgwecnr.shouldFilterHtml(editor) === false) {
-      return html;
-    }
-    var writer = global$6();
-    var blocked;
-    global$3({
-      validate: false,
-      allow_conditional_comments: false,
-      special: 'script,noscript',
-      comment: function (text) {
-        writer.comment(text);
-      },
-      cdata: function (text) {
-        writer.cdata(text);
-      },
-      text: function (text, raw) {
-        writer.text(text, raw);
-      },
-      start: function (name, attrs, empty) {
-        blocked = true;
-        if (name === 'script' || name === 'noscript') {
-          return;
-        }
-        for (var i = 0; i < attrs.length; i++) {
-          if (attrs[i].name.indexOf('on') === 0) {
+    var sanitize = function (editor, html) {
+      if (Settings.shouldFilterHtml(editor) === false) {
+        return html;
+      }
+      var writer = global$6();
+      var blocked;
+      global$3({
+        validate: false,
+        allow_conditional_comments: false,
+        special: 'script,noscript',
+        comment: function (text) {
+          writer.comment(text);
+        },
+        cdata: function (text) {
+          writer.cdata(text);
+        },
+        text: function (text, raw) {
+          writer.text(text, raw);
+        },
+        start: function (name, attrs, empty) {
+          blocked = true;
+          if (name === 'script' || name === 'noscript') {
             return;
           }
-          if (attrs[i].name === 'style') {
-            attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);
+          for (var i = 0; i < attrs.length; i++) {
+            if (attrs[i].name.indexOf('on') === 0) {
+              return;
+            }
+            if (attrs[i].name === 'style') {
+              attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);
+            }
           }
+          writer.start(name, attrs, empty);
+          blocked = false;
+        },
+        end: function (name) {
+          if (blocked) {
+            return;
+          }
+          writer.end(name);
         }
-        writer.start(name, attrs, empty);
-        blocked = false;
-      },
-      end: function (name) {
-        if (blocked) {
-          return;
-        }
-        writer.end(name);
-      }
-    }, global$7({})).parse(html);
-    return writer.getContent();
-  };
-  var $_58i2qvhmjjgwecp7 = { sanitize: sanitize };
+      }, global$7({})).parse(html);
+      return writer.getContent();
+    };
+    var Sanitize = { sanitize: sanitize };
 
-  var createPlaceholderNode = function (editor, node) {
-    var placeHolder;
-    var name = node.name;
-    placeHolder = new global$8('img', 1);
-    placeHolder.shortEnded = true;
-    retainAttributesAndInnerHtml(editor, node, placeHolder);
-    placeHolder.attr({
-      'width': node.attr('width') || '300',
-      'height': node.attr('height') || (name === 'audio' ? '30' : '150'),
-      'style': node.attr('style'),
-      'src': global$1.transparentSrc,
-      'data-mce-object': name,
-      'class': 'mce-object mce-object-' + name
-    });
-    return placeHolder;
-  };
-  var createPreviewIframeNode = function (editor, node) {
-    var previewWrapper;
-    var previewNode;
-    var shimNode;
-    var name = node.name;
-    previewWrapper = new global$8('span', 1);
-    previewWrapper.attr({
-      'contentEditable': 'false',
-      'style': node.attr('style'),
-      'data-mce-object': name,
-      'class': 'mce-preview-object mce-object-' + name
-    });
-    retainAttributesAndInnerHtml(editor, node, previewWrapper);
-    previewNode = new global$8(name, 1);
-    previewNode.attr({
-      src: node.attr('src'),
-      allowfullscreen: node.attr('allowfullscreen'),
-      style: node.attr('style'),
-      class: node.attr('class'),
-      width: node.attr('width'),
-      height: node.attr('height'),
-      frameborder: '0'
-    });
-    shimNode = new global$8('span', 1);
-    shimNode.attr('class', 'mce-shim');
-    previewWrapper.append(previewNode);
-    previewWrapper.append(shimNode);
-    return previewWrapper;
-  };
-  var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {
-    var attrName;
-    var attrValue;
-    var attribs;
-    var ai;
-    var innerHtml;
-    attribs = sourceNode.attributes;
-    ai = attribs.length;
-    while (ai--) {
-      attrName = attribs[ai].name;
-      attrValue = attribs[ai].value;
-      if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {
-        if (attrName === 'data' || attrName === 'src') {
-          attrValue = editor.convertURL(attrValue, attrName);
+    var createPlaceholderNode = function (editor, node) {
+      var placeHolder;
+      var name = node.name;
+      placeHolder = new global$8('img', 1);
+      placeHolder.shortEnded = true;
+      retainAttributesAndInnerHtml(editor, node, placeHolder);
+      placeHolder.attr({
+        'width': node.attr('width') || '300',
+        'height': node.attr('height') || (name === 'audio' ? '30' : '150'),
+        'style': node.attr('style'),
+        'src': global$1.transparentSrc,
+        'data-mce-object': name,
+        'class': 'mce-object mce-object-' + name
+      });
+      return placeHolder;
+    };
+    var createPreviewIframeNode = function (editor, node) {
+      var previewWrapper;
+      var previewNode;
+      var shimNode;
+      var name = node.name;
+      previewWrapper = new global$8('span', 1);
+      previewWrapper.attr({
+        'contentEditable': 'false',
+        'style': node.attr('style'),
+        'data-mce-object': name,
+        'class': 'mce-preview-object mce-object-' + name
+      });
+      retainAttributesAndInnerHtml(editor, node, previewWrapper);
+      previewNode = new global$8(name, 1);
+      previewNode.attr({
+        src: node.attr('src'),
+        allowfullscreen: node.attr('allowfullscreen'),
+        style: node.attr('style'),
+        class: node.attr('class'),
+        width: node.attr('width'),
+        height: node.attr('height'),
+        frameborder: '0'
+      });
+      shimNode = new global$8('span', 1);
+      shimNode.attr('class', 'mce-shim');
+      previewWrapper.append(previewNode);
+      previewWrapper.append(shimNode);
+      return previewWrapper;
+    };
+    var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {
+      var attrName;
+      var attrValue;
+      var attribs;
+      var ai;
+      var innerHtml;
+      attribs = sourceNode.attributes;
+      ai = attribs.length;
+      while (ai--) {
+        attrName = attribs[ai].name;
+        attrValue = attribs[ai].value;
+        if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {
+          if (attrName === 'data' || attrName === 'src') {
+            attrValue = editor.convertURL(attrValue, attrName);
+          }
+          targetNode.attr('data-mce-p-' + attrName, attrValue);
         }
-        targetNode.attr('data-mce-p-' + attrName, attrValue);
       }
-    }
-    innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;
-    if (innerHtml) {
-      targetNode.attr('data-mce-html', escape($_58i2qvhmjjgwecp7.sanitize(editor, innerHtml)));
-      targetNode.firstChild = null;
-    }
-  };
-  var isWithinEphoxEmbed = function (node) {
-    while (node = node.parent) {
-      if (node.attr('data-ephox-embed-iri')) {
-        return true;
+      innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;
+      if (innerHtml) {
+        targetNode.attr('data-mce-html', escape(Sanitize.sanitize(editor, innerHtml)));
+        targetNode.firstChild = null;
       }
-    }
-    return false;
-  };
-  var placeHolderConverter = function (editor) {
-    return function (nodes) {
-      var i = nodes.length;
-      var node;
-      var videoScript;
-      while (i--) {
-        node = nodes[i];
-        if (!node.parent) {
-          continue;
+    };
+    var isWithinEphoxEmbed = function (node) {
+      while (node = node.parent) {
+        if (node.attr('data-ephox-embed-iri')) {
+          return true;
         }
-        if (node.parent.attr('data-mce-object')) {
-          continue;
-        }
-        if (node.name === 'script') {
-          videoScript = $_4q3fmh7jjgwecnw.getVideoScriptMatch($_69rpmgh3jjgwecnr.getScripts(editor), node.attr('src'));
-          if (!videoScript) {
-            continue;
-          }
-        }
-        if (videoScript) {
-          if (videoScript.width) {
-            node.attr('width', videoScript.width.toString());
-          }
-          if (videoScript.height) {
-            node.attr('height', videoScript.height.toString());
-          }
-        }
-        if (node.name === 'iframe' && $_69rpmgh3jjgwecnr.hasLiveEmbeds(editor) && global$1.ceFalse) {
-          if (!isWithinEphoxEmbed(node)) {
-            node.replace(createPreviewIframeNode(editor, node));
-          }
-        } else {
-          if (!isWithinEphoxEmbed(node)) {
-            node.replace(createPlaceholderNode(editor, node));
-          }
-        }
       }
+      return false;
     };
-  };
-  var $_ggjz3ehljjgwecp4 = {
-    createPreviewIframeNode: createPreviewIframeNode,
-    createPlaceholderNode: createPlaceholderNode,
-    placeHolderConverter: placeHolderConverter
-  };
-
-  var setup = function (editor) {
-    editor.on('preInit', function () {
-      var specialElements = editor.schema.getSpecialElements();
-      global$2.each('video audio iframe object'.split(' '), function (name) {
-        specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');
-      });
-      var boolAttrs = editor.schema.getBoolAttrs();
-      global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {
-        boolAttrs[name] = {};
-      });
-      editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', $_ggjz3ehljjgwecp4.placeHolderConverter(editor));
-      editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {
+    var placeHolderConverter = function (editor) {
+      return function (nodes) {
         var i = nodes.length;
         var node;
-        var realElm;
-        var ai;
-        var attribs;
-        var innerHtml;
-        var innerNode;
-        var realElmName;
-        var className;
+        var videoScript;
         while (i--) {
           node = nodes[i];
           if (!node.parent) {
             continue;
           }
-          realElmName = node.attr(name);
-          realElm = new global$8(realElmName, 1);
-          if (realElmName !== 'audio' && realElmName !== 'script') {
-            className = node.attr('class');
-            if (className && className.indexOf('mce-preview-object') !== -1) {
-              realElm.attr({
-                width: node.firstChild.attr('width'),
-                height: node.firstChild.attr('height')
-              });
-            } else {
-              realElm.attr({
-                width: node.attr('width'),
-                height: node.attr('height')
-              });
+          if (node.parent.attr('data-mce-object')) {
+            continue;
+          }
+          if (node.name === 'script') {
+            videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), node.attr('src'));
+            if (!videoScript) {
+              continue;
             }
           }
-          realElm.attr({ style: node.attr('style') });
-          attribs = node.attributes;
-          ai = attribs.length;
-          while (ai--) {
-            var attrName = attribs[ai].name;
-            if (attrName.indexOf('data-mce-p-') === 0) {
-              realElm.attr(attrName.substr(11), attribs[ai].value);
+          if (videoScript) {
+            if (videoScript.width) {
+              node.attr('width', videoScript.width.toString());
             }
+            if (videoScript.height) {
+              node.attr('height', videoScript.height.toString());
+            }
           }
-          if (realElmName === 'script') {
-            realElm.attr('type', 'text/javascript');
+          if (node.name === 'iframe' && Settings.hasLiveEmbeds(editor) && global$1.ceFalse) {
+            if (!isWithinEphoxEmbed(node)) {
+              node.replace(createPreviewIframeNode(editor, node));
+            }
+          } else {
+            if (!isWithinEphoxEmbed(node)) {
+              node.replace(createPlaceholderNode(editor, node));
+            }
           }
-          innerHtml = node.attr('data-mce-html');
-          if (innerHtml) {
-            innerNode = new global$8('#text', 3);
-            innerNode.raw = true;
-            innerNode.value = $_58i2qvhmjjgwecp7.sanitize(editor, unescape(innerHtml));
-            realElm.append(innerNode);
+        }
+      };
+    };
+    var Nodes = {
+      createPreviewIframeNode: createPreviewIframeNode,
+      createPlaceholderNode: createPlaceholderNode,
+      placeHolderConverter: placeHolderConverter
+    };
+
+    var setup = function (editor) {
+      editor.on('preInit', function () {
+        var specialElements = editor.schema.getSpecialElements();
+        global$2.each('video audio iframe object'.split(' '), function (name) {
+          specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');
+        });
+        var boolAttrs = editor.schema.getBoolAttrs();
+        global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {
+          boolAttrs[name] = {};
+        });
+        editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', Nodes.placeHolderConverter(editor));
+        editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {
+          var i = nodes.length;
+          var node;
+          var realElm;
+          var ai;
+          var attribs;
+          var innerHtml;
+          var innerNode;
+          var realElmName;
+          var className;
+          while (i--) {
+            node = nodes[i];
+            if (!node.parent) {
+              continue;
+            }
+            realElmName = node.attr(name);
+            realElm = new global$8(realElmName, 1);
+            if (realElmName !== 'audio' && realElmName !== 'script') {
+              className = node.attr('class');
+              if (className && className.indexOf('mce-preview-object') !== -1) {
+                realElm.attr({
+                  width: node.firstChild.attr('width'),
+                  height: node.firstChild.attr('height')
+                });
+              } else {
+                realElm.attr({
+                  width: node.attr('width'),
+                  height: node.attr('height')
+                });
+              }
+            }
+            realElm.attr({ style: node.attr('style') });
+            attribs = node.attributes;
+            ai = attribs.length;
+            while (ai--) {
+              var attrName = attribs[ai].name;
+              if (attrName.indexOf('data-mce-p-') === 0) {
+                realElm.attr(attrName.substr(11), attribs[ai].value);
+              }
+            }
+            if (realElmName === 'script') {
+              realElm.attr('type', 'text/javascript');
+            }
+            innerHtml = node.attr('data-mce-html');
+            if (innerHtml) {
+              innerNode = new global$8('#text', 3);
+              innerNode.raw = true;
+              innerNode.value = Sanitize.sanitize(editor, unescape(innerHtml));
+              realElm.append(innerNode);
+            }
+            node.replace(realElm);
           }
-          node.replace(realElm);
-        }
+        });
       });
-    });
-    editor.on('setContent', function () {
-      editor.$('span.mce-preview-object').each(function (index, elm) {
-        var $elm = editor.$(elm);
-        if ($elm.find('span.mce-shim', elm).length === 0) {
-          $elm.append('<span class="mce-shim"></span>');
+      editor.on('setContent', function () {
+        editor.$('span.mce-preview-object').each(function (index, elm) {
+          var $elm = editor.$(elm);
+          if ($elm.find('span.mce-shim', elm).length === 0) {
+            $elm.append('<span class="mce-shim"></span>');
+          }
+        });
+      });
+    };
+    var FilterContent = { setup: setup };
+
+    var setup$1 = function (editor) {
+      editor.on('ResolveName', function (e) {
+        var name;
+        if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {
+          e.name = name;
         }
       });
-    });
-  };
-  var $_4o7ga9hjjjgwecp0 = { setup: setup };
+    };
+    var ResolveName = { setup: setup$1 };
 
-  var setup$1 = function (editor) {
-    editor.on('ResolveName', function (e) {
-      var name;
-      if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {
-        e.name = name;
-      }
-    });
-  };
-  var $_1y6lb6hnjjgwecp9 = { setup: setup$1 };
-
-  var setup$2 = function (editor) {
-    editor.on('click keyup', function () {
-      var selectedNode = editor.selection.getNode();
-      if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {
-        if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {
-          selectedNode.setAttribute('data-mce-selected', '2');
+    var setup$2 = function (editor) {
+      editor.on('click keyup', function () {
+        var selectedNode = editor.selection.getNode();
+        if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {
+          if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {
+            selectedNode.setAttribute('data-mce-selected', '2');
+          }
         }
-      }
-    });
-    editor.on('ObjectSelected', function (e) {
-      var objectType = e.target.getAttribute('data-mce-object');
-      if (objectType === 'audio' || objectType === 'script') {
-        e.preventDefault();
-      }
-    });
-    editor.on('objectResized', function (e) {
-      var target = e.target;
-      var html;
-      if (target.getAttribute('data-mce-object')) {
-        html = target.getAttribute('data-mce-html');
-        if (html) {
-          html = unescape(html);
-          target.setAttribute('data-mce-html', escape($_s3qkohdjjgwecon.updateHtml(html, {
-            width: e.width,
-            height: e.height
-          })));
+      });
+      editor.on('ObjectSelected', function (e) {
+        var objectType = e.target.getAttribute('data-mce-object');
+        if (objectType === 'audio' || objectType === 'script') {
+          e.preventDefault();
         }
-      }
-    });
-  };
-  var $_dnm1d2hojjgwecpa = { setup: setup$2 };
+      });
+      editor.on('objectResized', function (e) {
+        var target = e.target;
+        var html;
+        if (target.getAttribute('data-mce-object')) {
+          html = target.getAttribute('data-mce-html');
+          if (html) {
+            html = unescape(html);
+            target.setAttribute('data-mce-html', escape(UpdateHtml.updateHtml(html, {
+              width: e.width,
+              height: e.height
+            })));
+          }
+        }
+      });
+    };
+    var Selection = { setup: setup$2 };
 
-  var register$1 = function (editor) {
-    editor.addButton('media', {
-      tooltip: 'Insert/edit media',
-      cmd: 'mceMedia',
-      stateSelector: [
-        'img[data-mce-object]',
-        'span[data-mce-object]',
-        'div[data-ephox-embed-iri]'
-      ]
+    var register$1 = function (editor) {
+      editor.addButton('media', {
+        tooltip: 'Insert/edit media',
+        cmd: 'mceMedia',
+        stateSelector: [
+          'img[data-mce-object]',
+          'span[data-mce-object]',
+          'div[data-ephox-embed-iri]'
+        ]
+      });
+      editor.addMenuItem('media', {
+        icon: 'media',
+        text: 'Media',
+        cmd: 'mceMedia',
+        context: 'insert',
+        prependToContext: true
+      });
+    };
+    var Buttons = { register: register$1 };
+
+    global.add('media', function (editor) {
+      Commands.register(editor);
+      Buttons.register(editor);
+      ResolveName.setup(editor);
+      FilterContent.setup(editor);
+      Selection.setup(editor);
+      return Api.get(editor);
     });
-    editor.addMenuItem('media', {
-      icon: 'media',
-      text: 'Media',
-      cmd: 'mceMedia',
-      context: 'insert',
-      prependToContext: true
-    });
-  };
-  var $_94c7u1hpjjgwecpc = { register: register$1 };
+    function Plugin () {
+    }
 
-  global.add('media', function (editor) {
-    $_3pne6fhijjgwecoz.register(editor);
-    $_94c7u1hpjjgwecpc.register(editor);
-    $_1y6lb6hnjjgwecp9.setup(editor);
-    $_4o7ga9hjjjgwecp0.setup(editor);
-    $_dnm1d2hojjgwecpa.setup(editor);
-    return $_9lh0mgzjjgwecnk.get(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.js	(working copy)
@@ -1,1497 +1,1858 @@
 (function () {
 var paste = (function () {
-  'use strict';
+    'use strict';
 
-  var Cell = function (initial) {
-    var value = initial;
-    var get = function () {
-      return value;
+    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 set = function (v) {
-      value = v;
-    };
-    var clone = function () {
-      return Cell(get());
-    };
-    return {
-      get: get,
-      set: set,
-      clone: clone
-    };
-  };
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var hasProPlugin = function (editor) {
-    if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {
-      if (typeof window.console !== 'undefined' && window.console.log) {
-        window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.');
+    var hasProPlugin = function (editor) {
+      if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {
+        if (typeof window.console !== 'undefined' && window.console.log) {
+          window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.');
+        }
+        return true;
+      } else {
+        return false;
       }
-      return true;
-    } else {
-      return false;
-    }
-  };
-  var $_15bf6siejjgwect1 = { hasProPlugin: hasProPlugin };
+    };
+    var DetectProPlugin = { hasProPlugin: hasProPlugin };
 
-  var get = function (clipboard, quirks) {
-    return {
-      clipboard: clipboard,
-      quirks: quirks
+    var get = function (clipboard, quirks) {
+      return {
+        clipboard: clipboard,
+        quirks: quirks
+      };
     };
-  };
-  var $_6gtliyigjjgwecte = { get: get };
+    var Api = { get: get };
 
-  var firePastePreProcess = function (editor, html, internal, isWordHtml) {
-    return editor.fire('PastePreProcess', {
-      content: html,
-      internal: internal,
-      wordContent: isWordHtml
-    });
-  };
-  var firePastePostProcess = function (editor, node, internal, isWordHtml) {
-    return editor.fire('PastePostProcess', {
-      node: node,
-      internal: internal,
-      wordContent: isWordHtml
-    });
-  };
-  var firePastePlainTextToggle = function (editor, state) {
-    return editor.fire('PastePlainTextToggle', { state: state });
-  };
-  var firePaste = function (editor, ieFake) {
-    return editor.fire('paste', { ieFake: ieFake });
-  };
-  var $_8tki3zijjjgwectj = {
-    firePastePreProcess: firePastePreProcess,
-    firePastePostProcess: firePastePostProcess,
-    firePastePlainTextToggle: firePastePlainTextToggle,
-    firePaste: firePaste
-  };
+    var firePastePreProcess = function (editor, html, internal, isWordHtml) {
+      return editor.fire('PastePreProcess', {
+        content: html,
+        internal: internal,
+        wordContent: isWordHtml
+      });
+    };
+    var firePastePostProcess = function (editor, node, internal, isWordHtml) {
+      return editor.fire('PastePostProcess', {
+        node: node,
+        internal: internal,
+        wordContent: isWordHtml
+      });
+    };
+    var firePastePlainTextToggle = function (editor, state) {
+      return editor.fire('PastePlainTextToggle', { state: state });
+    };
+    var firePaste = function (editor, ieFake) {
+      return editor.fire('paste', { ieFake: ieFake });
+    };
+    var Events = {
+      firePastePreProcess: firePastePreProcess,
+      firePastePostProcess: firePastePostProcess,
+      firePastePlainTextToggle: firePastePlainTextToggle,
+      firePaste: firePaste
+    };
 
-  var shouldPlainTextInform = function (editor) {
-    return editor.getParam('paste_plaintext_inform', true);
-  };
-  var shouldBlockDrop = function (editor) {
-    return editor.getParam('paste_block_drop', false);
-  };
-  var shouldPasteDataImages = function (editor) {
-    return editor.getParam('paste_data_images', false);
-  };
-  var shouldFilterDrop = function (editor) {
-    return editor.getParam('paste_filter_drop', true);
-  };
-  var getPreProcess = function (editor) {
-    return editor.getParam('paste_preprocess');
-  };
-  var getPostProcess = function (editor) {
-    return editor.getParam('paste_postprocess');
-  };
-  var getWebkitStyles = function (editor) {
-    return editor.getParam('paste_webkit_styles');
-  };
-  var shouldRemoveWebKitStyles = function (editor) {
-    return editor.getParam('paste_remove_styles_if_webkit', true);
-  };
-  var shouldMergeFormats = function (editor) {
-    return editor.getParam('paste_merge_formats', true);
-  };
-  var isSmartPasteEnabled = function (editor) {
-    return editor.getParam('smart_paste', true);
-  };
-  var isPasteAsTextEnabled = function (editor) {
-    return editor.getParam('paste_as_text', false);
-  };
-  var getRetainStyleProps = function (editor) {
-    return editor.getParam('paste_retain_style_properties');
-  };
-  var getWordValidElements = function (editor) {
-    var defaultValidElements = '-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';
-    return editor.getParam('paste_word_valid_elements', defaultValidElements);
-  };
-  var shouldConvertWordFakeLists = function (editor) {
-    return editor.getParam('paste_convert_word_fake_lists', true);
-  };
-  var shouldUseDefaultFilters = function (editor) {
-    return editor.getParam('paste_enable_default_filters', true);
-  };
-  var $_xr8b0ikjjgwectl = {
-    shouldPlainTextInform: shouldPlainTextInform,
-    shouldBlockDrop: shouldBlockDrop,
-    shouldPasteDataImages: shouldPasteDataImages,
-    shouldFilterDrop: shouldFilterDrop,
-    getPreProcess: getPreProcess,
-    getPostProcess: getPostProcess,
-    getWebkitStyles: getWebkitStyles,
-    shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,
-    shouldMergeFormats: shouldMergeFormats,
-    isSmartPasteEnabled: isSmartPasteEnabled,
-    isPasteAsTextEnabled: isPasteAsTextEnabled,
-    getRetainStyleProps: getRetainStyleProps,
-    getWordValidElements: getWordValidElements,
-    shouldConvertWordFakeLists: shouldConvertWordFakeLists,
-    shouldUseDefaultFilters: shouldUseDefaultFilters
-  };
+    var shouldPlainTextInform = function (editor) {
+      return editor.getParam('paste_plaintext_inform', true);
+    };
+    var shouldBlockDrop = function (editor) {
+      return editor.getParam('paste_block_drop', false);
+    };
+    var shouldPasteDataImages = function (editor) {
+      return editor.getParam('paste_data_images', false);
+    };
+    var shouldFilterDrop = function (editor) {
+      return editor.getParam('paste_filter_drop', true);
+    };
+    var getPreProcess = function (editor) {
+      return editor.getParam('paste_preprocess');
+    };
+    var getPostProcess = function (editor) {
+      return editor.getParam('paste_postprocess');
+    };
+    var getWebkitStyles = function (editor) {
+      return editor.getParam('paste_webkit_styles');
+    };
+    var shouldRemoveWebKitStyles = function (editor) {
+      return editor.getParam('paste_remove_styles_if_webkit', true);
+    };
+    var shouldMergeFormats = function (editor) {
+      return editor.getParam('paste_merge_formats', true);
+    };
+    var isSmartPasteEnabled = function (editor) {
+      return editor.getParam('smart_paste', true);
+    };
+    var isPasteAsTextEnabled = function (editor) {
+      return editor.getParam('paste_as_text', false);
+    };
+    var getRetainStyleProps = function (editor) {
+      return editor.getParam('paste_retain_style_properties');
+    };
+    var getWordValidElements = function (editor) {
+      var defaultValidElements = '-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';
+      return editor.getParam('paste_word_valid_elements', defaultValidElements);
+    };
+    var shouldConvertWordFakeLists = function (editor) {
+      return editor.getParam('paste_convert_word_fake_lists', true);
+    };
+    var shouldUseDefaultFilters = function (editor) {
+      return editor.getParam('paste_enable_default_filters', true);
+    };
+    var Settings = {
+      shouldPlainTextInform: shouldPlainTextInform,
+      shouldBlockDrop: shouldBlockDrop,
+      shouldPasteDataImages: shouldPasteDataImages,
+      shouldFilterDrop: shouldFilterDrop,
+      getPreProcess: getPreProcess,
+      getPostProcess: getPostProcess,
+      getWebkitStyles: getWebkitStyles,
+      shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,
+      shouldMergeFormats: shouldMergeFormats,
+      isSmartPasteEnabled: isSmartPasteEnabled,
+      isPasteAsTextEnabled: isPasteAsTextEnabled,
+      getRetainStyleProps: getRetainStyleProps,
+      getWordValidElements: getWordValidElements,
+      shouldConvertWordFakeLists: shouldConvertWordFakeLists,
+      shouldUseDefaultFilters: shouldUseDefaultFilters
+    };
 
-  var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {
-    return userIsInformedState.get() === false && $_xr8b0ikjjgwectl.shouldPlainTextInform(editor);
-  };
-  var displayNotification = function (editor, message) {
-    editor.notificationManager.open({
-      text: editor.translate(message),
-      type: 'info'
-    });
-  };
-  var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {
-    if (clipboard.pasteFormat.get() === 'text') {
-      clipboard.pasteFormat.set('html');
-      $_8tki3zijjjgwectj.firePastePlainTextToggle(editor, false);
-    } else {
-      clipboard.pasteFormat.set('text');
-      $_8tki3zijjjgwectj.firePastePlainTextToggle(editor, true);
-      if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {
-        displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');
-        userIsInformedState.set(true);
+    var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {
+      return userIsInformedState.get() === false && Settings.shouldPlainTextInform(editor);
+    };
+    var displayNotification = function (editor, message) {
+      editor.notificationManager.open({
+        text: editor.translate(message),
+        type: 'info'
+      });
+    };
+    var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {
+      if (clipboard.pasteFormat.get() === 'text') {
+        clipboard.pasteFormat.set('html');
+        Events.firePastePlainTextToggle(editor, false);
+      } else {
+        clipboard.pasteFormat.set('text');
+        Events.firePastePlainTextToggle(editor, true);
+        if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {
+          displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');
+          userIsInformedState.set(true);
+        }
       }
-    }
-    editor.focus();
-  };
-  var $_2j7vw7iijjgwecti = { togglePlainTextPaste: togglePlainTextPaste };
+      editor.focus();
+    };
+    var Actions = { togglePlainTextPaste: togglePlainTextPaste };
 
-  var register = function (editor, clipboard, userIsInformedState) {
-    editor.addCommand('mceTogglePlainTextPaste', function () {
-      $_2j7vw7iijjgwecti.togglePlainTextPaste(editor, clipboard, userIsInformedState);
-    });
-    editor.addCommand('mceInsertClipboardContent', function (ui, value) {
-      if (value.content) {
-        clipboard.pasteHtml(value.content, value.internal);
-      }
-      if (value.text) {
-        clipboard.pasteText(value.text);
-      }
-    });
-  };
-  var $_fldd1mihjjgwecth = { register: register };
+    var register = function (editor, clipboard, userIsInformedState) {
+      editor.addCommand('mceTogglePlainTextPaste', function () {
+        Actions.togglePlainTextPaste(editor, clipboard, userIsInformedState);
+      });
+      editor.addCommand('mceInsertClipboardContent', function (ui, value) {
+        if (value.content) {
+          clipboard.pasteHtml(value.content, value.internal);
+        }
+        if (value.text) {
+          clipboard.pasteText(value.text);
+        }
+      });
+    };
+    var Commands = { register: register };
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');
 
-  var internalMimeType = 'x-tinymce/html';
-  var internalMark = '<!-- ' + internalMimeType + ' -->';
-  var mark = function (html) {
-    return internalMark + html;
-  };
-  var unmark = function (html) {
-    return html.replace(internalMark, '');
-  };
-  var isMarked = function (html) {
-    return html.indexOf(internalMark) !== -1;
-  };
-  var $_4x13hjirjjgwecu1 = {
-    mark: mark,
-    unmark: unmark,
-    isMarked: isMarked,
-    internalHtmlMime: function () {
-      return internalMimeType;
-    }
-  };
+    var internalMimeType = 'x-tinymce/html';
+    var internalMark = '<!-- ' + internalMimeType + ' -->';
+    var mark = function (html) {
+      return internalMark + html;
+    };
+    var unmark = function (html) {
+      return html.replace(internalMark, '');
+    };
+    var isMarked = function (html) {
+      return html.indexOf(internalMark) !== -1;
+    };
+    var InternalHtml = {
+      mark: mark,
+      unmark: unmark,
+      isMarked: isMarked,
+      internalHtmlMime: function () {
+        return internalMimeType;
+      }
+    };
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities');
 
-  var isPlainText = function (text) {
-    return !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(text);
-  };
-  var toBRs = function (text) {
-    return text.replace(/\r?\n/g, '<br>');
-  };
-  var openContainer = function (rootTag, rootAttrs) {
-    var key;
-    var attrs = [];
-    var tag = '<' + rootTag;
-    if (typeof rootAttrs === 'object') {
-      for (key in rootAttrs) {
-        if (rootAttrs.hasOwnProperty(key)) {
-          attrs.push(key + '="' + global$5.encodeAllRaw(rootAttrs[key]) + '"');
+    var isPlainText = function (text) {
+      return !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(text);
+    };
+    var toBRs = function (text) {
+      return text.replace(/\r?\n/g, '<br>');
+    };
+    var openContainer = function (rootTag, rootAttrs) {
+      var key;
+      var attrs = [];
+      var tag = '<' + rootTag;
+      if (typeof rootAttrs === 'object') {
+        for (key in rootAttrs) {
+          if (rootAttrs.hasOwnProperty(key)) {
+            attrs.push(key + '="' + global$5.encodeAllRaw(rootAttrs[key]) + '"');
+          }
         }
+        if (attrs.length) {
+          tag += ' ' + attrs.join(' ');
+        }
       }
-      if (attrs.length) {
-        tag += ' ' + attrs.join(' ');
-      }
-    }
-    return tag + '>';
-  };
-  var toBlockElements = function (text, rootTag, rootAttrs) {
-    var blocks = text.split(/\n\n/);
-    var tagOpen = openContainer(rootTag, rootAttrs);
-    var tagClose = '</' + rootTag + '>';
-    var paragraphs = global$3.map(blocks, function (p) {
-      return p.split(/\n/).join('<br />');
-    });
-    var stitch = function (p) {
-      return tagOpen + p + tagClose;
+      return tag + '>';
     };
-    return paragraphs.length === 1 ? paragraphs[0] : global$3.map(paragraphs, stitch).join('');
-  };
-  var convert = function (text, rootTag, rootAttrs) {
-    return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);
-  };
-  var $_4h3hnrisjjgwecu2 = {
-    isPlainText: isPlainText,
-    convert: convert,
-    toBRs: toBRs,
-    toBlockElements: toBlockElements
-  };
+    var toBlockElements = function (text, rootTag, rootAttrs) {
+      var blocks = text.split(/\n\n/);
+      var tagOpen = openContainer(rootTag, rootAttrs);
+      var tagClose = '</' + rootTag + '>';
+      var paragraphs = global$3.map(blocks, function (p) {
+        return p.split(/\n/).join('<br />');
+      });
+      var stitch = function (p) {
+        return tagOpen + p + tagClose;
+      };
+      return paragraphs.length === 1 ? paragraphs[0] : global$3.map(paragraphs, stitch).join('');
+    };
+    var convert = function (text, rootTag, rootAttrs) {
+      return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);
+    };
+    var Newlines = {
+      isPlainText: isPlainText,
+      convert: convert,
+      toBRs: toBRs,
+      toBlockElements: toBlockElements
+    };
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.html.DomParser');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.html.DomParser');
 
-  var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node');
+    var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node');
 
-  var global$8 = tinymce.util.Tools.resolve('tinymce.html.Schema');
+    var global$8 = tinymce.util.Tools.resolve('tinymce.html.Schema');
 
-  var global$9 = tinymce.util.Tools.resolve('tinymce.html.Serializer');
+    var global$9 = tinymce.util.Tools.resolve('tinymce.html.Serializer');
 
-  function filter(content, items) {
-    global$3.each(items, function (v) {
-      if (v.constructor === RegExp) {
-        content = content.replace(v, '');
-      } else {
-        content = content.replace(v[0], v[1]);
-      }
-    });
-    return content;
-  }
-  function innerText(html) {
-    var schema = global$8();
-    var domParser = global$6({}, schema);
-    var text = '';
-    var shortEndedElements = schema.getShortEndedElements();
-    var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');
-    var blockElements = schema.getBlockElements();
-    function walk(node) {
-      var name$$1 = node.name, currentNode = node;
-      if (name$$1 === 'br') {
-        text += '\n';
-        return;
-      }
-      if (shortEndedElements[name$$1]) {
-        text += ' ';
-      }
-      if (ignoreElements[name$$1]) {
-        text += ' ';
-        return;
-      }
-      if (node.type === 3) {
-        text += node.value;
-      }
-      if (!node.shortEnded) {
-        if (node = node.firstChild) {
-          do {
-            walk(node);
-          } while (node = node.next);
+    function filter(content, items) {
+      global$3.each(items, function (v) {
+        if (v.constructor === RegExp) {
+          content = content.replace(v, '');
+        } else {
+          content = content.replace(v[0], v[1]);
         }
-      }
-      if (blockElements[name$$1] && currentNode.next) {
-        text += '\n';
-        if (name$$1 === 'p') {
+      });
+      return content;
+    }
+    function innerText(html) {
+      var schema = global$8();
+      var domParser = global$6({}, schema);
+      var text = '';
+      var shortEndedElements = schema.getShortEndedElements();
+      var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');
+      var blockElements = schema.getBlockElements();
+      function walk(node) {
+        var name$$1 = node.name, currentNode = node;
+        if (name$$1 === 'br') {
           text += '\n';
+          return;
         }
+        if (name$$1 === 'wbr') {
+          return;
+        }
+        if (shortEndedElements[name$$1]) {
+          text += ' ';
+        }
+        if (ignoreElements[name$$1]) {
+          text += ' ';
+          return;
+        }
+        if (node.type === 3) {
+          text += node.value;
+        }
+        if (!node.shortEnded) {
+          if (node = node.firstChild) {
+            do {
+              walk(node);
+            } while (node = node.next);
+          }
+        }
+        if (blockElements[name$$1] && currentNode.next) {
+          text += '\n';
+          if (name$$1 === 'p') {
+            text += '\n';
+          }
+        }
       }
+      html = filter(html, [/<!\[[^\]]+\]>/g]);
+      walk(domParser.parse(html));
+      return text;
     }
-    html = filter(html, [/<!\[[^\]]+\]>/g]);
-    walk(domParser.parse(html));
-    return text;
-  }
-  function trimHtml(html) {
-    function trimSpaces(all, s1, s2) {
-      if (!s1 && !s2) {
-        return ' ';
+    function trimHtml(html) {
+      function trimSpaces(all, s1, s2) {
+        if (!s1 && !s2) {
+          return ' ';
+        }
+        return '\xA0';
       }
-      return '\xA0';
+      html = filter(html, [
+        /^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/ig,
+        /<!--StartFragment-->|<!--EndFragment-->/g,
+        [
+          /( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,
+          trimSpaces
+        ],
+        /<br class="Apple-interchange-newline">/g,
+        /<br>$/i
+      ]);
+      return html;
     }
-    html = filter(html, [
-      /^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/ig,
-      /<!--StartFragment-->|<!--EndFragment-->/g,
-      [
-        /( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,
-        trimSpaces
-      ],
-      /<br class="Apple-interchange-newline">/g,
-      /<br>$/i
-    ]);
-    return html;
-  }
-  function createIdGenerator(prefix) {
-    var count = 0;
-    return function () {
-      return prefix + count++;
+    function createIdGenerator(prefix) {
+      var count = 0;
+      return function () {
+        return prefix + count++;
+      };
+    }
+    var isMsEdge = function () {
+      return navigator.userAgent.indexOf(' Edge/') !== -1;
     };
-  }
-  var isMsEdge = function () {
-    return navigator.userAgent.indexOf(' Edge/') !== -1;
-  };
-  var $_4bi2o9j0jjgwecui = {
-    filter: filter,
-    innerText: innerText,
-    trimHtml: trimHtml,
-    createIdGenerator: createIdGenerator,
-    isMsEdge: isMsEdge
-  };
+    var Utils = {
+      filter: filter,
+      innerText: innerText,
+      trimHtml: trimHtml,
+      createIdGenerator: createIdGenerator,
+      isMsEdge: isMsEdge
+    };
 
-  function isWordContent(content) {
-    return /<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(content) || /class="OutlineElement/.test(content) || /id="?docs\-internal\-guid\-/.test(content);
-  }
-  function isNumericList(text) {
-    var found, patterns;
-    patterns = [
-      /^[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]/
-    ];
-    text = text.replace(/^[\u00a0 ]+/, '');
-    global$3.each(patterns, function (pattern) {
-      if (pattern.test(text)) {
-        found = true;
-        return false;
-      }
-    });
-    return found;
-  }
-  function isBulletList(text) {
-    return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
-  }
-  function convertFakeListsToProperLists(node) {
-    var currentListNode, prevListNode, lastLevel = 1;
-    function getText(node) {
-      var txt = '';
-      if (node.type === 3) {
-        return node.value;
-      }
-      if (node = node.firstChild) {
-        do {
-          txt += getText(node);
-        } while (node = node.next);
-      }
-      return txt;
+    function isWordContent(content) {
+      return /<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(content) || /class="OutlineElement/.test(content) || /id="?docs\-internal\-guid\-/.test(content);
     }
-    function trimListStart(node, regExp) {
-      if (node.type === 3) {
-        if (regExp.test(node.value)) {
-          node.value = node.value.replace(regExp, '');
+    function isNumericList(text) {
+      var found, patterns;
+      patterns = [
+        /^[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]/
+      ];
+      text = text.replace(/^[\u00a0 ]+/, '');
+      global$3.each(patterns, function (pattern) {
+        if (pattern.test(text)) {
+          found = true;
           return false;
         }
+      });
+      return found;
+    }
+    function isBulletList(text) {
+      return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
+    }
+    function convertFakeListsToProperLists(node) {
+      var currentListNode, prevListNode, lastLevel = 1;
+      function getText(node) {
+        var txt = '';
+        if (node.type === 3) {
+          return node.value;
+        }
+        if (node = node.firstChild) {
+          do {
+            txt += getText(node);
+          } while (node = node.next);
+        }
+        return txt;
       }
-      if (node = node.firstChild) {
-        do {
-          if (!trimListStart(node, regExp)) {
+      function trimListStart(node, regExp) {
+        if (node.type === 3) {
+          if (regExp.test(node.value)) {
+            node.value = node.value.replace(regExp, '');
             return false;
           }
-        } while (node = node.next);
+        }
+        if (node = node.firstChild) {
+          do {
+            if (!trimListStart(node, regExp)) {
+              return false;
+            }
+          } while (node = node.next);
+        }
+        return true;
       }
-      return true;
-    }
-    function removeIgnoredNodes(node) {
-      if (node._listIgnore) {
-        node.remove();
-        return;
+      function removeIgnoredNodes(node) {
+        if (node._listIgnore) {
+          node.remove();
+          return;
+        }
+        if (node = node.firstChild) {
+          do {
+            removeIgnoredNodes(node);
+          } while (node = node.next);
+        }
       }
-      if (node = node.firstChild) {
-        do {
-          removeIgnoredNodes(node);
-        } while (node = node.next);
-      }
-    }
-    function convertParagraphToLi(paragraphNode, listName, start) {
-      var level = paragraphNode._listLevel || lastLevel;
-      if (level !== lastLevel) {
-        if (level < lastLevel) {
-          if (currentListNode) {
-            currentListNode = currentListNode.parent.parent;
+      function convertParagraphToLi(paragraphNode, listName, start) {
+        var level = paragraphNode._listLevel || lastLevel;
+        if (level !== lastLevel) {
+          if (level < lastLevel) {
+            if (currentListNode) {
+              currentListNode = currentListNode.parent.parent;
+            }
+          } else {
+            prevListNode = currentListNode;
+            currentListNode = null;
           }
+        }
+        if (!currentListNode || currentListNode.name !== listName) {
+          prevListNode = prevListNode || currentListNode;
+          currentListNode = new global$7(listName, 1);
+          if (start > 1) {
+            currentListNode.attr('start', '' + start);
+          }
+          paragraphNode.wrap(currentListNode);
         } else {
-          prevListNode = currentListNode;
-          currentListNode = null;
+          currentListNode.append(paragraphNode);
         }
+        paragraphNode.name = 'li';
+        if (level > lastLevel && prevListNode) {
+          prevListNode.lastChild.append(currentListNode);
+        }
+        lastLevel = level;
+        removeIgnoredNodes(paragraphNode);
+        trimListStart(paragraphNode, /^\u00a0+/);
+        trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
+        trimListStart(paragraphNode, /^\u00a0+/);
       }
-      if (!currentListNode || currentListNode.name !== listName) {
-        prevListNode = prevListNode || currentListNode;
-        currentListNode = new global$7(listName, 1);
-        if (start > 1) {
-          currentListNode.attr('start', '' + start);
+      var elements = [];
+      var child = node.firstChild;
+      while (typeof child !== 'undefined' && child !== null) {
+        elements.push(child);
+        child = child.walk();
+        if (child !== null) {
+          while (typeof child !== 'undefined' && child.parent !== node) {
+            child = child.walk();
+          }
         }
-        paragraphNode.wrap(currentListNode);
-      } else {
-        currentListNode.append(paragraphNode);
       }
-      paragraphNode.name = 'li';
-      if (level > lastLevel && prevListNode) {
-        prevListNode.lastChild.append(currentListNode);
-      }
-      lastLevel = level;
-      removeIgnoredNodes(paragraphNode);
-      trimListStart(paragraphNode, /^\u00a0+/);
-      trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
-      trimListStart(paragraphNode, /^\u00a0+/);
-    }
-    var elements = [];
-    var child = node.firstChild;
-    while (typeof child !== 'undefined' && child !== null) {
-      elements.push(child);
-      child = child.walk();
-      if (child !== null) {
-        while (typeof child !== 'undefined' && child.parent !== node) {
-          child = child.walk();
+      for (var i = 0; i < elements.length; i++) {
+        node = elements[i];
+        if (node.name === 'p' && node.firstChild) {
+          var nodeText = getText(node);
+          if (isBulletList(nodeText)) {
+            convertParagraphToLi(node, 'ul');
+            continue;
+          }
+          if (isNumericList(nodeText)) {
+            var matches = /([0-9]+)\./.exec(nodeText);
+            var start = 1;
+            if (matches) {
+              start = parseInt(matches[1], 10);
+            }
+            convertParagraphToLi(node, 'ol', start);
+            continue;
+          }
+          if (node._listLevel) {
+            convertParagraphToLi(node, 'ul', 1);
+            continue;
+          }
+          currentListNode = null;
+        } else {
+          prevListNode = currentListNode;
+          currentListNode = null;
         }
       }
     }
-    for (var i = 0; i < elements.length; i++) {
-      node = elements[i];
-      if (node.name === 'p' && node.firstChild) {
-        var nodeText = getText(node);
-        if (isBulletList(nodeText)) {
-          convertParagraphToLi(node, 'ul');
-          continue;
-        }
-        if (isNumericList(nodeText)) {
-          var matches = /([0-9]+)\./.exec(nodeText);
-          var start = 1;
+    function filterStyles(editor, validStyles, node, styleValue) {
+      var outputStyles = {}, matches;
+      var styles = editor.dom.parseStyle(styleValue);
+      global$3.each(styles, function (value, name) {
+        switch (name) {
+        case 'mso-list':
+          matches = /\w+ \w+([0-9]+)/i.exec(styleValue);
           if (matches) {
-            start = parseInt(matches[1], 10);
+            node._listLevel = parseInt(matches[1], 10);
           }
-          convertParagraphToLi(node, 'ol', start);
-          continue;
+          if (/Ignore/i.test(value) && node.firstChild) {
+            node._listIgnore = true;
+            node.firstChild._listIgnore = true;
+          }
+          break;
+        case 'horiz-align':
+          name = 'text-align';
+          break;
+        case 'vert-align':
+          name = 'vertical-align';
+          break;
+        case 'font-color':
+        case 'mso-foreground':
+          name = 'color';
+          break;
+        case 'mso-background':
+        case 'mso-highlight':
+          name = 'background';
+          break;
+        case 'font-weight':
+        case 'font-style':
+          if (value !== 'normal') {
+            outputStyles[name] = value;
+          }
+          return;
+        case 'mso-element':
+          if (/^(comment|comment-list)$/i.test(value)) {
+            node.remove();
+            return;
+          }
+          break;
         }
-        if (node._listLevel) {
-          convertParagraphToLi(node, 'ul', 1);
-          continue;
+        if (name.indexOf('mso-comment') === 0) {
+          node.remove();
+          return;
         }
-        currentListNode = null;
-      } else {
-        prevListNode = currentListNode;
-        currentListNode = null;
+        if (name.indexOf('mso-') === 0) {
+          return;
+        }
+        if (Settings.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {
+          outputStyles[name] = value;
+        }
+      });
+      if (/(bold)/i.test(outputStyles['font-weight'])) {
+        delete outputStyles['font-weight'];
+        node.wrap(new global$7('b', 1));
       }
+      if (/(italic)/i.test(outputStyles['font-style'])) {
+        delete outputStyles['font-style'];
+        node.wrap(new global$7('i', 1));
+      }
+      outputStyles = editor.dom.serializeStyle(outputStyles, node.name);
+      if (outputStyles) {
+        return outputStyles;
+      }
+      return null;
     }
-  }
-  function filterStyles(editor, validStyles, node, styleValue) {
-    var outputStyles = {}, matches;
-    var styles = editor.dom.parseStyle(styleValue);
-    global$3.each(styles, function (value, name) {
-      switch (name) {
-      case 'mso-list':
-        matches = /\w+ \w+([0-9]+)/i.exec(styleValue);
-        if (matches) {
-          node._listLevel = parseInt(matches[1], 10);
+    var filterWordContent = function (editor, content) {
+      var retainStyleProperties, validStyles;
+      retainStyleProperties = Settings.getRetainStyleProps(editor);
+      if (retainStyleProperties) {
+        validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));
+      }
+      content = Utils.filter(content, [
+        /<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 (str, spaces) {
+            return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\xA0') : '';
+          }
+        ]
+      ]);
+      var validElements = Settings.getWordValidElements(editor);
+      var schema = global$8({
+        valid_elements: validElements,
+        valid_children: '-li[p]'
+      });
+      global$3.each(schema.elements, function (rule) {
+        if (!rule.attributes.class) {
+          rule.attributes.class = {};
+          rule.attributesOrder.push('class');
         }
-        if (/Ignore/i.test(value) && node.firstChild) {
-          node._listIgnore = true;
-          node.firstChild._listIgnore = true;
+        if (!rule.attributes.style) {
+          rule.attributes.style = {};
+          rule.attributesOrder.push('style');
         }
-        break;
-      case 'horiz-align':
-        name = 'text-align';
-        break;
-      case 'vert-align':
-        name = 'vertical-align';
-        break;
-      case 'font-color':
-      case 'mso-foreground':
-        name = 'color';
-        break;
-      case 'mso-background':
-      case 'mso-highlight':
-        name = 'background';
-        break;
-      case 'font-weight':
-      case 'font-style':
-        if (value !== 'normal') {
-          outputStyles[name] = value;
+      });
+      var domParser = global$6({}, schema);
+      domParser.addAttributeFilter('style', function (nodes) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i];
+          node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));
+          if (node.name === 'span' && node.parent && !node.attributes.length) {
+            node.unwrap();
+          }
         }
-        return;
-      case 'mso-element':
-        if (/^(comment|comment-list)$/i.test(value)) {
-          node.remove();
-          return;
+      });
+      domParser.addAttributeFilter('class', function (nodes) {
+        var i = nodes.length, node, className;
+        while (i--) {
+          node = nodes[i];
+          className = node.attr('class');
+          if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
+            node.remove();
+          }
+          node.attr('class', null);
         }
-        break;
+      });
+      domParser.addNodeFilter('del', function (nodes) {
+        var i = nodes.length;
+        while (i--) {
+          nodes[i].remove();
+        }
+      });
+      domParser.addNodeFilter('a', function (nodes) {
+        var i = nodes.length, node, href, name;
+        while (i--) {
+          node = nodes[i];
+          href = node.attr('href');
+          name = node.attr('name');
+          if (href && href.indexOf('#_msocom_') !== -1) {
+            node.remove();
+            continue;
+          }
+          if (href && href.indexOf('file://') === 0) {
+            href = href.split('#')[1];
+            if (href) {
+              href = '#' + href;
+            }
+          }
+          if (!href && !name) {
+            node.unwrap();
+          } else {
+            if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
+              node.unwrap();
+              continue;
+            }
+            node.attr({
+              href: href,
+              name: name
+            });
+          }
+        }
+      });
+      var rootNode = domParser.parse(content);
+      if (Settings.shouldConvertWordFakeLists(editor)) {
+        convertFakeListsToProperLists(rootNode);
       }
-      if (name.indexOf('mso-comment') === 0) {
-        node.remove();
-        return;
+      content = global$9({ validate: editor.settings.validate }, schema).serialize(rootNode);
+      return content;
+    };
+    var preProcess = function (editor, content) {
+      return Settings.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;
+    };
+    var WordFilter = {
+      preProcess: preProcess,
+      isWordContent: isWordContent
+    };
+
+    var processResult = function (content, cancelled) {
+      return {
+        content: content,
+        cancelled: cancelled
+      };
+    };
+    var postProcessFilter = function (editor, html, internal, isWordHtml) {
+      var tempBody = editor.dom.create('div', { style: 'display:none' }, html);
+      var postProcessArgs = Events.firePastePostProcess(editor, tempBody, internal, isWordHtml);
+      return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());
+    };
+    var filterContent = function (editor, content, internal, isWordHtml) {
+      var preProcessArgs = Events.firePastePreProcess(editor, content, internal, isWordHtml);
+      if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {
+        return postProcessFilter(editor, preProcessArgs.content, internal, isWordHtml);
+      } else {
+        return processResult(preProcessArgs.content, preProcessArgs.isDefaultPrevented());
       }
-      if (name.indexOf('mso-') === 0) {
-        return;
+    };
+    var process = function (editor, html, internal) {
+      var isWordHtml = WordFilter.isWordContent(html);
+      var content = isWordHtml ? WordFilter.preProcess(editor, html) : html;
+      return filterContent(editor, content, internal, isWordHtml);
+    };
+    var ProcessFilters = { process: process };
+
+    var removeMeta = function (editor, html) {
+      var body = editor.dom.create('body', {}, html);
+      global$3.each(body.querySelectorAll('meta'), function (elm) {
+        return elm.parentNode.removeChild(elm);
+      });
+      return body.innerHTML;
+    };
+    var pasteHtml = function (editor, html) {
+      editor.insertContent(removeMeta(editor, html), {
+        merge: Settings.shouldMergeFormats(editor),
+        paste: true
+      });
+      return true;
+    };
+    var isAbsoluteUrl = function (url) {
+      return /^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(url);
+    };
+    var isImageUrl = function (url) {
+      return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);
+    };
+    var createImage = function (editor, url, pasteHtmlFn) {
+      editor.undoManager.extra(function () {
+        pasteHtmlFn(editor, url);
+      }, function () {
+        editor.insertContent('<img src="' + url + '">');
+      });
+      return true;
+    };
+    var createLink = function (editor, url, pasteHtmlFn) {
+      editor.undoManager.extra(function () {
+        pasteHtmlFn(editor, url);
+      }, function () {
+        editor.execCommand('mceInsertLink', false, url);
+      });
+      return true;
+    };
+    var linkSelection = function (editor, html, pasteHtmlFn) {
+      return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;
+    };
+    var insertImage = function (editor, html, pasteHtmlFn) {
+      return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;
+    };
+    var smartInsertContent = function (editor, html) {
+      global$3.each([
+        linkSelection,
+        insertImage,
+        pasteHtml
+      ], function (action) {
+        return action(editor, html, pasteHtml) !== true;
+      });
+    };
+    var insertContent = function (editor, html) {
+      if (Settings.isSmartPasteEnabled(editor) === false) {
+        pasteHtml(editor, html);
+      } else {
+        smartInsertContent(editor, html);
       }
-      if ($_xr8b0ikjjgwectl.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {
-        outputStyles[name] = value;
+    };
+    var SmartPaste = {
+      isImageUrl: isImageUrl,
+      isAbsoluteUrl: isAbsoluteUrl,
+      insertContent: insertContent
+    };
+
+    var constant = function (value) {
+      return function () {
+        return value;
+      };
+    };
+    function curry(fn) {
+      var initialArgs = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+        initialArgs[_i - 1] = arguments[_i];
       }
-    });
-    if (/(bold)/i.test(outputStyles['font-weight'])) {
-      delete outputStyles['font-weight'];
-      node.wrap(new global$7('b', 1));
+      return function () {
+        var restArgs = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          restArgs[_i] = arguments[_i];
+        }
+        var all = initialArgs.concat(restArgs);
+        return fn.apply(null, all);
+      };
     }
-    if (/(italic)/i.test(outputStyles['font-style'])) {
-      delete outputStyles['font-style'];
-      node.wrap(new global$7('i', 1));
-    }
-    outputStyles = editor.dom.serializeStyle(outputStyles, node.name);
-    if (outputStyles) {
-      return outputStyles;
-    }
-    return null;
-  }
-  var filterWordContent = function (editor, content) {
-    var retainStyleProperties, validStyles;
-    retainStyleProperties = $_xr8b0ikjjgwectl.getRetainStyleProps(editor);
-    if (retainStyleProperties) {
-      validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));
-    }
-    content = $_4bi2o9j0jjgwecui.filter(content, [
-      /<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 (str, spaces) {
-          return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\xA0') : '';
+    var never = constant(false);
+    var always = constant(true);
+
+    var never$1 = never;
+    var always$1 = always;
+    var none = function () {
+      return NONE;
+    };
+    var NONE = function () {
+      var eq = function (o) {
+        return o.isNone();
+      };
+      var call$$1 = function (thunk) {
+        return thunk();
+      };
+      var id = function (n) {
+        return n;
+      };
+      var noop$$1 = function () {
+      };
+      var nul = function () {
+        return null;
+      };
+      var undef = function () {
+        return undefined;
+      };
+      var me = {
+        fold: function (n, s) {
+          return n();
+        },
+        is: never$1,
+        isSome: never$1,
+        isNone: always$1,
+        getOr: id,
+        getOrThunk: call$$1,
+        getOrDie: function (msg) {
+          throw new Error(msg || 'error: getOrDie called on none.');
+        },
+        getOrNull: nul,
+        getOrUndefined: undef,
+        or: id,
+        orThunk: call$$1,
+        map: none,
+        ap: none,
+        each: noop$$1,
+        bind: none,
+        flatten: none,
+        exists: never$1,
+        forall: always$1,
+        filter: none,
+        equals: eq,
+        equals_: eq,
+        toArray: function () {
+          return [];
+        },
+        toString: 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,
+        getOrNull: constant_a,
+        getOrUndefined: 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 + ')';
         }
-      ]
-    ]);
-    var validElements = $_xr8b0ikjjgwectl.getWordValidElements(editor);
-    var schema = global$8({
-      valid_elements: validElements,
-      valid_children: '-li[p]'
-    });
-    global$3.each(schema.elements, function (rule) {
-      if (!rule.attributes.class) {
-        rule.attributes.class = {};
-        rule.attributesOrder.push('class');
+      };
+      return me;
+    };
+    var from = function (value) {
+      return value === null || value === undefined ? NONE : some(value);
+    };
+    var Option = {
+      some: some,
+      none: none,
+      from: from
+    };
+
+    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 = function (type) {
+      return function (value) {
+        return typeOf(value) === type;
+      };
+    };
+    var isFunction = isType('function');
+
+    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);
       }
-      if (!rule.attributes.style) {
-        rule.attributes.style = {};
-        rule.attributesOrder.push('style');
+      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 domParser = global$6({}, schema);
-    domParser.addAttributeFilter('style', function (nodes) {
-      var i = nodes.length, node;
-      while (i--) {
-        node = nodes[i];
-        node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));
-        if (node.name === 'span' && node.parent && !node.attributes.length) {
-          node.unwrap();
+    };
+    var filter$1 = 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);
         }
       }
-    });
-    domParser.addAttributeFilter('class', function (nodes) {
-      var i = nodes.length, node, className;
-      while (i--) {
-        node = nodes[i];
-        className = node.attr('class');
-        if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
-          node.remove();
+      return r;
+    };
+    var slice = Array.prototype.slice;
+    var from$1 = isFunction(Array.from) ? Array.from : function (x) {
+      return slice.call(x);
+    };
+
+    var nu = function (baseFn) {
+      var data = Option.none();
+      var callbacks = [];
+      var map$$1 = function (f) {
+        return nu(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) {
+        each(cbs, call);
+      };
+      var call = function (cb) {
+        data.each(function (x) {
+          setTimeout(function () {
+            cb(x);
+          }, 0);
+        });
+      };
+      baseFn(set);
+      return {
+        get: get,
+        map: map$$1,
+        isReady: isReady
+      };
+    };
+    var pure$1 = function (a) {
+      return nu(function (callback) {
+        callback(a);
+      });
+    };
+    var LazyValue = {
+      nu: nu,
+      pure: pure$1
+    };
+
+    var bounce = function (f) {
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
         }
-        node.attr('class', null);
-      }
-    });
-    domParser.addNodeFilter('del', function (nodes) {
-      var i = nodes.length;
-      while (i--) {
-        nodes[i].remove();
-      }
-    });
-    domParser.addNodeFilter('a', function (nodes) {
-      var i = nodes.length, node, href, name;
-      while (i--) {
-        node = nodes[i];
-        href = node.attr('href');
-        name = node.attr('name');
-        if (href && href.indexOf('#_msocom_') !== -1) {
-          node.remove();
-          continue;
-        }
-        if (href && href.indexOf('file://') === 0) {
-          href = href.split('#')[1];
-          if (href) {
-            href = '#' + href;
+        var me = this;
+        setTimeout(function () {
+          f.apply(me, args);
+        }, 0);
+      };
+    };
+
+    var nu$1 = function (baseFn) {
+      var get = function (callback) {
+        baseFn(bounce(callback));
+      };
+      var map = function (fab) {
+        return nu$1(function (callback) {
+          get(function (a) {
+            var value = fab(a);
+            callback(value);
+          });
+        });
+      };
+      var bind = function (aFutureB) {
+        return nu$1(function (callback) {
+          get(function (a) {
+            aFutureB(a).get(callback);
+          });
+        });
+      };
+      var anonBind = function (futureB) {
+        return nu$1(function (callback) {
+          get(function (a) {
+            futureB.get(callback);
+          });
+        });
+      };
+      var toLazy = function () {
+        return LazyValue.nu(get);
+      };
+      var toCached = function () {
+        var cache = null;
+        return nu$1(function (callback) {
+          if (cache === null) {
+            cache = toLazy();
           }
-        }
-        if (!href && !name) {
-          node.unwrap();
+          cache.get(callback);
+        });
+      };
+      return {
+        map: map,
+        bind: bind,
+        anonBind: anonBind,
+        toLazy: toLazy,
+        toCached: toCached,
+        get: get
+      };
+    };
+    var pure$2 = function (a) {
+      return nu$1(function (callback) {
+        callback(a);
+      });
+    };
+    var Future = {
+      nu: nu$1,
+      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 {
-          if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
-            node.unwrap();
-            continue;
-          }
-          node.attr({
-            href: href,
-            name: name
+          each(asyncValues, function (asyncValue, i) {
+            asyncValue.get(cb(i));
           });
         }
-      }
-    });
-    var rootNode = domParser.parse(content);
-    if ($_xr8b0ikjjgwectl.shouldConvertWordFakeLists(editor)) {
-      convertFakeListsToProperLists(rootNode);
-    }
-    content = global$9({ validate: editor.settings.validate }, schema).serialize(rootNode);
-    return content;
-  };
-  var preProcess = function (editor, content) {
-    return $_xr8b0ikjjgwectl.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;
-  };
-  var $_dfatuiivjjgwecu8 = {
-    preProcess: preProcess,
-    isWordContent: isWordContent
-  };
+      });
+    };
 
-  var processResult = function (content, cancelled) {
-    return {
-      content: content,
-      cancelled: cancelled
+    var par$1 = function (futures) {
+      return par(futures, Future.nu);
     };
-  };
-  var postProcessFilter = function (editor, html, internal, isWordHtml) {
-    var tempBody = editor.dom.create('div', { style: 'display:none' }, html);
-    var postProcessArgs = $_8tki3zijjjgwectj.firePastePostProcess(editor, tempBody, internal, isWordHtml);
-    return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());
-  };
-  var filterContent = function (editor, content, internal, isWordHtml) {
-    var preProcessArgs = $_8tki3zijjjgwectj.firePastePreProcess(editor, content, internal, isWordHtml);
-    if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {
-      return postProcessFilter(editor, preProcessArgs.content, internal, isWordHtml);
-    } else {
-      return processResult(preProcessArgs.content, preProcessArgs.isDefaultPrevented());
-    }
-  };
-  var process = function (editor, html, internal) {
-    var isWordHtml = $_dfatuiivjjgwecu8.isWordContent(html);
-    var content = isWordHtml ? $_dfatuiivjjgwecu8.preProcess(editor, html) : html;
-    return filterContent(editor, content, internal, isWordHtml);
-  };
-  var $_3scw66iujjgwecu4 = { process: process };
+    var mapM = function (array, fn) {
+      var futures = map(array, fn);
+      return par$1(futures);
+    };
 
-  var pasteHtml = function (editor, html) {
-    editor.insertContent(html, {
-      merge: $_xr8b0ikjjgwectl.shouldMergeFormats(editor),
-      paste: true
-    });
-    return true;
-  };
-  var isAbsoluteUrl = function (url) {
-    return /^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(url);
-  };
-  var isImageUrl = function (url) {
-    return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);
-  };
-  var createImage = function (editor, url, pasteHtmlFn) {
-    editor.undoManager.extra(function () {
-      pasteHtmlFn(editor, url);
-    }, function () {
-      editor.insertContent('<img src="' + url + '">');
-    });
-    return true;
-  };
-  var createLink = function (editor, url, pasteHtmlFn) {
-    editor.undoManager.extra(function () {
-      pasteHtmlFn(editor, url);
-    }, function () {
-      editor.execCommand('mceInsertLink', false, url);
-    });
-    return true;
-  };
-  var linkSelection = function (editor, html, pasteHtmlFn) {
-    return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;
-  };
-  var insertImage = function (editor, html, pasteHtmlFn) {
-    return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;
-  };
-  var smartInsertContent = function (editor, html) {
-    global$3.each([
-      linkSelection,
-      insertImage,
-      pasteHtml
-    ], function (action) {
-      return action(editor, html, pasteHtml) !== true;
-    });
-  };
-  var insertContent = function (editor, html) {
-    if ($_xr8b0ikjjgwectl.isSmartPasteEnabled(editor) === false) {
-      pasteHtml(editor, html);
-    } else {
-      smartInsertContent(editor, html);
-    }
-  };
-  var $_d8pzpej1jjgwecum = {
-    isImageUrl: isImageUrl,
-    isAbsoluteUrl: isAbsoluteUrl,
-    insertContent: insertContent
-  };
-
-  var pasteHtml$1 = function (editor, html, internalFlag) {
-    var internal = internalFlag ? internalFlag : $_4x13hjirjjgwecu1.isMarked(html);
-    var args = $_3scw66iujjgwecu4.process(editor, $_4x13hjirjjgwecu1.unmark(html), internal);
-    if (args.cancelled === false) {
-      $_d8pzpej1jjgwecum.insertContent(editor, args.content);
-    }
-  };
-  var pasteText = function (editor, text) {
-    text = editor.dom.encode(text).replace(/\r\n/g, '\n');
-    text = $_4h3hnrisjjgwecu2.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);
-    pasteHtml$1(editor, text, false);
-  };
-  var getDataTransferItems = function (dataTransfer) {
-    var items = {};
-    var mceInternalUrlPrefix = 'data:text/mce-internal,';
-    if (dataTransfer) {
-      if (dataTransfer.getData) {
-        var legacyText = dataTransfer.getData('Text');
-        if (legacyText && legacyText.length > 0) {
-          if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {
-            items['text/plain'] = legacyText;
+    var pasteHtml$1 = function (editor, html, internalFlag) {
+      var internal = internalFlag ? internalFlag : InternalHtml.isMarked(html);
+      var args = ProcessFilters.process(editor, InternalHtml.unmark(html), internal);
+      if (args.cancelled === false) {
+        SmartPaste.insertContent(editor, args.content);
+      }
+    };
+    var pasteText = function (editor, text) {
+      text = editor.dom.encode(text).replace(/\r\n/g, '\n');
+      text = Newlines.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);
+      pasteHtml$1(editor, text, false);
+    };
+    var getDataTransferItems = function (dataTransfer) {
+      var items = {};
+      var mceInternalUrlPrefix = 'data:text/mce-internal,';
+      if (dataTransfer) {
+        if (dataTransfer.getData) {
+          var legacyText = dataTransfer.getData('Text');
+          if (legacyText && legacyText.length > 0) {
+            if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {
+              items['text/plain'] = legacyText;
+            }
           }
         }
-      }
-      if (dataTransfer.types) {
-        for (var i = 0; i < dataTransfer.types.length; i++) {
-          var contentType = dataTransfer.types[i];
-          try {
-            items[contentType] = dataTransfer.getData(contentType);
-          } catch (ex) {
-            items[contentType] = '';
+        if (dataTransfer.types) {
+          for (var i = 0; i < dataTransfer.types.length; i++) {
+            var contentType = dataTransfer.types[i];
+            try {
+              items[contentType] = dataTransfer.getData(contentType);
+            } catch (ex) {
+              items[contentType] = '';
+            }
           }
         }
       }
-    }
-    return items;
-  };
-  var getClipboardContent = function (editor, clipboardEvent) {
-    var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);
-    return $_4bi2o9j0jjgwecui.isMsEdge() ? global$3.extend(content, { 'text/html': '' }) : content;
-  };
-  var hasContentType = function (clipboardContent, mimeType) {
-    return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;
-  };
-  var hasHtmlOrText = function (content) {
-    return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');
-  };
-  var getBase64FromUri = function (uri) {
-    var idx;
-    idx = uri.indexOf(',');
-    if (idx !== -1) {
-      return uri.substr(idx + 1);
-    }
-    return null;
-  };
-  var isValidDataUriImage = function (settings, imgElm) {
-    return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;
-  };
-  var extractFilename = function (editor, str) {
-    var m = str.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i);
-    return m ? editor.dom.encode(m[1]) : null;
-  };
-  var uniqueId = $_4bi2o9j0jjgwecui.createIdGenerator('mceclip');
-  var pasteImage = function (editor, rng, reader, blob) {
-    if (rng) {
-      editor.selection.setRng(rng);
-      rng = null;
-    }
-    var dataUri = reader.result;
-    var base64 = getBase64FromUri(dataUri);
-    var id = uniqueId();
-    var name$$1 = editor.settings.images_reuse_filename && blob.name ? extractFilename(editor, blob.name) : id;
-    var img = new Image();
-    img.src = dataUri;
-    if (isValidDataUriImage(editor.settings, img)) {
-      var blobCache = editor.editorUpload.blobCache;
-      var blobInfo = void 0, existingBlobInfo = void 0;
-      existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {
-        return cachedBlobInfo.base64() === base64;
-      });
-      if (!existingBlobInfo) {
-        blobInfo = blobCache.create(id, blob, base64, name$$1);
-        blobCache.add(blobInfo);
+      return items;
+    };
+    var getClipboardContent = function (editor, clipboardEvent) {
+      var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);
+      return Utils.isMsEdge() ? global$3.extend(content, { 'text/html': '' }) : content;
+    };
+    var hasContentType = function (clipboardContent, mimeType) {
+      return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;
+    };
+    var hasHtmlOrText = function (content) {
+      return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');
+    };
+    var getBase64FromUri = function (uri) {
+      var idx;
+      idx = uri.indexOf(',');
+      if (idx !== -1) {
+        return uri.substr(idx + 1);
+      }
+      return null;
+    };
+    var isValidDataUriImage = function (settings, imgElm) {
+      return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;
+    };
+    var extractFilename = function (editor, str) {
+      var m = str.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i);
+      return m ? editor.dom.encode(m[1]) : null;
+    };
+    var uniqueId = Utils.createIdGenerator('mceclip');
+    var pasteImage = function (editor, imageItem) {
+      var base64 = getBase64FromUri(imageItem.uri);
+      var id = uniqueId();
+      var name$$1 = editor.settings.images_reuse_filename && imageItem.blob.name ? extractFilename(editor, imageItem.blob.name) : id;
+      var img = new Image();
+      img.src = imageItem.uri;
+      if (isValidDataUriImage(editor.settings, img)) {
+        var blobCache = editor.editorUpload.blobCache;
+        var blobInfo = void 0, existingBlobInfo = void 0;
+        existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {
+          return cachedBlobInfo.base64() === base64;
+        });
+        if (!existingBlobInfo) {
+          blobInfo = blobCache.create(id, imageItem.blob, base64, name$$1);
+          blobCache.add(blobInfo);
+        } else {
+          blobInfo = existingBlobInfo;
+        }
+        pasteHtml$1(editor, '<img src="' + blobInfo.blobUri() + '">', false);
       } else {
-        blobInfo = existingBlobInfo;
+        pasteHtml$1(editor, '<img src="' + imageItem.uri + '">', false);
       }
-      pasteHtml$1(editor, '<img src="' + blobInfo.blobUri() + '">', false);
-    } else {
-      pasteHtml$1(editor, '<img src="' + dataUri + '">', false);
-    }
-  };
-  var isClipboardEvent = function (event$$1) {
-    return event$$1.type === 'paste';
-  };
-  var pasteImageData = function (editor, e, rng) {
-    var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;
-    function processItems(items) {
-      var i, item, reader, hadImage = false;
-      if (items) {
-        for (i = 0; i < items.length; i++) {
-          item = items[i];
-          if (/^image\/(jpeg|png|gif|bmp)$/.test(item.type)) {
-            var blob = item.getAsFile ? item.getAsFile() : item;
-            reader = new window.FileReader();
-            reader.onload = pasteImage.bind(null, editor, rng, reader, blob);
-            reader.readAsDataURL(blob);
-            e.preventDefault();
-            hadImage = true;
+    };
+    var isClipboardEvent = function (event$$1) {
+      return event$$1.type === 'paste';
+    };
+    var readBlobsAsDataUris = function (items) {
+      return mapM(items, function (item) {
+        return Future.nu(function (resolve) {
+          var blob = item.getAsFile ? item.getAsFile() : item;
+          var reader = new window.FileReader();
+          reader.onload = function () {
+            resolve({
+              blob: blob,
+              uri: reader.result
+            });
+          };
+          reader.readAsDataURL(blob);
+        });
+      });
+    };
+    var getImagesFromDataTransfer = function (dataTransfer) {
+      var items = dataTransfer.items ? map(from$1(dataTransfer.items), function (item) {
+        return item.getAsFile();
+      }) : [];
+      var files = dataTransfer.files ? from$1(dataTransfer.files) : [];
+      var images = filter$1(items.length > 0 ? items : files, function (file) {
+        return /^image\/(jpeg|png|gif|bmp)$/.test(file.type);
+      });
+      return images;
+    };
+    var pasteImageData = function (editor, e, rng) {
+      var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;
+      if (editor.settings.paste_data_images && dataTransfer) {
+        var images = getImagesFromDataTransfer(dataTransfer);
+        if (images.length > 0) {
+          e.preventDefault();
+          readBlobsAsDataUris(images).get(function (blobResults) {
+            if (rng) {
+              editor.selection.setRng(rng);
+            }
+            each(blobResults, function (result) {
+              pasteImage(editor, result);
+            });
+          });
+          return true;
+        }
+      }
+      return false;
+    };
+    var isBrokenAndroidClipboardEvent = function (e) {
+      var clipboardData = e.clipboardData;
+      return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
+    };
+    var isKeyboardPasteEvent = function (e) {
+      return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;
+    };
+    var registerEventHandlers = function (editor, pasteBin, pasteFormat) {
+      var keyboardPasteTimeStamp = 0;
+      var keyboardPastePlainTextState;
+      editor.on('keydown', function (e) {
+        function removePasteBinOnKeyUp(e) {
+          if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
+            pasteBin.remove();
           }
         }
-      }
-      return hadImage;
-    }
-    if (editor.settings.paste_data_images && dataTransfer) {
-      return processItems(dataTransfer.items) || processItems(dataTransfer.files);
-    }
-  };
-  var isBrokenAndroidClipboardEvent = function (e) {
-    var clipboardData = e.clipboardData;
-    return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
-  };
-  var isKeyboardPasteEvent = function (e) {
-    return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;
-  };
-  var registerEventHandlers = function (editor, pasteBin, pasteFormat) {
-    var keyboardPasteTimeStamp = 0;
-    var keyboardPastePlainTextState;
-    editor.on('keydown', function (e) {
-      function removePasteBinOnKeyUp(e) {
         if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
+          keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;
+          if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {
+            return;
+          }
+          e.stopImmediatePropagation();
+          keyboardPasteTimeStamp = new Date().getTime();
+          if (global$1.ie && keyboardPastePlainTextState) {
+            e.preventDefault();
+            Events.firePaste(editor, true);
+            return;
+          }
           pasteBin.remove();
+          pasteBin.create();
+          editor.once('keyup', removePasteBinOnKeyUp);
+          editor.once('paste', function () {
+            editor.off('keyup', removePasteBinOnKeyUp);
+          });
         }
-      }
-      if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
-        keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;
-        if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {
-          return;
+      });
+      function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {
+        var content, isPlainTextHtml;
+        if (hasContentType(clipboardContent, 'text/html')) {
+          content = clipboardContent['text/html'];
+        } else {
+          content = pasteBin.getHtml();
+          internal = internal ? internal : InternalHtml.isMarked(content);
+          if (pasteBin.isDefaultContent(content)) {
+            plainTextMode = true;
+          }
         }
-        e.stopImmediatePropagation();
-        keyboardPasteTimeStamp = new Date().getTime();
-        if (global$1.ie && keyboardPastePlainTextState) {
-          e.preventDefault();
-          $_8tki3zijjjgwectj.firePaste(editor, true);
-          return;
-        }
+        content = Utils.trimHtml(content);
         pasteBin.remove();
-        pasteBin.create();
-        editor.once('keyup', removePasteBinOnKeyUp);
-        editor.once('paste', function () {
-          editor.off('keyup', removePasteBinOnKeyUp);
-        });
-      }
-    });
-    function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {
-      var content, isPlainTextHtml;
-      if (hasContentType(clipboardContent, 'text/html')) {
-        content = clipboardContent['text/html'];
-      } else {
-        content = pasteBin.getHtml();
-        internal = internal ? internal : $_4x13hjirjjgwecu1.isMarked(content);
-        if (pasteBin.isDefaultContent(content)) {
+        isPlainTextHtml = internal === false && Newlines.isPlainText(content);
+        if (!content.length || isPlainTextHtml) {
           plainTextMode = true;
         }
-      }
-      content = $_4bi2o9j0jjgwecui.trimHtml(content);
-      pasteBin.remove();
-      isPlainTextHtml = internal === false && $_4h3hnrisjjgwecu2.isPlainText(content);
-      if (!content.length || isPlainTextHtml) {
-        plainTextMode = true;
-      }
-      if (plainTextMode) {
-        if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {
-          content = clipboardContent['text/plain'];
+        if (plainTextMode) {
+          if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {
+            content = clipboardContent['text/plain'];
+          } else {
+            content = Utils.innerText(content);
+          }
+        }
+        if (pasteBin.isDefaultContent(content)) {
+          if (!isKeyBoardPaste) {
+            editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');
+          }
+          return;
+        }
+        if (plainTextMode) {
+          pasteText(editor, content);
         } else {
-          content = $_4bi2o9j0jjgwecui.innerText(content);
+          pasteHtml$1(editor, content, internal);
         }
       }
-      if (pasteBin.isDefaultContent(content)) {
+      var getLastRng = function () {
+        return pasteBin.getLastRng() || editor.selection.getRng();
+      };
+      editor.on('paste', function (e) {
+        var clipboardTimer = new Date().getTime();
+        var clipboardContent = getClipboardContent(editor, e);
+        var clipboardDelay = new Date().getTime() - clipboardTimer;
+        var isKeyBoardPaste = new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay < 1000;
+        var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;
+        var internal = hasContentType(clipboardContent, InternalHtml.internalHtmlMime());
+        keyboardPastePlainTextState = false;
+        if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {
+          pasteBin.remove();
+          return;
+        }
+        if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {
+          pasteBin.remove();
+          return;
+        }
         if (!isKeyBoardPaste) {
-          editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');
+          e.preventDefault();
         }
-        return;
-      }
-      if (plainTextMode) {
-        pasteText(editor, content);
-      } else {
-        pasteHtml$1(editor, content, internal);
-      }
-    }
-    var getLastRng = function () {
-      return pasteBin.getLastRng() || editor.selection.getRng();
-    };
-    editor.on('paste', function (e) {
-      var clipboardTimer = new Date().getTime();
-      var clipboardContent = getClipboardContent(editor, e);
-      var clipboardDelay = new Date().getTime() - clipboardTimer;
-      var isKeyBoardPaste = new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay < 1000;
-      var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;
-      var internal = hasContentType(clipboardContent, $_4x13hjirjjgwecu1.internalHtmlMime());
-      keyboardPastePlainTextState = false;
-      if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {
-        pasteBin.remove();
-        return;
-      }
-      if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {
-        pasteBin.remove();
-        return;
-      }
-      if (!isKeyBoardPaste) {
-        e.preventDefault();
-      }
-      if (global$1.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {
-        pasteBin.create();
-        editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {
-          e.stopPropagation();
-        });
-        editor.getDoc().execCommand('Paste', false, null);
-        clipboardContent['text/html'] = pasteBin.getHtml();
-      }
-      if (hasContentType(clipboardContent, 'text/html')) {
-        e.preventDefault();
-        if (!internal) {
-          internal = $_4x13hjirjjgwecu1.isMarked(clipboardContent['text/html']);
+        if (global$1.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {
+          pasteBin.create();
+          editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {
+            e.stopPropagation();
+          });
+          editor.getDoc().execCommand('Paste', false, null);
+          clipboardContent['text/html'] = pasteBin.getHtml();
         }
-        insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);
-      } else {
-        global$2.setEditorTimeout(editor, function () {
+        if (hasContentType(clipboardContent, 'text/html')) {
+          e.preventDefault();
+          if (!internal) {
+            internal = InternalHtml.isMarked(clipboardContent['text/html']);
+          }
           insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);
-        }, 0);
-      }
-    });
-  };
-  var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {
-    registerEventHandlers(editor, pasteBin, pasteFormat);
-    var src;
-    editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {
-      var isPasteInsert = function (args) {
-        return args.data && args.data.paste === true;
-      };
-      var remove = function (node) {
-        if (!node.attr('data-mce-object') && src !== global$1.transparentSrc) {
-          node.remove();
+        } else {
+          global$2.setEditorTimeout(editor, function () {
+            insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);
+          }, 0);
         }
-      };
-      var isWebKitFakeUrl = function (src) {
-        return src.indexOf('webkit-fake-url') === 0;
-      };
-      var isDataUri = function (src) {
-        return src.indexOf('data:') === 0;
-      };
-      if (!editor.settings.paste_data_images && isPasteInsert(args)) {
-        var i = nodes.length;
-        while (i--) {
-          src = nodes[i].attributes.map.src;
-          if (!src) {
-            continue;
+      });
+    };
+    var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {
+      registerEventHandlers(editor, pasteBin, pasteFormat);
+      var src;
+      editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {
+        var isPasteInsert = function (args) {
+          return args.data && args.data.paste === true;
+        };
+        var remove = function (node) {
+          if (!node.attr('data-mce-object') && src !== global$1.transparentSrc) {
+            node.remove();
           }
-          if (isWebKitFakeUrl(src)) {
-            remove(nodes[i]);
-          } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {
-            remove(nodes[i]);
+        };
+        var isWebKitFakeUrl = function (src) {
+          return src.indexOf('webkit-fake-url') === 0;
+        };
+        var isDataUri = function (src) {
+          return src.indexOf('data:') === 0;
+        };
+        if (!editor.settings.paste_data_images && isPasteInsert(args)) {
+          var i = nodes.length;
+          while (i--) {
+            src = nodes[i].attributes.map.src;
+            if (!src) {
+              continue;
+            }
+            if (isWebKitFakeUrl(src)) {
+              remove(nodes[i]);
+            } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {
+              remove(nodes[i]);
+            }
           }
         }
-      }
-    });
-  };
+      });
+    };
 
-  var getPasteBinParent = function (editor) {
-    return global$1.ie && editor.inline ? document.body : editor.getBody();
-  };
-  var isExternalPasteBin = function (editor) {
-    return getPasteBinParent(editor) !== editor.getBody();
-  };
-  var delegatePasteEvents = function (editor, pasteBinElm) {
-    if (isExternalPasteBin(editor)) {
-      editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {
-        setTimeout(function () {
-          editor.fire('paste');
-        }, 0);
-      });
-    }
-  };
-  var create = function (editor, lastRngCell, pasteBinDefaultContent) {
-    var dom = editor.dom, body = editor.getBody();
-    var pasteBinElm;
-    lastRngCell.set(editor.selection.getRng());
-    pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {
-      'id': 'mcepastebin',
-      'class': 'mce-pastebin',
-      'contentEditable': true,
-      'data-mce-bogus': 'all',
-      'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'
-    }, pasteBinDefaultContent);
-    if (global$1.ie || global$1.gecko) {
-      dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);
-    }
-    dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {
-      e.stopPropagation();
-    });
-    delegatePasteEvents(editor, pasteBinElm);
-    pasteBinElm.focus();
-    editor.selection.select(pasteBinElm, true);
-  };
-  var remove = function (editor, lastRngCell) {
-    if (getEl(editor)) {
-      var pasteBinClone = void 0;
-      var lastRng = lastRngCell.get();
-      while (pasteBinClone = editor.dom.get('mcepastebin')) {
-        editor.dom.remove(pasteBinClone);
-        editor.dom.unbind(pasteBinClone);
+    var getPasteBinParent = function (editor) {
+      return global$1.ie && editor.inline ? document.body : editor.getBody();
+    };
+    var isExternalPasteBin = function (editor) {
+      return getPasteBinParent(editor) !== editor.getBody();
+    };
+    var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) {
+      if (isExternalPasteBin(editor)) {
+        editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {
+          if (!isDefault(editor, pasteBinDefaultContent)) {
+            editor.fire('paste');
+          }
+        });
       }
-      if (lastRng) {
-        editor.selection.setRng(lastRng);
+    };
+    var create = function (editor, lastRngCell, pasteBinDefaultContent) {
+      var dom = editor.dom, body = editor.getBody();
+      var pasteBinElm;
+      lastRngCell.set(editor.selection.getRng());
+      pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {
+        'id': 'mcepastebin',
+        'class': 'mce-pastebin',
+        'contentEditable': true,
+        'data-mce-bogus': 'all',
+        'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'
+      }, pasteBinDefaultContent);
+      if (global$1.ie || global$1.gecko) {
+        dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);
       }
-    }
-    lastRngCell.set(null);
-  };
-  var getEl = function (editor) {
-    return editor.dom.get('mcepastebin');
-  };
-  var getHtml = function (editor) {
-    var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;
-    var copyAndRemove = function (toElm, fromElm) {
-      toElm.appendChild(fromElm);
-      editor.dom.remove(fromElm, true);
+      dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {
+        e.stopPropagation();
+      });
+      delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent);
+      pasteBinElm.focus();
+      editor.selection.select(pasteBinElm, true);
     };
-    pasteBinClones = global$3.grep(getPasteBinParent(editor).childNodes, function (elm) {
-      return elm.id === 'mcepastebin';
-    });
-    pasteBinElm = pasteBinClones.shift();
-    global$3.each(pasteBinClones, function (pasteBinClone) {
-      copyAndRemove(pasteBinElm, pasteBinClone);
-    });
-    dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);
-    for (i = dirtyWrappers.length - 1; i >= 0; i--) {
-      cleanWrapper = editor.dom.create('div');
-      pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);
-      copyAndRemove(cleanWrapper, dirtyWrappers[i]);
-    }
-    return pasteBinElm ? pasteBinElm.innerHTML : '';
-  };
-  var getLastRng = function (lastRng) {
-    return lastRng.get();
-  };
-  var isDefaultContent = function (pasteBinDefaultContent, content) {
-    return content === pasteBinDefaultContent;
-  };
-  var isPasteBin = function (elm) {
-    return elm && elm.id === 'mcepastebin';
-  };
-  var isDefault = function (editor, pasteBinDefaultContent) {
-    var pasteBinElm = getEl(editor);
-    return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);
-  };
-  var PasteBin = function (editor) {
-    var lastRng = Cell(null);
-    var pasteBinDefaultContent = '%MCEPASTEBIN%';
-    return {
-      create: function () {
-        return create(editor, lastRng, pasteBinDefaultContent);
-      },
-      remove: function () {
-        return remove(editor, lastRng);
-      },
-      getEl: function () {
-        return getEl(editor);
-      },
-      getHtml: function () {
-        return getHtml(editor);
-      },
-      getLastRng: function () {
-        return getLastRng(lastRng);
-      },
-      isDefault: function () {
-        return isDefault(editor, pasteBinDefaultContent);
-      },
-      isDefaultContent: function (content) {
-        return isDefaultContent(pasteBinDefaultContent, content);
+    var remove = function (editor, lastRngCell) {
+      if (getEl(editor)) {
+        var pasteBinClone = void 0;
+        var lastRng = lastRngCell.get();
+        while (pasteBinClone = editor.dom.get('mcepastebin')) {
+          editor.dom.remove(pasteBinClone);
+          editor.dom.unbind(pasteBinClone);
+        }
+        if (lastRng) {
+          editor.selection.setRng(lastRng);
+        }
       }
+      lastRngCell.set(null);
     };
-  };
+    var getEl = function (editor) {
+      return editor.dom.get('mcepastebin');
+    };
+    var getHtml = function (editor) {
+      var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;
+      var copyAndRemove = function (toElm, fromElm) {
+        toElm.appendChild(fromElm);
+        editor.dom.remove(fromElm, true);
+      };
+      pasteBinClones = global$3.grep(getPasteBinParent(editor).childNodes, function (elm) {
+        return elm.id === 'mcepastebin';
+      });
+      pasteBinElm = pasteBinClones.shift();
+      global$3.each(pasteBinClones, function (pasteBinClone) {
+        copyAndRemove(pasteBinElm, pasteBinClone);
+      });
+      dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);
+      for (i = dirtyWrappers.length - 1; i >= 0; i--) {
+        cleanWrapper = editor.dom.create('div');
+        pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);
+        copyAndRemove(cleanWrapper, dirtyWrappers[i]);
+      }
+      return pasteBinElm ? pasteBinElm.innerHTML : '';
+    };
+    var getLastRng = function (lastRng) {
+      return lastRng.get();
+    };
+    var isDefaultContent = function (pasteBinDefaultContent, content) {
+      return content === pasteBinDefaultContent;
+    };
+    var isPasteBin = function (elm) {
+      return elm && elm.id === 'mcepastebin';
+    };
+    var isDefault = function (editor, pasteBinDefaultContent) {
+      var pasteBinElm = getEl(editor);
+      return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);
+    };
+    var PasteBin = function (editor) {
+      var lastRng = Cell(null);
+      var pasteBinDefaultContent = '%MCEPASTEBIN%';
+      return {
+        create: function () {
+          return create(editor, lastRng, pasteBinDefaultContent);
+        },
+        remove: function () {
+          return remove(editor, lastRng);
+        },
+        getEl: function () {
+          return getEl(editor);
+        },
+        getHtml: function () {
+          return getHtml(editor);
+        },
+        getLastRng: function () {
+          return getLastRng(lastRng);
+        },
+        isDefault: function () {
+          return isDefault(editor, pasteBinDefaultContent);
+        },
+        isDefaultContent: function (content) {
+          return isDefaultContent(pasteBinDefaultContent, content);
+        }
+      };
+    };
 
-  var Clipboard = function (editor, pasteFormat) {
-    var pasteBin = PasteBin(editor);
-    editor.on('preInit', function () {
-      return registerEventsAndFilters(editor, pasteBin, pasteFormat);
-    });
-    return {
-      pasteFormat: pasteFormat,
-      pasteHtml: function (html, internalFlag) {
-        return pasteHtml$1(editor, html, internalFlag);
-      },
-      pasteText: function (text) {
-        return pasteText(editor, text);
-      },
-      pasteImageData: function (e, rng) {
-        return pasteImageData(editor, e, rng);
-      },
-      getDataTransferItems: getDataTransferItems,
-      hasHtmlOrText: hasHtmlOrText,
-      hasContentType: hasContentType
+    var Clipboard = function (editor, pasteFormat) {
+      var pasteBin = PasteBin(editor);
+      editor.on('preInit', function () {
+        return registerEventsAndFilters(editor, pasteBin, pasteFormat);
+      });
+      return {
+        pasteFormat: pasteFormat,
+        pasteHtml: function (html, internalFlag) {
+          return pasteHtml$1(editor, html, internalFlag);
+        },
+        pasteText: function (text) {
+          return pasteText(editor, text);
+        },
+        pasteImageData: function (e, rng) {
+          return pasteImageData(editor, e, rng);
+        },
+        getDataTransferItems: getDataTransferItems,
+        hasHtmlOrText: hasHtmlOrText,
+        hasContentType: hasContentType
+      };
     };
-  };
 
-  var noop = function () {
-  };
-  var hasWorkingClipboardApi = function (clipboardData) {
-    return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && $_4bi2o9j0jjgwecui.isMsEdge() !== true;
-  };
-  var setHtml5Clipboard = function (clipboardData, html, text) {
-    if (hasWorkingClipboardApi(clipboardData)) {
-      try {
-        clipboardData.clearData();
-        clipboardData.setData('text/html', html);
-        clipboardData.setData('text/plain', text);
-        clipboardData.setData($_4x13hjirjjgwecu1.internalHtmlMime(), html);
-        return true;
-      } catch (e) {
+    var noop$1 = function () {
+    };
+    var hasWorkingClipboardApi = function (clipboardData) {
+      return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && Utils.isMsEdge() !== true;
+    };
+    var setHtml5Clipboard = function (clipboardData, html, text) {
+      if (hasWorkingClipboardApi(clipboardData)) {
+        try {
+          clipboardData.clearData();
+          clipboardData.setData('text/html', html);
+          clipboardData.setData('text/plain', text);
+          clipboardData.setData(InternalHtml.internalHtmlMime(), html);
+          return true;
+        } catch (e) {
+          return false;
+        }
+      } else {
         return false;
       }
-    } else {
-      return false;
-    }
-  };
-  var setClipboardData = function (evt, data, fallback, done) {
-    if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {
-      evt.preventDefault();
-      done();
-    } else {
-      fallback(data.html, done);
-    }
-  };
-  var fallback = function (editor) {
-    return function (html, done) {
-      var markedHtml = $_4x13hjirjjgwecu1.mark(html);
-      var outer = editor.dom.create('div', {
-        'contenteditable': 'false',
-        'data-mce-bogus': 'all'
-      });
-      var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);
-      editor.dom.setStyles(outer, {
-        position: 'fixed',
-        top: '0',
-        left: '-3000px',
-        width: '1000px',
-        overflow: 'hidden'
-      });
-      outer.appendChild(inner);
-      editor.dom.add(editor.getBody(), outer);
-      var range = editor.selection.getRng();
-      inner.focus();
-      var offscreenRange = editor.dom.createRng();
-      offscreenRange.selectNodeContents(inner);
-      editor.selection.setRng(offscreenRange);
-      setTimeout(function () {
-        editor.selection.setRng(range);
-        outer.parentNode.removeChild(outer);
+    };
+    var setClipboardData = function (evt, data, fallback, done) {
+      if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {
+        evt.preventDefault();
         done();
-      }, 0);
+      } else {
+        fallback(data.html, done);
+      }
     };
-  };
-  var getData = function (editor) {
-    return {
-      html: editor.selection.getContent({ contextual: true }),
-      text: editor.selection.getContent({ format: 'text' })
-    };
-  };
-  var cut = function (editor) {
-    return function (evt) {
-      if (editor.selection.isCollapsed() === false) {
-        setClipboardData(evt, getData(editor), fallback(editor), function () {
-          setTimeout(function () {
-            editor.execCommand('Delete');
-          }, 0);
+    var fallback = function (editor) {
+      return function (html, done) {
+        var markedHtml = InternalHtml.mark(html);
+        var outer = editor.dom.create('div', {
+          'contenteditable': 'false',
+          'data-mce-bogus': 'all'
         });
-      }
+        var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);
+        editor.dom.setStyles(outer, {
+          position: 'fixed',
+          top: '0',
+          left: '-3000px',
+          width: '1000px',
+          overflow: 'hidden'
+        });
+        outer.appendChild(inner);
+        editor.dom.add(editor.getBody(), outer);
+        var range = editor.selection.getRng();
+        inner.focus();
+        var offscreenRange = editor.dom.createRng();
+        offscreenRange.selectNodeContents(inner);
+        editor.selection.setRng(offscreenRange);
+        setTimeout(function () {
+          editor.selection.setRng(range);
+          outer.parentNode.removeChild(outer);
+          done();
+        }, 0);
+      };
     };
-  };
-  var copy = function (editor) {
-    return function (evt) {
-      if (editor.selection.isCollapsed() === false) {
-        setClipboardData(evt, getData(editor), fallback(editor), noop);
-      }
+    var getData = function (editor) {
+      return {
+        html: editor.selection.getContent({ contextual: true }),
+        text: editor.selection.getContent({ format: 'text' })
+      };
     };
-  };
-  var register$1 = function (editor) {
-    editor.on('cut', cut(editor));
-    editor.on('copy', copy(editor));
-  };
-  var $_32blojj3jjgwecv4 = { register: register$1 };
+    var isTableSelection = function (editor) {
+      return !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody());
+    };
+    var hasSelectedContent = function (editor) {
+      return !editor.selection.isCollapsed() || isTableSelection(editor);
+    };
+    var cut = function (editor) {
+      return function (evt) {
+        if (hasSelectedContent(editor)) {
+          setClipboardData(evt, getData(editor), fallback(editor), function () {
+            setTimeout(function () {
+              editor.execCommand('Delete');
+            }, 0);
+          });
+        }
+      };
+    };
+    var copy = function (editor) {
+      return function (evt) {
+        if (hasSelectedContent(editor)) {
+          setClipboardData(evt, getData(editor), fallback(editor), noop$1);
+        }
+      };
+    };
+    var register$1 = function (editor) {
+      editor.on('cut', cut(editor));
+      editor.on('copy', copy(editor));
+    };
+    var CutCopy = { register: register$1 };
 
-  var global$10 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
+    var global$a = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
 
-  var getCaretRangeFromEvent = function (editor, e) {
-    return global$10.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
-  };
-  var isPlainTextFileUrl = function (content) {
-    var plainTextContent = content['text/plain'];
-    return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;
-  };
-  var setFocusedRange = function (editor, rng) {
-    editor.focus();
-    editor.selection.setRng(rng);
-  };
-  var setup = function (editor, clipboard, draggingInternallyState) {
-    if ($_xr8b0ikjjgwectl.shouldBlockDrop(editor)) {
-      editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {
-        e.preventDefault();
-        e.stopPropagation();
-      });
-    }
-    if (!$_xr8b0ikjjgwectl.shouldPasteDataImages(editor)) {
-      editor.on('drop', function (e) {
-        var dataTransfer = e.dataTransfer;
-        if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
+    var getCaretRangeFromEvent = function (editor, e) {
+      return global$a.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
+    };
+    var isPlainTextFileUrl = function (content) {
+      var plainTextContent = content['text/plain'];
+      return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;
+    };
+    var setFocusedRange = function (editor, rng) {
+      editor.focus();
+      editor.selection.setRng(rng);
+    };
+    var setup = function (editor, clipboard, draggingInternallyState) {
+      if (Settings.shouldBlockDrop(editor)) {
+        editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {
           e.preventDefault();
-        }
-      });
-    }
-    editor.on('drop', function (e) {
-      var dropContent, rng;
-      rng = getCaretRangeFromEvent(editor, e);
-      if (e.isDefaultPrevented() || draggingInternallyState.get()) {
-        return;
+          e.stopPropagation();
+        });
       }
-      dropContent = clipboard.getDataTransferItems(e.dataTransfer);
-      var internal = clipboard.hasContentType(dropContent, $_4x13hjirjjgwecu1.internalHtmlMime());
-      if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {
-        return;
+      if (!Settings.shouldPasteDataImages(editor)) {
+        editor.on('drop', function (e) {
+          var dataTransfer = e.dataTransfer;
+          if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
+            e.preventDefault();
+          }
+        });
       }
-      if (rng && $_xr8b0ikjjgwectl.shouldFilterDrop(editor)) {
-        var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
-        if (content_1) {
-          e.preventDefault();
-          global$2.setEditorTimeout(editor, function () {
-            editor.undoManager.transact(function () {
-              if (dropContent['mce-internal']) {
-                editor.execCommand('Delete');
-              }
-              setFocusedRange(editor, rng);
-              content_1 = $_4bi2o9j0jjgwecui.trimHtml(content_1);
-              if (!dropContent['text/html']) {
-                clipboard.pasteText(content_1);
-              } else {
-                clipboard.pasteHtml(content_1, internal);
-              }
+      editor.on('drop', function (e) {
+        var dropContent, rng;
+        rng = getCaretRangeFromEvent(editor, e);
+        if (e.isDefaultPrevented() || draggingInternallyState.get()) {
+          return;
+        }
+        dropContent = clipboard.getDataTransferItems(e.dataTransfer);
+        var internal = clipboard.hasContentType(dropContent, InternalHtml.internalHtmlMime());
+        if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {
+          return;
+        }
+        if (rng && Settings.shouldFilterDrop(editor)) {
+          var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
+          if (content_1) {
+            e.preventDefault();
+            global$2.setEditorTimeout(editor, function () {
+              editor.undoManager.transact(function () {
+                if (dropContent['mce-internal']) {
+                  editor.execCommand('Delete');
+                }
+                setFocusedRange(editor, rng);
+                content_1 = Utils.trimHtml(content_1);
+                if (!dropContent['text/html']) {
+                  clipboard.pasteText(content_1);
+                } else {
+                  clipboard.pasteHtml(content_1, internal);
+                }
+              });
             });
-          });
+          }
         }
+      });
+      editor.on('dragstart', function (e) {
+        draggingInternallyState.set(true);
+      });
+      editor.on('dragover dragend', function (e) {
+        if (Settings.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {
+          e.preventDefault();
+          setFocusedRange(editor, getCaretRangeFromEvent(editor, e));
+        }
+        if (e.type === 'dragend') {
+          draggingInternallyState.set(false);
+        }
+      });
+    };
+    var DragDrop = { setup: setup };
+
+    var setup$1 = function (editor) {
+      var plugin = editor.plugins.paste;
+      var preProcess = Settings.getPreProcess(editor);
+      if (preProcess) {
+        editor.on('PastePreProcess', function (e) {
+          preProcess.call(plugin, plugin, e);
+        });
       }
-    });
-    editor.on('dragstart', function (e) {
-      draggingInternallyState.set(true);
-    });
-    editor.on('dragover dragend', function (e) {
-      if ($_xr8b0ikjjgwectl.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {
-        e.preventDefault();
-        setFocusedRange(editor, getCaretRangeFromEvent(editor, e));
+      var postProcess = Settings.getPostProcess(editor);
+      if (postProcess) {
+        editor.on('PastePostProcess', function (e) {
+          postProcess.call(plugin, plugin, e);
+        });
       }
-      if (e.type === 'dragend') {
-        draggingInternallyState.set(false);
-      }
-    });
-  };
-  var $_b4etj0j4jjgwecv7 = { setup: setup };
+    };
+    var PrePostProcess = { setup: setup$1 };
 
-  var setup$1 = function (editor) {
-    var plugin = editor.plugins.paste;
-    var preProcess = $_xr8b0ikjjgwectl.getPreProcess(editor);
-    if (preProcess) {
+    function addPreProcessFilter(editor, filterFunc) {
       editor.on('PastePreProcess', function (e) {
-        preProcess.call(plugin, plugin, e);
+        e.content = filterFunc(editor, e.content, e.internal, e.wordContent);
       });
     }
-    var postProcess = $_xr8b0ikjjgwectl.getPostProcess(editor);
-    if (postProcess) {
+    function addPostProcessFilter(editor, filterFunc) {
       editor.on('PastePostProcess', function (e) {
-        postProcess.call(plugin, plugin, e);
+        filterFunc(editor, e.node);
       });
     }
-  };
-  var $_c5bihmj6jjgwecva = { setup: setup$1 };
-
-  function addPreProcessFilter(editor, filterFunc) {
-    editor.on('PastePreProcess', function (e) {
-      e.content = filterFunc(editor, e.content, e.internal, e.wordContent);
-    });
-  }
-  function addPostProcessFilter(editor, filterFunc) {
-    editor.on('PastePostProcess', function (e) {
-      filterFunc(editor, e.node);
-    });
-  }
-  function removeExplorerBrElementsAfterBlocks(editor, html) {
-    if (!$_dfatuiivjjgwecu8.isWordContent(html)) {
+    function removeExplorerBrElementsAfterBlocks(editor, html) {
+      if (!WordFilter.isWordContent(html)) {
+        return html;
+      }
+      var blockElements = [];
+      global$3.each(editor.schema.getBlockElements(), function (block, blockName) {
+        blockElements.push(blockName);
+      });
+      var explorerBlocksRegExp = new RegExp('(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*', 'g');
+      html = Utils.filter(html, [[
+          explorerBlocksRegExp,
+          '$1'
+        ]]);
+      html = Utils.filter(html, [
+        [
+          /<br><br>/g,
+          '<BR><BR>'
+        ],
+        [
+          /<br>/g,
+          ' '
+        ],
+        [
+          /<BR><BR>/g,
+          '<br>'
+        ]
+      ]);
       return html;
     }
-    var blockElements = [];
-    global$3.each(editor.schema.getBlockElements(), function (block, blockName) {
-      blockElements.push(blockName);
-    });
-    var explorerBlocksRegExp = new RegExp('(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*', 'g');
-    html = $_4bi2o9j0jjgwecui.filter(html, [[
-        explorerBlocksRegExp,
-        '$1'
-      ]]);
-    html = $_4bi2o9j0jjgwecui.filter(html, [
-      [
-        /<br><br>/g,
-        '<BR><BR>'
-      ],
-      [
-        /<br>/g,
-        ' '
-      ],
-      [
-        /<BR><BR>/g,
-        '<br>'
-      ]
-    ]);
-    return html;
-  }
-  function removeWebKitStyles(editor, content, internal, isWordHtml) {
-    if (isWordHtml || internal) {
-      return content;
-    }
-    var webKitStylesSetting = $_xr8b0ikjjgwectl.getWebkitStyles(editor);
-    var webKitStyles;
-    if ($_xr8b0ikjjgwectl.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {
-      return content;
-    }
-    if (webKitStylesSetting) {
-      webKitStyles = webKitStylesSetting.split(/[, ]/);
-    }
-    if (webKitStyles) {
-      var dom_1 = editor.dom, node_1 = editor.selection.getNode();
-      content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function (all, before, value, after) {
-        var inputStyles = dom_1.parseStyle(dom_1.decode(value));
-        var outputStyles = {};
-        if (webKitStyles === 'none') {
-          return before + after;
-        }
-        for (var i = 0; i < webKitStyles.length; i++) {
-          var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);
-          if (/color/.test(webKitStyles[i])) {
-            inputValue = dom_1.toHex(inputValue);
-            currentValue = dom_1.toHex(currentValue);
+    function removeWebKitStyles(editor, content, internal, isWordHtml) {
+      if (isWordHtml || internal) {
+        return content;
+      }
+      var webKitStylesSetting = Settings.getWebkitStyles(editor);
+      var webKitStyles;
+      if (Settings.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {
+        return content;
+      }
+      if (webKitStylesSetting) {
+        webKitStyles = webKitStylesSetting.split(/[, ]/);
+      }
+      if (webKitStyles) {
+        var dom_1 = editor.dom, node_1 = editor.selection.getNode();
+        content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function (all, before, value, after) {
+          var inputStyles = dom_1.parseStyle(dom_1.decode(value));
+          var outputStyles = {};
+          if (webKitStyles === 'none') {
+            return before + after;
           }
-          if (currentValue !== inputValue) {
-            outputStyles[webKitStyles[i]] = inputValue;
+          for (var i = 0; i < webKitStyles.length; i++) {
+            var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);
+            if (/color/.test(webKitStyles[i])) {
+              inputValue = dom_1.toHex(inputValue);
+              currentValue = dom_1.toHex(currentValue);
+            }
+            if (currentValue !== inputValue) {
+              outputStyles[webKitStyles[i]] = inputValue;
+            }
           }
-        }
-        outputStyles = dom_1.serializeStyle(outputStyles, 'span');
-        if (outputStyles) {
-          return before + ' style="' + outputStyles + '"' + after;
-        }
-        return before + after;
+          outputStyles = dom_1.serializeStyle(outputStyles, 'span');
+          if (outputStyles) {
+            return before + ' style="' + outputStyles + '"' + after;
+          }
+          return before + after;
+        });
+      } else {
+        content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3');
+      }
+      content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function (all, before, value, after) {
+        return before + ' style="' + value + '"' + after;
       });
-    } else {
-      content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3');
+      return content;
     }
-    content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function (all, before, value, after) {
-      return before + ' style="' + value + '"' + after;
-    });
-    return content;
-  }
-  function removeUnderlineAndFontInAnchor(editor, root) {
-    editor.$('a', root).find('font,u').each(function (i, node) {
-      editor.dom.remove(node, true);
-    });
-  }
-  var setup$2 = function (editor) {
-    if (global$1.webkit) {
-      addPreProcessFilter(editor, removeWebKitStyles);
+    function removeUnderlineAndFontInAnchor(editor, root) {
+      editor.$('a', root).find('font,u').each(function (i, node) {
+        editor.dom.remove(node, true);
+      });
     }
-    if (global$1.ie) {
-      addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);
-      addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);
-    }
-  };
-  var $_36tmgyj7jjgwecvc = { setup: setup$2 };
-
-  var curry = function (f) {
-    var x = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-      x[_i - 1] = arguments[_i];
-    }
-    var args = new Array(arguments.length - 1);
-    for (var i = 1; i < arguments.length; i++)
-      args[i - 1] = arguments[i];
-    return function () {
-      var x = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        x[_i] = arguments[_i];
+    var setup$2 = function (editor) {
+      if (global$1.webkit) {
+        addPreProcessFilter(editor, removeWebKitStyles);
       }
-      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);
+      if (global$1.ie) {
+        addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);
+        addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);
+      }
     };
-  };
+    var Quirks = { setup: setup$2 };
 
-  var stateChange = function (editor, clipboard, e) {
-    var ctrl = e.control;
-    ctrl.active(clipboard.pasteFormat.get() === 'text');
-    editor.on('PastePlainTextToggle', function (e) {
-      ctrl.active(e.state);
+    var stateChange = function (editor, clipboard, e) {
+      var ctrl = e.control;
+      ctrl.active(clipboard.pasteFormat.get() === 'text');
+      editor.on('PastePlainTextToggle', function (e) {
+        ctrl.active(e.state);
+      });
+    };
+    var register$2 = function (editor, clipboard) {
+      var postRender = curry(stateChange, editor, clipboard);
+      editor.addButton('pastetext', {
+        active: false,
+        icon: 'pastetext',
+        tooltip: 'Paste as text',
+        cmd: 'mceTogglePlainTextPaste',
+        onPostRender: postRender
+      });
+      editor.addMenuItem('pastetext', {
+        text: 'Paste as text',
+        selectable: true,
+        active: clipboard.pasteFormat,
+        cmd: 'mceTogglePlainTextPaste',
+        onPostRender: postRender
+      });
+    };
+    var Buttons = { register: register$2 };
+
+    global.add('paste', function (editor) {
+      if (DetectProPlugin.hasProPlugin(editor) === false) {
+        var userIsInformedState = Cell(false);
+        var draggingInternallyState = Cell(false);
+        var pasteFormat = Cell(Settings.isPasteAsTextEnabled(editor) ? 'text' : 'html');
+        var clipboard = Clipboard(editor, pasteFormat);
+        var quirks = Quirks.setup(editor);
+        Buttons.register(editor, clipboard);
+        Commands.register(editor, clipboard, userIsInformedState);
+        PrePostProcess.setup(editor);
+        CutCopy.register(editor);
+        DragDrop.setup(editor, clipboard, draggingInternallyState);
+        return Api.get(clipboard, quirks);
+      }
     });
-  };
-  var register$2 = function (editor, clipboard) {
-    var postRender = curry(stateChange, editor, clipboard);
-    editor.addButton('pastetext', {
-      active: false,
-      icon: 'pastetext',
-      tooltip: 'Paste as text',
-      cmd: 'mceTogglePlainTextPaste',
-      onPostRender: postRender
-    });
-    editor.addMenuItem('pastetext', {
-      text: 'Paste as text',
-      selectable: true,
-      active: clipboard.pasteFormat,
-      cmd: 'mceTogglePlainTextPaste',
-      onPostRender: postRender
-    });
-  };
-  var $_g9yhwdj8jjgwecvf = { register: register$2 };
-
-  global.add('paste', function (editor) {
-    if ($_15bf6siejjgwect1.hasProPlugin(editor) === false) {
-      var userIsInformedState = Cell(false);
-      var draggingInternallyState = Cell(false);
-      var pasteFormat = Cell($_xr8b0ikjjgwectl.isPasteAsTextEnabled(editor) ? 'text' : 'html');
-      var clipboard = Clipboard(editor, pasteFormat);
-      var quirks = $_36tmgyj7jjgwecvc.setup(editor);
-      $_g9yhwdj8jjgwecvf.register(editor, clipboard);
-      $_fldd1mihjjgwecth.register(editor, clipboard, userIsInformedState);
-      $_c5bihmj6jjgwecva.setup(editor);
-      $_32blojj3jjgwecv4.register(editor);
-      $_b4etj0j4jjgwecv7.setup(editor, clipboard, draggingInternallyState);
-      return $_6gtliyigjjgwecte.get(clipboard, quirks);
+    function Plugin () {
     }
-  });
-  function Plugin () {
-  }
 
-  return Plugin;
+    return Plugin;
 
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/paste/plugin.min.js	(working copy)
@@ -1 +1 @@
-!function(){"use strict";var u=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return u(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=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))},s=function(e,t){return{clipboard:e,quirks:t}},f=function(e,t,n,r){return e.fire("PastePreProcess",{content:t,internal:n,wordContent:r})},d=function(e,t,n,r){return e.fire("PastePostProcess",{node:t,internal:n,wordContent:r})},l=function(e,t){return e.fire("PastePlainTextToggle",{state:t})},n=function(e,t){return e.fire("paste",{ieFake:t})},m={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)}},r=function(e,t,n){var r,a,i;"text"===t.pasteFormat.get()?(t.pasteFormat.set("html"),l(e,!1)):(t.pasteFormat.set("text"),l(e,!0),i=e,!1===n.get()&&m.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,n,t){e.addCommand("mceTogglePlainTextPaste",function(){r(e,n,t)}),e.addCommand("mceInsertClipboardContent",function(e,t){t.content&&n.pasteHtml(t.content,t.internal),t.text&&n.pasteText(t.text)})},v=tinymce.util.Tools.resolve("tinymce.Env"),h=tinymce.util.Tools.resolve("tinymce.util.Delay"),b=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=tinymce.util.Tools.resolve("tinymce.util.VK"),e="x-tinymce/html",i="\x3c!-- "+e+" --\x3e",p=function(e){return i+e},g=function(e){return e.replace(i,"")},y=function(e){return-1!==e.indexOf(i)},x=function(){return e},P=tinymce.util.Tools.resolve("tinymce.html.Entities"),w=function(e){return e.replace(/\r?\n/g,"<br>")},_=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+'="'+P.encodeAllRaw(t[n])+'"');r.length&&(a+=" "+r.join(" "))}return a+">"}(t,n),i="</"+t+">",o=b.map(r,function(e){return e.split(/\n/).join("<br />")});return 1===o.length?o[0]:b.map(o,function(e){return a+e+i}).join("")},D=function(e){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(e)},T=function(e,t,n){return t?_(e,t,n):w(e)},C=tinymce.util.Tools.resolve("tinymce.html.DomParser"),k=tinymce.util.Tools.resolve("tinymce.html.Node"),R=tinymce.util.Tools.resolve("tinymce.html.Schema"),F=tinymce.util.Tools.resolve("tinymce.html.Serializer");function E(t,e){return b.each(e,function(e){t=e.constructor===RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}var S={filter:E,innerText:function(t){var n=R(),r=C({},n),a="",i=n.getShortEndedElements(),o=b.makeMap("script noscript style textarea video audio iframe object"," "),s=n.getBlockElements();return t=E(t,[/<!\[[^\]]+\]>/g]),function e(t){var n=t.name,r=t;if("br"!==n)if(i[n]&&(a+=" "),o[n])a+=" ";else{if(3===t.type&&(a+=t.value),!t.shortEnded&&(t=t.firstChild))for(;e(t),t=t.next;);s[n]&&r.next&&(a+="\n","p"===n&&(a+="\n"))}else a+="\n"}(r.parse(t)),a},trimHtml:function(e){return e=E(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 I(t){var n,e;return e=[/^[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]/],t=t.replace(/^[\u00a0 ]+/,""),b.each(e,function(e){if(e.test(t))return!(n=!0)}),n}function M(e){var i,o,s=1;function n(e){var t="";if(3===e.type)return e.value;if(e=e.firstChild)for(;t+=n(e),e=e.next;);return t}function l(e,t){if(3===e.type&&t.test(e.value))return e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do{if(!l(e,t))return!1}while(e=e.next);return!0}function t(t,n,r){var a=t._listLevel||s;a!==s&&(a<s?i&&(i=i.parent.parent):(o=i,i=null)),i&&i.name===n?i.append(t):(o=o||i,i=new k(n,1),1<r&&i.attr("start",""+r),t.wrap(i)),t.name="li",s<a&&o&&o.lastChild.append(i),s=a,function e(t){if(t._listIgnore)t.remove();else if(t=t.firstChild)for(;e(t),t=t.next;);}(t),l(t,/^\u00a0+/),l(t,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),l(t,/^\u00a0+/)}for(var r=[],a=e.firstChild;null!=a;)if(r.push(a),null!==(a=a.walk()))for(;void 0!==a&&a.parent!==e;)a=a.walk();for(var u=0;u<r.length;u++)if("p"===(e=r[u]).name&&e.firstChild){var c=n(e);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)){t(e,"ul");continue}if(I(c)){var f=/([0-9]+)\./.exec(c),d=1;f&&(d=parseInt(f[1],10)),t(e,"ol",d);continue}if(e._listLevel){t(e,"ul",1);continue}i=null}else o=i,i=null}function O(n,r,a,i){var o,s={},e=n.dom.parseStyle(i);return b.each(e,function(e,t){switch(t){case"mso-list":(o=/\w+ \w+([0-9]+)/i.exec(i))&&(a._listLevel=parseInt(o[1],10)),/Ignore/i.test(e)&&a.firstChild&&(a._listIgnore=!0,a.firstChild._listIgnore=!0);break;case"horiz-align":t="text-align";break;case"vert-align":t="vertical-align";break;case"font-color":case"mso-foreground":t="color";break;case"mso-background":case"mso-highlight":t="background";break;case"font-weight":case"font-style":return void("normal"!==e&&(s[t]=e));case"mso-element":if(/^(comment|comment-list)$/i.test(e))return void a.remove()}0!==t.indexOf("mso-comment")?0!==t.indexOf("mso-")&&("all"===m.getRetainStyleProps(n)||r&&r[t])&&(s[t]=e):a.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],a.wrap(new k("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],a.wrap(new k("i",1))),(s=n.dom.serializeStyle(s,a.name))||null}var A={preProcess:function(e,t){return m.shouldUseDefaultFilters(e)?function(r,e){var t,a;(t=m.getRetainStyleProps(r))&&(a=b.makeMap(t.split(/[, ]/))),e=S.filter(e,[/<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 0<t.length?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var n=m.getWordValidElements(r),i=R({valid_elements:n,valid_children:"-li[p]"});b.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=C({},i);o.addAttributeFilter("style",function(e){for(var t,n=e.length;n--;)(t=e[n]).attr("style",O(r,a,t,t.attr("style"))),"span"===t.name&&t.parent&&!t.attributes.length&&t.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(e);return m.shouldConvertWordFakeLists(r)&&M(s),e=F({validate:r.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)}},H=function(e,t){return{content:e,cancelled:t}},B=function(e,t,n,r){var a,i,o,s,l,u,c=f(e,t,n,r);return e.hasEventListeners("PastePostProcess")&&!c.isDefaultPrevented()?(a=e,i=c.content,o=n,s=r,l=a.dom.create("div",{style:"display:none"},i),u=d(a,l,o,s),H(u.node.innerHTML,u.isDefaultPrevented())):H(c.content,c.isDefaultPrevented())},L=function(e,t,n){var r=A.isWordContent(t),a=r?A.preProcess(e,t):t;return B(e,a,n,r)},$=function(e,t){return e.insertContent(t,{merge:m.shouldMergeFormats(e),paste:!0}),!0},j=function(e){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(e)},W=function(e){return j(e)&&/.(gif|jpe?g|png)$/.test(e)},N=function(e,t,n){return!(!1!==e.selection.isCollapsed()||!j(t)||(a=t,i=n,(r=e).undoManager.extra(function(){i(r,a)},function(){r.execCommand("mceInsertLink",!1,a)}),0));var r,a,i},V=function(e,t,n){return!!W(t)&&(a=t,i=n,(r=e).undoManager.extra(function(){i(r,a)},function(){r.insertContent('<img src="'+a+'">')}),!0);var r,a,i},z=function(e,t){var n,r;!1===m.isSmartPasteEnabled(e)?$(e,t):(n=e,r=t,b.each([N,V,$],function(e){return!0!==e(n,r,$)}))},K=function(e,t,n){var r=n||y(t),a=L(e,g(t),r);!1===a.cancelled&&z(e,a.content)},U=function(e,t){t=e.dom.encode(t).replace(/\r\n/g,"\n"),t=T(t,e.settings.forced_root_block,e.settings.forced_root_block_attrs),K(e,t,!1)},G=function(e){var t={};if(e){if(e.getData){var n=e.getData("Text");n&&0<n.length&&-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},X=function(e,t){return t in e&&0<e[t].length},q=function(e){return X(e,"text/html")||X(e,"text/plain")},Y=S.createIdGenerator("mceclip"),Z=function(e,t,n,r){t&&(e.selection.setRng(t),t=null);var a,i,o,s,l,u,c,f=n.result,d=-1!==(i=(a=f).indexOf(","))?a.substr(i+1):null,m=Y(),p=e.settings.images_reuse_filename&&r.name?(o=e,s=r.name,(l=s.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(l[1]):null):m,g=new Image;if(g.src=f,u=e.settings,c=g,!u.images_dataimg_filter||u.images_dataimg_filter(c)){var v,h=e.editorUpload.blobCache,b=void 0;(v=h.findFirst(function(e){return e.base64()===d}))?b=v:(b=h.create(m,r,d,p),h.add(b)),K(e,'<img src="'+b.blobUri()+'">',!1)}else K(e,'<img src="'+f+'">',!1)},J=function(o,s,l){var e="paste"===s.type?s.clipboardData:s.dataTransfer;function t(e){var t,n,r,a=!1;if(e)for(t=0;t<e.length;t++)if(n=e[t],/^image\/(jpeg|png|gif|bmp)$/.test(n.type)){var i=n.getAsFile?n.getAsFile():n;(r=new window.FileReader).onload=Z.bind(null,o,l,r,i),r.readAsDataURL(i),s.preventDefault(),a=!0}return a}if(o.settings.paste_data_images&&e)return t(e.items)||t(e.files)},Q=function(e){return a.metaKeyPressed(e)&&86===e.keyCode||e.shiftKey&&45===e.keyCode},ee=function(c,f,d){var m,p=0;function g(e,t,n,r){var a,i;X(e,"text/html")?a=e["text/html"]:(a=f.getHtml(),r=r||y(a),f.isDefaultContent(a)&&(n=!0)),a=S.trimHtml(a),f.remove(),i=!1===r&&D(a),a.length&&!i||(n=!0),n&&(a=X(e,"text/plain")&&i?e["text/plain"]:S.innerText(a)),f.isDefaultContent(a)?t||c.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?U(c,a):K(c,a,r)}c.on("keydown",function(e){function t(e){Q(e)&&!e.isDefaultPrevented()&&f.remove()}if(Q(e)&&!e.isDefaultPrevented()){if((m=e.shiftKey&&86===e.keyCode)&&v.webkit&&-1!==navigator.userAgent.indexOf("Version/"))return;if(e.stopImmediatePropagation(),p=(new Date).getTime(),v.ie&&m)return e.preventDefault(),void n(c,!0);f.remove(),f.create(),c.once("keyup",t),c.once("paste",function(){c.off("keyup",t)})}}),c.on("paste",function(e){var t,n,r,a=(new Date).getTime(),i=(t=c,n=G(e.clipboardData||t.getDoc().dataTransfer),S.isMsEdge()?b.extend(n,{"text/html":""}):n),o=(new Date).getTime()-a,s=(new Date).getTime()-p-o<1e3,l="text"===d.get()||m,u=X(i,x());m=!1,e.isDefaultPrevented()||(r=e.clipboardData,-1!==navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?f.remove():q(i)||!J(c,e,f.getLastRng()||c.selection.getRng())?(s||e.preventDefault(),!v.ie||s&&!e.ieFake||X(i,"text/html")||(f.create(),c.dom.bind(f.getEl(),"paste",function(e){e.stopPropagation()}),c.getDoc().execCommand("Paste",!1,null),i["text/html"]=f.getHtml()),X(i,"text/html")?(e.preventDefault(),u||(u=y(i["text/html"])),g(i,s,l,u)):h.setEditorTimeout(c,function(){g(i,s,l,u)},0)):f.remove()})},te=function(e){return v.ie&&e.inline?document.body:e.getBody()},ne=function(t,e){var n;te(n=t)!==n.getBody()&&t.dom.bind(e,"paste keyup",function(e){setTimeout(function(){t.fire("paste")},0)})},re=function(e){return e.dom.get("mcepastebin")},ae=function(e,t){return t===e},ie=function(o){var s=u(null),l="%MCEPASTEBIN%";return{create:function(){return t=s,n=l,a=(e=o).dom,i=e.getBody(),t.set(e.selection.getRng()),r=e.dom.add(te(e),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(v.ie||v.gecko)&&a.setStyle(r,"left","rtl"===a.getStyle(i,"direction",!0)?65535:-65535),a.bind(r,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),ne(e,r),r.focus(),void e.selection.select(r,!0);var e,t,n,r,a,i},remove:function(){return function(e,t){if(re(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)}(o,s)},getEl:function(){return re(o)},getHtml:function(){return function(n){var t,e,r,a,i,o=function(e,t){e.appendChild(t),n.dom.remove(t,!0)};for(e=b.grep(te(n).childNodes,function(e){return"mcepastebin"===e.id}),t=e.shift(),b.each(e,function(e){o(t,e)}),r=(a=n.dom.select("div[id=mcepastebin]",t)).length-1;0<=r;r--)i=n.dom.create("div"),t.insertBefore(i,a[r]),o(i,a[r]);return t?t.innerHTML:""}(o)},getLastRng:function(){return s.get()},isDefault:function(){return e=l,n=re(o),(t=n)&&"mcepastebin"===t.id&&ae(e,n.innerHTML);var e,t,n},isDefaultContent:function(e){return ae(l,e)}}},oe=function(n,e){var t=ie(n);return n.on("preInit",function(){return ee(o=n,t,e),void o.parser.addNodeFilter("img",function(e,t,n){var r,a=function(e){e.attr("data-mce-object")||s===v.transparentSrc||e.remove()};if(!o.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=e.length;i--;)(s=e[i].attributes.map.src)&&(0===s.indexOf("webkit-fake-url")?a(e[i]):o.settings.allow_html_data_urls||0!==s.indexOf("data:")||a(e[i]))});var o,s}),{pasteFormat:e,pasteHtml:function(e,t){return K(n,e,t)},pasteText:function(e){return U(n,e)},pasteImageData:function(e,t){return J(n,e,t)},getDataTransferItems:G,hasHtmlOrText:q,hasContentType:X}},se=function(){},le=function(e,t,n){if(r=e,!1!==v.iOS||r===undefined||"function"!=typeof r.setData||!0===S.isMsEdge())return!1;try{return e.clearData(),e.setData("text/html",t),e.setData("text/plain",n),e.setData(x(),t),!0}catch(a){return!1}var r},ue=function(e,t,n,r){le(e.clipboardData,t.html,t.text)?(e.preventDefault(),r()):n(t.html,r)},ce=function(s){return function(e,t){var n=p(e),r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),a=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(a),s.dom.add(s.getBody(),r);var i=s.selection.getRng();a.focus();var o=s.dom.createRng();o.selectNodeContents(a),s.selection.setRng(o),setTimeout(function(){s.selection.setRng(i),r.parentNode.removeChild(r),t()},0)}},fe=function(e){return{html:e.selection.getContent({contextual:!0}),text:e.selection.getContent({format:"text"})}},de=function(e){var t,n;e.on("cut",(t=e,function(e){!1===t.selection.isCollapsed()&&ue(e,fe(t),ce(t),function(){setTimeout(function(){t.execCommand("Delete")},0)})})),e.on("copy",(n=e,function(e){!1===n.selection.isCollapsed()&&ue(e,fe(n),ce(n),se)}))},me=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),pe=function(e,t){return me.getCaretRangeFromPoint(t.clientX,t.clientY,e.getDoc())},ge=function(e,t){e.focus(),e.selection.setRng(t)},ve=function(o,s,l){m.shouldBlockDrop(o)&&o.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),m.shouldPasteDataImages(o)||o.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&0<t.files.length&&e.preventDefault()}),o.on("drop",function(e){var t,n;if(n=pe(o,e),!e.isDefaultPrevented()&&!l.get()){t=s.getDataTransferItems(e.dataTransfer);var r,a=s.hasContentType(t,x());if((s.hasHtmlOrText(t)&&(!(r=t["text/plain"])||0!==r.indexOf("file://"))||!s.pasteImageData(e,n))&&n&&m.shouldFilterDrop(o)){var i=t["mce-internal"]||t["text/html"]||t["text/plain"];i&&(e.preventDefault(),h.setEditorTimeout(o,function(){o.undoManager.transact(function(){t["mce-internal"]&&o.execCommand("Delete"),ge(o,n),i=S.trimHtml(i),t["text/html"]?s.pasteHtml(i,a):s.pasteText(i)})}))}}}),o.on("dragstart",function(e){l.set(!0)}),o.on("dragover dragend",function(e){m.shouldPasteDataImages(o)&&!1===l.get()&&(e.preventDefault(),ge(o,pe(o,e))),"dragend"===e.type&&l.set(!1)})},he=function(e){var t=e.plugins.paste,n=m.getPreProcess(e);n&&e.on("PastePreProcess",function(e){n.call(t,t,e)});var r=m.getPostProcess(e);r&&e.on("PastePostProcess",function(e){r.call(t,t,e)})};function be(t,n){t.on("PastePreProcess",function(e){e.content=n(t,e.content,e.internal,e.wordContent)})}function ye(e,t){if(!A.isWordContent(t))return t;var n=[];b.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=S.filter(t,[[r,"$1"]]),t=S.filter(t,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function xe(e,t,n,r){if(r||n)return t;var u,a=m.getWebkitStyles(e);if(!1===m.shouldRemoveWebKitStyles(e)||"all"===a)return t;if(a&&(u=a.split(/[, ]/)),u){var c=e.dom,f=e.selection.getNode();t=t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(e,t,n,r){var a=c.parseStyle(c.decode(n)),i={};if("none"===u)return t+r;for(var o=0;o<u.length;o++){var s=a[u[o]],l=c.getStyle(f,u[o],!0);/color/.test(u[o])&&(s=c.toHex(s),l=c.toHex(l)),l!==s&&(i[u[o]]=s)}return(i=c.serializeStyle(i,"span"))?t+' style="'+i+'"'+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(n,e){n.$("a",e).find("font,u").each(function(e,t){n.dom.remove(t,!0)})}var we=function(e){var t,n;v.webkit&&be(e,xe),v.ie&&(be(e,ye),n=Pe,(t=e).on("PastePostProcess",function(e){n(t,e.node)}))},_e=function(e,t,n){var r=n.control;r.active("text"===t.pasteFormat.get()),e.on("PastePlainTextToggle",function(e){r.active(e.state)})},De=function(e,t){var n=function(i){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];for(var o=new Array(arguments.length-1),n=1;n<arguments.length;n++)o[n-1]=arguments[n];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];var a=o.concat(n);return i.apply(null,a)}}(_e,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(e){if(!1===o(e)){var t=u(!1),n=u(!1),r=u(m.isPasteAsTextEnabled(e)?"text":"html"),a=oe(e,r),i=we(e);return De(e,a),c(e,a,t),he(e),de(e),ve(e,a,n),s(a,i)}})}();
\ No newline at end of file
+!function(){"use strict";var l=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return l(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.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))},s=function(t,e){return{clipboard:t,quirks:e}},f=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},d=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},u=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("paste",{ieFake:e})},m={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.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(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),u(t,!1)):(e.pasteFormat.set("text"),u(t,!0),i=t,!1===n.get()&&m.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=function(t,n,e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},v=tinymce.util.Tools.resolve("tinymce.Env"),h=tinymce.util.Tools.resolve("tinymce.util.Delay"),y=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",g=function(t){return i+t},p=function(t){return t.replace(i,"")},b=function(t){return-1!==t.indexOf(i)},x=function(){return t},P=tinymce.util.Tools.resolve("tinymce.html.Entities"),w=function(t){return t.replace(/\r?\n/g,"<br>")},_=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+P.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=y.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:y.map(a,function(t){return o+t+i}).join("")},D=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},T=function(t,e,n){return e?_(t,e,n):w(t)},C=tinymce.util.Tools.resolve("tinymce.html.DomParser"),k=tinymce.util.Tools.resolve("tinymce.html.Node"),S=tinymce.util.Tools.resolve("tinymce.html.Schema"),O=tinymce.util.Tools.resolve("tinymce.html.Serializer");function R(e,t){return y.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var F={filter:R,innerText:function(e){var n=S(),r=C({},n),o="",i=n.getShortEndedElements(),a=y.makeMap("script noscript style textarea video audio iframe object"," "),s=n.getBlockElements();return e=R(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);s[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=R(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==navigator.userAgent.indexOf(" Edge/")}};function E(e){var n,t;return t=[/^[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 ]+/,""),y.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function A(t){var i,a,s=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function u(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!u(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||s;o!==s&&(o<s?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new k(n,1),1<r&&i.attr("start",""+r),e.wrap(i)),e.name="li",s<o&&a&&a.lastChild.append(i),s=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),u(e,/^\u00a0+/),u(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),u(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var l=0;l<r.length;l++)if("p"===(t=r[l]).name&&t.firstChild){var c=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)){e(t,"ul");continue}if(E(c)){var f=/([0-9]+)\./.exec(c),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function I(n,r,o,i){var a,s={},t=n.dom.parseStyle(i);return y.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(s[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===m.getRetainStyleProps(n)||r&&r[e])&&(s[e]=t):o.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],o.wrap(new k("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],o.wrap(new k("i",1))),(s=n.dom.serializeStyle(s,o.name))||null}var M,B,H,j,L,N={preProcess:function(t,e){return m.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=m.getRetainStyleProps(r))&&(o=y.makeMap(e.split(/[, ]/))),t=F.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(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=m.getWordValidElements(r),i=S({valid_elements:n,valid_children:"-li[p]"});y.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=C({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",I(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var s=a.parse(t);return m.shouldConvertWordFakeLists(r)&&A(s),t=O({validate:r.settings.validate},i).serialize(s)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},$=function(t,e){return{content:t,cancelled:e}},W=function(t,e,n,r){var o,i,a,s,u,l,c=f(t,e,n,r);return t.hasEventListeners("PastePostProcess")&&!c.isDefaultPrevented()?(o=t,i=c.content,a=n,s=r,u=o.dom.create("div",{style:"display:none"},i),l=d(o,u,a,s),$(l.node.innerHTML,l.isDefaultPrevented())):$(c.content,c.isDefaultPrevented())},z=function(t,e,n){var r=N.isWordContent(e),o=r?N.preProcess(t,e):e;return W(t,o,n,r)},U=function(t,e){var n,r;return t.insertContent((n=e,r=t.dom.create("body",{},n),y.each(r.querySelectorAll("meta"),function(t){return t.parentNode.removeChild(t)}),r.innerHTML),{merge:m.shouldMergeFormats(t),paste:!0}),!0},V=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},q=function(t){return V(t)&&/.(gif|jpe?g|png)$/.test(t)},K=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!V(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},G=function(t,e,n){return!!q(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},X=function(t,e){var n,r;!1===m.isSmartPasteEnabled(t)?U(t,e):(n=t,r=e,y.each([K,G,U],function(t){return!0!==t(n,r,U)}))},Y=function(t){return function(){return t}},Z=Y(!1),J=Y(!0),Q=Z,tt=J,et=function(){return nt},nt=(j={fold:function(t,e){return t()},is:Q,isSome:Q,isNone:tt,getOr:H=function(t){return t},getOrThunk:B=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:H,orThunk:B,map:et,ap:et,each:function(){},bind:et,flatten:et,exists:Q,forall:tt,filter:et,equals:M=function(t){return t.isNone()},equals_:M,toArray:function(){return[]},toString:Y("none()")},Object.freeze&&Object.freeze(j),j),rt=function(n){var t=function(){return n},e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:tt,isNone:Q,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return rt(t(n))},ap:function(t){return t.fold(et,function(t){return rt(t(n))})},each:function(t){t(n)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(n)?o:nt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(Q,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},ot={some:rt,none:et,from:function(t){return null===t||t===undefined?nt:rt(t)}},it=(L="function",function(t){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}(t)===L}),at=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o,t)}return r},st=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n,t)},ut=Array.prototype.slice,lt=it(Array.from)?Array.from:function(t){return ut.call(t)},ct=function(t){var n=ot.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){st(t,a)},a=function(e){n.each(function(t){setTimeout(function(){e(t)},0)})};return t(function(t){n=ot.some(t),i(e),e=[]}),{get:r,map:function(n){return ct(function(e){r(function(t){e(n(t))})})},isReady:o}},ft={nu:ct,pure:function(e){return ct(function(t){t(e)})}},dt=function(e){var t=function(t){var r;e((r=t,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this;setTimeout(function(){r.apply(n,t)},0)}))},n=function(){return ft.nu(t)};return{map:function(r){return dt(function(n){t(function(t){var e=r(t);n(e)})})},bind:function(n){return dt(function(e){t(function(t){n(t).get(e)})})},anonBind:function(n){return dt(function(e){t(function(t){n.get(e)})})},toLazy:n,toCached:function(){var e=null;return dt(function(t){null===e&&(e=n()),e.get(t)})},get:t}},mt={nu:dt,pure:function(e){return dt(function(t){t(e)})}},gt=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):st(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},pt=function(t,e){var n=at(t,e);return gt(n,mt.nu)},vt=function(t,e,n){var r=n||b(e),o=z(t,p(e),r);!1===o.cancelled&&X(t,o.content)},ht=function(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=T(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),vt(t,e,!1)},yt=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},bt=function(t,e){return e in t&&0<t[e].length},xt=function(t){return bt(t,"text/html")||bt(t,"text/plain")},Pt=F.createIdGenerator("mceclip"),wt=function(e,t,n){var r,o,i,a,s="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&s){var u=(i=(o=s).items?at(lt(o.items),function(t){return t.getAsFile()}):[],a=o.files?lt(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r,t)&&n.push(i)}return n}(0<i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<u.length)return t.preventDefault(),(r=u,pt(r,function(r){return mt.nu(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),st(t,function(t){!function(t,e){var n,r,o,i,a,s,u,l=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),c=Pt(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):c,d=new Image;if(d.src=e.uri,s=t.settings,u=d,!s.images_dataimg_filter||s.images_dataimg_filter(u)){var m,g=t.editorUpload.blobCache,p=void 0;(m=g.findFirst(function(t){return t.base64()===l}))?p=m:(p=g.create(c,e.blob,l,f),g.add(p)),vt(t,'<img src="'+p.blobUri()+'">',!1)}else vt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1},_t=function(t){return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Dt=function(c,f,d){var m,g=0;function p(t,e,n,r){var o,i;bt(t,"text/html")?o=t["text/html"]:(o=f.getHtml(),r=r||b(o),f.isDefaultContent(o)&&(n=!0)),o=F.trimHtml(o),f.remove(),i=!1===r&&D(o),o.length&&!i||(n=!0),n&&(o=bt(t,"text/plain")&&i?t["text/plain"]:F.innerText(o)),f.isDefaultContent(o)?e||c.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?ht(c,o):vt(c,o,r)}c.on("keydown",function(t){function e(t){_t(t)&&!t.isDefaultPrevented()&&f.remove()}if(_t(t)&&!t.isDefaultPrevented()){if((m=t.shiftKey&&86===t.keyCode)&&v.webkit&&-1!==navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),g=(new Date).getTime(),v.ie&&m)return t.preventDefault(),void n(c,!0);f.remove(),f.create(),c.once("keyup",e),c.once("paste",function(){c.off("keyup",e)})}}),c.on("paste",function(t){var e,n,r,o=(new Date).getTime(),i=(e=c,n=yt(t.clipboardData||e.getDoc().dataTransfer),F.isMsEdge()?y.extend(n,{"text/html":""}):n),a=(new Date).getTime()-o,s=(new Date).getTime()-g-a<1e3,u="text"===d.get()||m,l=bt(i,x());m=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?f.remove():xt(i)||!wt(c,t,f.getLastRng()||c.selection.getRng())?(s||t.preventDefault(),!v.ie||s&&!t.ieFake||bt(i,"text/html")||(f.create(),c.dom.bind(f.getEl(),"paste",function(t){t.stopPropagation()}),c.getDoc().execCommand("Paste",!1,null),i["text/html"]=f.getHtml()),bt(i,"text/html")?(t.preventDefault(),l||(l=b(i["text/html"])),p(i,s,u,l)):h.setEditorTimeout(c,function(){p(i,s,u,l)},0)):f.remove()})},Tt=function(t){return v.ie&&t.inline?document.body:t.getBody()},Ct=function(e,t,n){var r;Tt(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Ot(e,n)||e.fire("paste")})},kt=function(t){return t.dom.get("mcepastebin")},St=function(t,e){return e===t},Ot=function(t,e){var n,r=kt(t);return(n=r)&&"mcepastebin"===n.id&&St(e,r.innerHTML)},Rt=function(a){var s=l(null),u="%MCEPASTEBIN%";return{create:function(){return e=s,n=u,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(Tt(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(v.ie||v.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),Ct(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(kt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,s)},getEl:function(){return kt(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=y.grep(Tt(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),y.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return s.get()},isDefault:function(){return Ot(a,u)},isDefaultContent:function(t){return St(u,t)}}},Ft=function(n,t){var e=Rt(n);return n.on("preInit",function(){return Dt(a=n,e,t),void a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||s===v.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(s=t[i].attributes.map.src)&&(0===s.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==s.indexOf("data:")||o(t[i]))});var a,s}),{pasteFormat:t,pasteHtml:function(t,e){return vt(n,t,e)},pasteText:function(t){return ht(n,t)},pasteImageData:function(t,e){return wt(n,t,e)},getDataTransferItems:yt,hasHtmlOrText:xt,hasContentType:bt}},Et=function(){},At=function(t,e,n){if(r=t,!1!==v.iOS||r===undefined||"function"!=typeof r.setData||!0===F.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(x(),e),!0}catch(o){return!1}var r},It=function(t,e,n,r){At(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)},Mt=function(s){return function(t,e){var n=g(t),r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),s.dom.add(s.getBody(),r);var i=s.selection.getRng();o.focus();var a=s.dom.createRng();a.selectNodeContents(o),s.selection.setRng(a),setTimeout(function(){s.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},Bt=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},Ht=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},jt=function(t){var e,n;t.on("cut",(e=t,function(t){Ht(e)&&It(t,Bt(e),Mt(e),function(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){Ht(n)&&It(t,Bt(n),Mt(n),Et)}))},Lt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Nt=function(t,e){return Lt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},$t=function(t,e){t.focus(),t.selection.setRng(e)},Wt=function(a,s,u){m.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),m.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=Nt(a,t),!t.isDefaultPrevented()&&!u.get()){e=s.getDataTransferItems(t.dataTransfer);var r,o=s.hasContentType(e,x());if((s.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!s.pasteImageData(t,n))&&n&&m.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),h.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),$t(a,n),i=F.trimHtml(i),e["text/html"]?s.pasteHtml(i,o):s.pasteText(i)})}))}}}),a.on("dragstart",function(t){u.set(!0)}),a.on("dragover dragend",function(t){m.shouldPasteDataImages(a)&&!1===u.get()&&(t.preventDefault(),$t(a,Nt(a,t))),"dragend"===t.type&&u.set(!1)})},zt=function(t){var e=t.plugins.paste,n=m.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=m.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Ut(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function Vt(t,e){if(!N.isWordContent(e))return e;var n=[];y.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=F.filter(e,[[r,"$1"]]),e=F.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function qt(t,e,n,r){if(r||n)return e;var l,o=m.getWebkitStyles(t);if(!1===m.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(l=o.split(/[, ]/)),l){var c=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=c.parseStyle(c.decode(n)),i={};if("none"===l)return e+r;for(var a=0;a<l.length;a++){var s=o[l[a]],u=c.getStyle(f,l[a],!0);/color/.test(l[a])&&(s=c.toHex(s),u=c.toHex(u)),u!==s&&(i[l[a]]=s)}return(i=c.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function Kt(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var Gt=function(t){var e,n;v.webkit&&Ut(t,qt),v.ie&&(Ut(t,Vt),n=Kt,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},Xt=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},Yt=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(Xt,t,e);t.addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=l(!1),n=l(!1),r=l(m.isPasteAsTextEnabled(t)?"text":"html"),o=Ft(t,r),i=Gt(t);return Yt(t,o),c(t,o,e),zt(t),jt(t),Wt(t,o,n),s(o,i)}})}();
\ No newline at end of file
Index: src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/tabfocus/plugin.js	(working copy)
@@ -1,124 +1,124 @@
 (function () {
 var tabfocus = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.EditorManager');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.EditorManager');
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.Env');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.Env');
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay');
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.util.VK');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.util.VK');
 
-  var getTabFocusElements = function (editor) {
-    return editor.getParam('tabfocus_elements', ':prev,:next');
-  };
-  var getTabFocus = function (editor) {
-    return editor.getParam('tab_focus', getTabFocusElements(editor));
-  };
-  var $_8rita4kwjjgwed4m = { getTabFocus: getTabFocus };
+    var getTabFocusElements = function (editor) {
+      return editor.getParam('tabfocus_elements', ':prev,:next');
+    };
+    var getTabFocus = function (editor) {
+      return editor.getParam('tab_focus', getTabFocusElements(editor));
+    };
+    var Settings = { getTabFocus: getTabFocus };
 
-  var DOM = global$1.DOM;
-  var tabCancel = function (e) {
-    if (e.keyCode === global$6.TAB && !e.ctrlKey && !e.altKey && !e.metaKey) {
-      e.preventDefault();
-    }
-  };
-  var setup = function (editor) {
-    function tabHandler(e) {
-      var x, el, v, i;
-      if (e.keyCode !== global$6.TAB || e.ctrlKey || e.altKey || e.metaKey || e.isDefaultPrevented()) {
-        return;
+    var DOM = global$1.DOM;
+    var tabCancel = function (e) {
+      if (e.keyCode === global$6.TAB && !e.ctrlKey && !e.altKey && !e.metaKey) {
+        e.preventDefault();
       }
-      function find(direction) {
-        el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
-        function canSelectRecursive(e) {
-          return e.nodeName === 'BODY' || e.type !== 'hidden' && e.style.display !== 'none' && e.style.visibility !== 'hidden' && canSelectRecursive(e.parentNode);
+    };
+    var setup = function (editor) {
+      function tabHandler(e) {
+        var x, el, v, i;
+        if (e.keyCode !== global$6.TAB || e.ctrlKey || e.altKey || e.metaKey || e.isDefaultPrevented()) {
+          return;
         }
-        function canSelect(el) {
-          return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && global$2.get(e.id) && el.tabIndex !== -1 && canSelectRecursive(el);
-        }
-        global$5.each(el, function (e, i) {
-          if (e.id === editor.id) {
-            x = i;
-            return false;
+        function find(direction) {
+          el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
+          function canSelectRecursive(e) {
+            return e.nodeName === 'BODY' || e.type !== 'hidden' && e.style.display !== 'none' && e.style.visibility !== 'hidden' && canSelectRecursive(e.parentNode);
           }
-        });
-        if (direction > 0) {
-          for (i = x + 1; i < el.length; i++) {
-            if (canSelect(el[i])) {
-              return el[i];
-            }
+          function canSelect(el) {
+            return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && global$2.get(e.id) && el.tabIndex !== -1 && canSelectRecursive(el);
           }
-        } else {
-          for (i = x - 1; i >= 0; i--) {
-            if (canSelect(el[i])) {
-              return el[i];
+          global$5.each(el, function (e, i) {
+            if (e.id === editor.id) {
+              x = i;
+              return false;
             }
+          });
+          if (direction > 0) {
+            for (i = x + 1; i < el.length; i++) {
+              if (canSelect(el[i])) {
+                return el[i];
+              }
+            }
+          } else {
+            for (i = x - 1; i >= 0; i--) {
+              if (canSelect(el[i])) {
+                return el[i];
+              }
+            }
           }
+          return null;
         }
-        return null;
-      }
-      v = global$5.explode($_8rita4kwjjgwed4m.getTabFocus(editor));
-      if (v.length === 1) {
-        v[1] = v[0];
-        v[0] = ':prev';
-      }
-      if (e.shiftKey) {
-        if (v[0] === ':prev') {
-          el = find(-1);
-        } else {
-          el = DOM.get(v[0]);
+        v = global$5.explode(Settings.getTabFocus(editor));
+        if (v.length === 1) {
+          v[1] = v[0];
+          v[0] = ':prev';
         }
-      } else {
-        if (v[1] === ':next') {
-          el = find(1);
+        if (e.shiftKey) {
+          if (v[0] === ':prev') {
+            el = find(-1);
+          } else {
+            el = DOM.get(v[0]);
+          }
         } else {
-          el = DOM.get(v[1]);
+          if (v[1] === ':next') {
+            el = find(1);
+          } else {
+            el = DOM.get(v[1]);
+          }
         }
+        if (el) {
+          var focusEditor = global$2.get(el.id || el.name);
+          if (el.id && focusEditor) {
+            focusEditor.focus();
+          } else {
+            global$4.setTimeout(function () {
+              if (!global$3.webkit) {
+                window.focus();
+              }
+              el.focus();
+            }, 10);
+          }
+          e.preventDefault();
+        }
       }
-      if (el) {
-        var focusEditor = global$2.get(el.id || el.name);
-        if (el.id && focusEditor) {
-          focusEditor.focus();
+      editor.on('init', function () {
+        if (editor.inline) {
+          DOM.setAttrib(editor.getBody(), 'tabIndex', null);
+        }
+        editor.on('keyup', tabCancel);
+        if (global$3.gecko) {
+          editor.on('keypress keydown', tabHandler);
         } else {
-          global$4.setTimeout(function () {
-            if (!global$3.webkit) {
-              window.focus();
-            }
-            el.focus();
-          }, 10);
+          editor.on('keydown', tabHandler);
         }
-        e.preventDefault();
-      }
+      });
+    };
+    var Keyboard = { setup: setup };
+
+    global.add('tabfocus', function (editor) {
+      Keyboard.setup(editor);
+    });
+    function Plugin () {
     }
-    editor.on('init', function () {
-      if (editor.inline) {
-        DOM.setAttrib(editor.getBody(), 'tabIndex', null);
-      }
-      editor.on('keyup', tabCancel);
-      if (global$3.gecko) {
-        editor.on('keypress keydown', tabHandler);
-      } else {
-        editor.on('keydown', tabHandler);
-      }
-    });
-  };
-  var $_6zogdykpjjgwed4h = { setup: setup };
 
-  global.add('tabfocus', function (editor) {
-    $_6zogdykpjjgwed4h.setup(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/textcolor/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/textcolor/plugin.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/textcolor/plugin.js	(working copy)
@@ -1,346 +1,346 @@
 (function () {
 var textcolor = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-  var getCurrentColor = function (editor, format) {
-    var color;
-    editor.dom.getParents(editor.selection.getStart(), function (elm) {
-      var value;
-      if (value = elm.style[format === 'forecolor' ? 'color' : 'background-color']) {
-        color = value;
+    var getCurrentColor = function (editor, format) {
+      var color;
+      editor.dom.getParents(editor.selection.getStart(), function (elm) {
+        var value;
+        if (value = elm.style[format === 'forecolor' ? 'color' : 'background-color']) {
+          color = color ? color : value;
+        }
+      });
+      return color;
+    };
+    var mapColors = function (colorMap) {
+      var i;
+      var colors = [];
+      for (i = 0; i < colorMap.length; i += 2) {
+        colors.push({
+          text: colorMap[i + 1],
+          color: '#' + colorMap[i]
+        });
       }
-    });
-    return color;
-  };
-  var mapColors = function (colorMap) {
-    var i;
-    var colors = [];
-    for (i = 0; i < colorMap.length; i += 2) {
-      colors.push({
-        text: colorMap[i + 1],
-        color: '#' + colorMap[i]
+      return colors;
+    };
+    var applyFormat = function (editor, format, value) {
+      editor.undoManager.transact(function () {
+        editor.focus();
+        editor.formatter.apply(format, { value: value });
+        editor.nodeChanged();
       });
-    }
-    return colors;
-  };
-  var applyFormat = function (editor, format, value) {
-    editor.undoManager.transact(function () {
-      editor.focus();
-      editor.formatter.apply(format, { value: value });
-      editor.nodeChanged();
-    });
-  };
-  var removeFormat = function (editor, format) {
-    editor.undoManager.transact(function () {
-      editor.focus();
-      editor.formatter.remove(format, { value: null }, null, true);
-      editor.nodeChanged();
-    });
-  };
-  var $_b0p88yrijjgwefd2 = {
-    getCurrentColor: getCurrentColor,
-    mapColors: mapColors,
-    applyFormat: applyFormat,
-    removeFormat: removeFormat
-  };
+    };
+    var removeFormat = function (editor, format) {
+      editor.undoManager.transact(function () {
+        editor.focus();
+        editor.formatter.remove(format, { value: null }, null, true);
+        editor.nodeChanged();
+      });
+    };
+    var TextColor = {
+      getCurrentColor: getCurrentColor,
+      mapColors: mapColors,
+      applyFormat: applyFormat,
+      removeFormat: removeFormat
+    };
 
-  var register = function (editor) {
-    editor.addCommand('mceApplyTextcolor', function (format, value) {
-      $_b0p88yrijjgwefd2.applyFormat(editor, format, value);
-    });
-    editor.addCommand('mceRemoveTextcolor', function (format) {
-      $_b0p88yrijjgwefd2.removeFormat(editor, format);
-    });
-  };
-  var $_g2o2pirhjjgwefd1 = { register: register };
+    var register = function (editor) {
+      editor.addCommand('mceApplyTextcolor', function (format, value) {
+        TextColor.applyFormat(editor, format, value);
+      });
+      editor.addCommand('mceRemoveTextcolor', function (format) {
+        TextColor.removeFormat(editor, format);
+      });
+    };
+    var Commands = { register: register };
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var defaultColorMap = [
-    '000000',
-    'Black',
-    '993300',
-    'Burnt orange',
-    '333300',
-    'Dark olive',
-    '003300',
-    'Dark green',
-    '003366',
-    'Dark azure',
-    '000080',
-    'Navy Blue',
-    '333399',
-    'Indigo',
-    '333333',
-    'Very dark gray',
-    '800000',
-    'Maroon',
-    'FF6600',
-    'Orange',
-    '808000',
-    'Olive',
-    '008000',
-    'Green',
-    '008080',
-    'Teal',
-    '0000FF',
-    'Blue',
-    '666699',
-    'Grayish blue',
-    '808080',
-    'Gray',
-    'FF0000',
-    'Red',
-    'FF9900',
-    'Amber',
-    '99CC00',
-    'Yellow green',
-    '339966',
-    'Sea green',
-    '33CCCC',
-    'Turquoise',
-    '3366FF',
-    'Royal blue',
-    '800080',
-    'Purple',
-    '999999',
-    'Medium gray',
-    'FF00FF',
-    'Magenta',
-    'FFCC00',
-    'Gold',
-    'FFFF00',
-    'Yellow',
-    '00FF00',
-    'Lime',
-    '00FFFF',
-    'Aqua',
-    '00CCFF',
-    'Sky blue',
-    '993366',
-    'Red violet',
-    'FFFFFF',
-    'White',
-    'FF99CC',
-    'Pink',
-    'FFCC99',
-    'Peach',
-    'FFFF99',
-    'Light yellow',
-    'CCFFCC',
-    'Pale green',
-    'CCFFFF',
-    'Pale cyan',
-    '99CCFF',
-    'Light sky blue',
-    'CC99FF',
-    'Plum'
-  ];
-  var getTextColorMap = function (editor) {
-    return editor.getParam('textcolor_map', defaultColorMap);
-  };
-  var getForeColorMap = function (editor) {
-    return editor.getParam('forecolor_map', getTextColorMap(editor));
-  };
-  var getBackColorMap = function (editor) {
-    return editor.getParam('backcolor_map', getTextColorMap(editor));
-  };
-  var getTextColorRows = function (editor) {
-    return editor.getParam('textcolor_rows', 5);
-  };
-  var getTextColorCols = function (editor) {
-    return editor.getParam('textcolor_cols', 8);
-  };
-  var getForeColorRows = function (editor) {
-    return editor.getParam('forecolor_rows', getTextColorRows(editor));
-  };
-  var getBackColorRows = function (editor) {
-    return editor.getParam('backcolor_rows', getTextColorRows(editor));
-  };
-  var getForeColorCols = function (editor) {
-    return editor.getParam('forecolor_cols', getTextColorCols(editor));
-  };
-  var getBackColorCols = function (editor) {
-    return editor.getParam('backcolor_cols', getTextColorCols(editor));
-  };
-  var getColorPickerCallback = function (editor) {
-    return editor.getParam('color_picker_callback', null);
-  };
-  var hasColorPicker = function (editor) {
-    return typeof getColorPickerCallback(editor) === 'function';
-  };
-  var $_2rfqb7rmjjgwefd9 = {
-    getForeColorMap: getForeColorMap,
-    getBackColorMap: getBackColorMap,
-    getForeColorRows: getForeColorRows,
-    getBackColorRows: getBackColorRows,
-    getForeColorCols: getForeColorCols,
-    getBackColorCols: getBackColorCols,
-    getColorPickerCallback: getColorPickerCallback,
-    hasColorPicker: hasColorPicker
-  };
+    var defaultColorMap = [
+      '000000',
+      'Black',
+      '993300',
+      'Burnt orange',
+      '333300',
+      'Dark olive',
+      '003300',
+      'Dark green',
+      '003366',
+      'Dark azure',
+      '000080',
+      'Navy Blue',
+      '333399',
+      'Indigo',
+      '333333',
+      'Very dark gray',
+      '800000',
+      'Maroon',
+      'FF6600',
+      'Orange',
+      '808000',
+      'Olive',
+      '008000',
+      'Green',
+      '008080',
+      'Teal',
+      '0000FF',
+      'Blue',
+      '666699',
+      'Grayish blue',
+      '808080',
+      'Gray',
+      'FF0000',
+      'Red',
+      'FF9900',
+      'Amber',
+      '99CC00',
+      'Yellow green',
+      '339966',
+      'Sea green',
+      '33CCCC',
+      'Turquoise',
+      '3366FF',
+      'Royal blue',
+      '800080',
+      'Purple',
+      '999999',
+      'Medium gray',
+      'FF00FF',
+      'Magenta',
+      'FFCC00',
+      'Gold',
+      'FFFF00',
+      'Yellow',
+      '00FF00',
+      'Lime',
+      '00FFFF',
+      'Aqua',
+      '00CCFF',
+      'Sky blue',
+      '993366',
+      'Red violet',
+      'FFFFFF',
+      'White',
+      'FF99CC',
+      'Pink',
+      'FFCC99',
+      'Peach',
+      'FFFF99',
+      'Light yellow',
+      'CCFFCC',
+      'Pale green',
+      'CCFFFF',
+      'Pale cyan',
+      '99CCFF',
+      'Light sky blue',
+      'CC99FF',
+      'Plum'
+    ];
+    var getTextColorMap = function (editor) {
+      return editor.getParam('textcolor_map', defaultColorMap);
+    };
+    var getForeColorMap = function (editor) {
+      return editor.getParam('forecolor_map', getTextColorMap(editor));
+    };
+    var getBackColorMap = function (editor) {
+      return editor.getParam('backcolor_map', getTextColorMap(editor));
+    };
+    var getTextColorRows = function (editor) {
+      return editor.getParam('textcolor_rows', 5);
+    };
+    var getTextColorCols = function (editor) {
+      return editor.getParam('textcolor_cols', 8);
+    };
+    var getForeColorRows = function (editor) {
+      return editor.getParam('forecolor_rows', getTextColorRows(editor));
+    };
+    var getBackColorRows = function (editor) {
+      return editor.getParam('backcolor_rows', getTextColorRows(editor));
+    };
+    var getForeColorCols = function (editor) {
+      return editor.getParam('forecolor_cols', getTextColorCols(editor));
+    };
+    var getBackColorCols = function (editor) {
+      return editor.getParam('backcolor_cols', getTextColorCols(editor));
+    };
+    var getColorPickerCallback = function (editor) {
+      return editor.getParam('color_picker_callback', null);
+    };
+    var hasColorPicker = function (editor) {
+      return typeof getColorPickerCallback(editor) === 'function';
+    };
+    var Settings = {
+      getForeColorMap: getForeColorMap,
+      getBackColorMap: getBackColorMap,
+      getForeColorRows: getForeColorRows,
+      getBackColorRows: getBackColorRows,
+      getForeColorCols: getForeColorCols,
+      getBackColorCols: getBackColorCols,
+      getColorPickerCallback: getColorPickerCallback,
+      hasColorPicker: hasColorPicker
+    };
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.util.I18n');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.util.I18n');
 
-  var getHtml = function (cols, rows, colorMap, hasColorPicker) {
-    var colors, color, html, last, x, y, i, count = 0;
-    var id = global$1.DOM.uniqueId('mcearia');
-    var getColorCellHtml = function (color, title) {
-      var isNoColor = color === 'transparent';
-      return '<td class="mce-grid-cell' + (isNoColor ? ' mce-colorbtn-trans' : '') + '">' + '<div id="' + id + '-' + count++ + '"' + ' data-mce-color="' + (color ? color : '') + '"' + ' role="option"' + ' tabIndex="-1"' + ' style="' + (color ? 'background-color: ' + color : '') + '"' + ' title="' + global$3.translate(title) + '">' + (isNoColor ? '&#215;' : '') + '</div>' + '</td>';
-    };
-    colors = $_b0p88yrijjgwefd2.mapColors(colorMap);
-    colors.push({
-      text: global$3.translate('No color'),
-      color: 'transparent'
-    });
-    html = '<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>';
-    last = colors.length - 1;
-    for (y = 0; y < rows; y++) {
-      html += '<tr>';
-      for (x = 0; x < cols; x++) {
-        i = y * cols + x;
-        if (i > last) {
-          html += '<td></td>';
-        } else {
-          color = colors[i];
-          html += getColorCellHtml(color.color, color.text);
+    var getHtml = function (cols, rows, colorMap, hasColorPicker) {
+      var colors, color, html, last, x, y, i, count = 0;
+      var id = global$1.DOM.uniqueId('mcearia');
+      var getColorCellHtml = function (color, title) {
+        var isNoColor = color === 'transparent';
+        return '<td class="mce-grid-cell' + (isNoColor ? ' mce-colorbtn-trans' : '') + '">' + '<div id="' + id + '-' + count++ + '"' + ' data-mce-color="' + (color ? color : '') + '"' + ' role="option"' + ' tabIndex="-1"' + ' style="' + (color ? 'background-color: ' + color : '') + '"' + ' title="' + global$3.translate(title) + '">' + (isNoColor ? '&#215;' : '') + '</div>' + '</td>';
+      };
+      colors = TextColor.mapColors(colorMap);
+      colors.push({
+        text: global$3.translate('No color'),
+        color: 'transparent'
+      });
+      html = '<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>';
+      last = colors.length - 1;
+      for (y = 0; y < rows; y++) {
+        html += '<tr>';
+        for (x = 0; x < cols; x++) {
+          i = y * cols + x;
+          if (i > last) {
+            html += '<td></td>';
+          } else {
+            color = colors[i];
+            html += getColorCellHtml(color.color, color.text);
+          }
         }
+        html += '</tr>';
       }
-      html += '</tr>';
-    }
-    if (hasColorPicker) {
-      html += '<tr>' + '<td colspan="' + cols + '" class="mce-custom-color-btn">' + '<div id="' + id + '-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" ' + 'role="button" tabindex="-1" aria-labelledby="' + id + '-c" style="width: 100%">' + '<button type="button" role="presentation" tabindex="-1">' + global$3.translate('Custom...') + '</button>' + '</div>' + '</td>' + '</tr>';
-      html += '<tr>';
-      for (x = 0; x < cols; x++) {
-        html += getColorCellHtml('', 'Custom color');
+      if (hasColorPicker) {
+        html += '<tr>' + '<td colspan="' + cols + '" class="mce-custom-color-btn">' + '<div id="' + id + '-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" ' + 'role="button" tabindex="-1" aria-labelledby="' + id + '-c" style="width: 100%">' + '<button type="button" role="presentation" tabindex="-1">' + global$3.translate('Custom...') + '</button>' + '</div>' + '</td>' + '</tr>';
+        html += '<tr>';
+        for (x = 0; x < cols; x++) {
+          html += getColorCellHtml('', 'Custom color');
+        }
+        html += '</tr>';
       }
-      html += '</tr>';
-    }
-    html += '</tbody></table>';
-    return html;
-  };
-  var $_fihh7qrnjjgwefdb = { getHtml: getHtml };
+      html += '</tbody></table>';
+      return html;
+    };
+    var ColorPickerHtml = { getHtml: getHtml };
 
-  var setDivColor = function setDivColor(div, value) {
-    div.style.background = value;
-    div.setAttribute('data-mce-color', value);
-  };
-  var onButtonClick = function (editor) {
-    return function (e) {
-      var ctrl = e.control;
-      if (ctrl._color) {
-        editor.execCommand('mceApplyTextcolor', ctrl.settings.format, ctrl._color);
-      } else {
-        editor.execCommand('mceRemoveTextcolor', ctrl.settings.format);
-      }
+    var setDivColor = function setDivColor(div, value) {
+      div.style.background = value;
+      div.setAttribute('data-mce-color', value);
     };
-  };
-  var onPanelClick = function (editor, cols) {
-    return function (e) {
-      var buttonCtrl = this.parent();
-      var value;
-      var currentColor = $_b0p88yrijjgwefd2.getCurrentColor(editor, buttonCtrl.settings.format);
-      var selectColor = function (value) {
-        editor.execCommand('mceApplyTextcolor', buttonCtrl.settings.format, value);
-        buttonCtrl.hidePanel();
-        buttonCtrl.color(value);
+    var onButtonClick = function (editor) {
+      return function (e) {
+        var ctrl = e.control;
+        if (ctrl._color) {
+          editor.execCommand('mceApplyTextcolor', ctrl.settings.format, ctrl._color);
+        } else {
+          editor.execCommand('mceRemoveTextcolor', ctrl.settings.format);
+        }
       };
-      var resetColor = function () {
-        editor.execCommand('mceRemoveTextcolor', buttonCtrl.settings.format);
-        buttonCtrl.hidePanel();
-        buttonCtrl.resetColor();
-      };
-      if (global$1.DOM.getParent(e.target, '.mce-custom-color-btn')) {
-        buttonCtrl.hidePanel();
-        var colorPickerCallback = $_2rfqb7rmjjgwefd9.getColorPickerCallback(editor);
-        colorPickerCallback.call(editor, function (value) {
-          var tableElm = buttonCtrl.panel.getEl().getElementsByTagName('table')[0];
-          var customColorCells, div, i;
-          customColorCells = global$2.map(tableElm.rows[tableElm.rows.length - 1].childNodes, function (elm) {
-            return elm.firstChild;
-          });
-          for (i = 0; i < customColorCells.length; i++) {
-            div = customColorCells[i];
-            if (!div.getAttribute('data-mce-color')) {
-              break;
+    };
+    var onPanelClick = function (editor, cols) {
+      return function (e) {
+        var buttonCtrl = this.parent();
+        var value;
+        var currentColor = TextColor.getCurrentColor(editor, buttonCtrl.settings.format);
+        var selectColor = function (value) {
+          editor.execCommand('mceApplyTextcolor', buttonCtrl.settings.format, value);
+          buttonCtrl.hidePanel();
+          buttonCtrl.color(value);
+        };
+        var resetColor = function () {
+          editor.execCommand('mceRemoveTextcolor', buttonCtrl.settings.format);
+          buttonCtrl.hidePanel();
+          buttonCtrl.resetColor();
+        };
+        if (global$1.DOM.getParent(e.target, '.mce-custom-color-btn')) {
+          buttonCtrl.hidePanel();
+          var colorPickerCallback = Settings.getColorPickerCallback(editor);
+          colorPickerCallback.call(editor, function (value) {
+            var tableElm = buttonCtrl.panel.getEl().getElementsByTagName('table')[0];
+            var customColorCells, div, i;
+            customColorCells = global$2.map(tableElm.rows[tableElm.rows.length - 1].childNodes, function (elm) {
+              return elm.firstChild;
+            });
+            for (i = 0; i < customColorCells.length; i++) {
+              div = customColorCells[i];
+              if (!div.getAttribute('data-mce-color')) {
+                break;
+              }
             }
-          }
-          if (i === cols) {
-            for (i = 0; i < cols - 1; i++) {
-              setDivColor(customColorCells[i], customColorCells[i + 1].getAttribute('data-mce-color'));
+            if (i === cols) {
+              for (i = 0; i < cols - 1; i++) {
+                setDivColor(customColorCells[i], customColorCells[i + 1].getAttribute('data-mce-color'));
+              }
             }
+            setDivColor(div, value);
+            selectColor(value);
+          }, currentColor);
+        }
+        value = e.target.getAttribute('data-mce-color');
+        if (value) {
+          if (this.lastId) {
+            global$1.DOM.get(this.lastId).setAttribute('aria-selected', 'false');
           }
-          setDivColor(div, value);
-          selectColor(value);
-        }, currentColor);
-      }
-      value = e.target.getAttribute('data-mce-color');
-      if (value) {
-        if (this.lastId) {
-          global$1.DOM.get(this.lastId).setAttribute('aria-selected', 'false');
+          e.target.setAttribute('aria-selected', true);
+          this.lastId = e.target.id;
+          if (value === 'transparent') {
+            resetColor();
+          } else {
+            selectColor(value);
+          }
+        } else if (value !== null) {
+          buttonCtrl.hidePanel();
         }
-        e.target.setAttribute('aria-selected', true);
-        this.lastId = e.target.id;
-        if (value === 'transparent') {
-          resetColor();
-        } else {
-          selectColor(value);
-        }
-      } else if (value !== null) {
-        buttonCtrl.hidePanel();
-      }
+      };
     };
-  };
-  var renderColorPicker = function (editor, foreColor) {
-    return function () {
-      var cols = foreColor ? $_2rfqb7rmjjgwefd9.getForeColorCols(editor) : $_2rfqb7rmjjgwefd9.getBackColorCols(editor);
-      var rows = foreColor ? $_2rfqb7rmjjgwefd9.getForeColorRows(editor) : $_2rfqb7rmjjgwefd9.getBackColorRows(editor);
-      var colorMap = foreColor ? $_2rfqb7rmjjgwefd9.getForeColorMap(editor) : $_2rfqb7rmjjgwefd9.getBackColorMap(editor);
-      var hasColorPicker = $_2rfqb7rmjjgwefd9.hasColorPicker(editor);
-      return $_fihh7qrnjjgwefdb.getHtml(cols, rows, colorMap, hasColorPicker);
+    var renderColorPicker = function (editor, foreColor) {
+      return function () {
+        var cols = foreColor ? Settings.getForeColorCols(editor) : Settings.getBackColorCols(editor);
+        var rows = foreColor ? Settings.getForeColorRows(editor) : Settings.getBackColorRows(editor);
+        var colorMap = foreColor ? Settings.getForeColorMap(editor) : Settings.getBackColorMap(editor);
+        var hasColorPicker = Settings.hasColorPicker(editor);
+        return ColorPickerHtml.getHtml(cols, rows, colorMap, hasColorPicker);
+      };
     };
-  };
-  var register$1 = function (editor) {
-    editor.addButton('forecolor', {
-      type: 'colorbutton',
-      tooltip: 'Text color',
-      format: 'forecolor',
-      panel: {
-        role: 'application',
-        ariaRemember: true,
-        html: renderColorPicker(editor, true),
-        onclick: onPanelClick(editor, $_2rfqb7rmjjgwefd9.getForeColorCols(editor))
-      },
-      onclick: onButtonClick(editor)
+    var register$1 = function (editor) {
+      editor.addButton('forecolor', {
+        type: 'colorbutton',
+        tooltip: 'Text color',
+        format: 'forecolor',
+        panel: {
+          role: 'application',
+          ariaRemember: true,
+          html: renderColorPicker(editor, true),
+          onclick: onPanelClick(editor, Settings.getForeColorCols(editor))
+        },
+        onclick: onButtonClick(editor)
+      });
+      editor.addButton('backcolor', {
+        type: 'colorbutton',
+        tooltip: 'Background color',
+        format: 'hilitecolor',
+        panel: {
+          role: 'application',
+          ariaRemember: true,
+          html: renderColorPicker(editor, false),
+          onclick: onPanelClick(editor, Settings.getBackColorCols(editor))
+        },
+        onclick: onButtonClick(editor)
+      });
+    };
+    var Buttons = { register: register$1 };
+
+    global.add('textcolor', function (editor) {
+      Commands.register(editor);
+      Buttons.register(editor);
     });
-    editor.addButton('backcolor', {
-      type: 'colorbutton',
-      tooltip: 'Background color',
-      format: 'hilitecolor',
-      panel: {
-        role: 'application',
-        ariaRemember: true,
-        html: renderColorPicker(editor, false),
-        onclick: onPanelClick(editor, $_2rfqb7rmjjgwefd9.getBackColorCols(editor))
-      },
-      onclick: onButtonClick(editor)
-    });
-  };
-  var $_8npvswrjjjgwefd5 = { register: register$1 };
+    function Plugin () {
+    }
 
-  global.add('textcolor', function (editor) {
-    $_g2o2pirhjjgwefd1.register(editor);
-    $_8npvswrjjjgwefd5.register(editor);
-  });
-  function Plugin () {
-  }
+    return Plugin;
 
-  return Plugin;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/plugins/textcolor/plugin.min.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/textcolor/plugin.min.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/plugins/textcolor/plugin.min.js	(working copy)
@@ -1 +1 @@
-!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t,o){var r;return t.dom.getParents(t.selection.getStart(),function(t){var e;(e=t.style["forecolor"===o?"color":"background-color"])&&(r=e)}),r},g=function(t){var e,o=[];for(e=0;e<t.length;e+=2)o.push({text:t[e+1],color:"#"+t[e]});return o},r=function(t,e,o){t.undoManager.transact(function(){t.focus(),t.formatter.apply(e,{value:o}),t.nodeChanged()})},e=function(t,e){t.undoManager.transact(function(){t.focus(),t.formatter.remove(e,{value:null},null,!0),t.nodeChanged()})},o=function(o){o.addCommand("mceApplyTextcolor",function(t,e){r(o,t,e)}),o.addCommand("mceRemoveTextcolor",function(t){e(o,t)})},F=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],l=function(t){return t.getParam("textcolor_map",a)},c=function(t){return t.getParam("textcolor_rows",5)},u=function(t){return t.getParam("textcolor_cols",8)},m=function(t){return t.getParam("color_picker_callback",null)},s=function(t){return t.getParam("forecolor_map",l(t))},d=function(t){return t.getParam("backcolor_map",l(t))},f=function(t){return t.getParam("forecolor_rows",c(t))},b=function(t){return t.getParam("backcolor_rows",c(t))},p=function(t){return t.getParam("forecolor_cols",u(t))},C=function(t){return t.getParam("backcolor_cols",u(t))},y=m,v=function(t){return"function"==typeof m(t)},h=tinymce.util.Tools.resolve("tinymce.util.I18n"),P=function(t,e,o,r){var n,a,l,c,i,u,m,s=0,d=F.DOM.uniqueId("mcearia"),f=function(t,e){var o="transparent"===t;return'<td class="mce-grid-cell'+(o?" mce-colorbtn-trans":"")+'"><div id="'+d+"-"+s+++'" data-mce-color="'+(t||"")+'" role="option" tabIndex="-1" style="'+(t?"background-color: "+t:"")+'" title="'+h.translate(e)+'">'+(o?"&#215;":"")+"</div></td>"};for((n=g(o)).push({text:h.translate("No color"),color:"transparent"}),l='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',c=n.length-1,u=0;u<e;u++){for(l+="<tr>",i=0;i<t;i++)l+=c<(m=u*t+i)?"<td></td>":f((a=n[m]).color,a.text);l+="</tr>"}if(r){for(l+='<tr><td colspan="'+t+'" class="mce-custom-color-btn"><div id="'+d+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+d+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+h.translate("Custom...")+"</button></div></td></tr>",l+="<tr>",i=0;i<t;i++)l+=f("","Custom color");l+="</tr>"}return l+="</tbody></table>"},k=function(t,e){t.style.background=e,t.setAttribute("data-mce-color",e)},x=function(o){return function(t){var e=t.control;e._color?o.execCommand("mceApplyTextcolor",e.settings.format,e._color):o.execCommand("mceRemoveTextcolor",e.settings.format)}},T=function(r,c){return function(t){var e,a=this.parent(),o=n(r,a.settings.format),l=function(t){r.execCommand("mceApplyTextcolor",a.settings.format,t),a.hidePanel(),a.color(t)};F.DOM.getParent(t.target,".mce-custom-color-btn")&&(a.hidePanel(),y(r).call(r,function(t){var e,o,r,n=a.panel.getEl().getElementsByTagName("table")[0];for(e=i.map(n.rows[n.rows.length-1].childNodes,function(t){return t.firstChild}),r=0;r<e.length&&(o=e[r]).getAttribute("data-mce-color");r++);if(r===c)for(r=0;r<c-1;r++)k(e[r],e[r+1].getAttribute("data-mce-color"));k(o,t),l(t)},o)),(e=t.target.getAttribute("data-mce-color"))?(this.lastId&&F.DOM.get(this.lastId).setAttribute("aria-selected","false"),t.target.setAttribute("aria-selected",!0),this.lastId=t.target.id,"transparent"===e?(r.execCommand("mceRemoveTextcolor",a.settings.format),a.hidePanel(),a.resetColor()):l(e)):null!==e&&a.hidePanel()}},_=function(n,a){return function(){var t=a?p(n):C(n),e=a?f(n):b(n),o=a?s(n):d(n),r=v(n);return P(t,e,o,r)}},A=function(t){t.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!0),onclick:T(t,p(t))},onclick:x(t)}),t.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!1),onclick:T(t,C(t))},onclick:x(t)})};t.add("textcolor",function(t){o(t),A(t)})}();
\ No newline at end of file
+!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t,o){var r;return t.dom.getParents(t.selection.getStart(),function(t){var e;(e=t.style["forecolor"===o?"color":"background-color"])&&(r=r||e)}),r},g=function(t){var e,o=[];for(e=0;e<t.length;e+=2)o.push({text:t[e+1],color:"#"+t[e]});return o},r=function(t,e,o){t.undoManager.transact(function(){t.focus(),t.formatter.apply(e,{value:o}),t.nodeChanged()})},e=function(t,e){t.undoManager.transact(function(){t.focus(),t.formatter.remove(e,{value:null},null,!0),t.nodeChanged()})},o=function(o){o.addCommand("mceApplyTextcolor",function(t,e){r(o,t,e)}),o.addCommand("mceRemoveTextcolor",function(t){e(o,t)})},F=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],l=function(t){return t.getParam("textcolor_map",a)},c=function(t){return t.getParam("textcolor_rows",5)},u=function(t){return t.getParam("textcolor_cols",8)},m=function(t){return t.getParam("color_picker_callback",null)},s=function(t){return t.getParam("forecolor_map",l(t))},d=function(t){return t.getParam("backcolor_map",l(t))},f=function(t){return t.getParam("forecolor_rows",c(t))},b=function(t){return t.getParam("backcolor_rows",c(t))},p=function(t){return t.getParam("forecolor_cols",u(t))},C=function(t){return t.getParam("backcolor_cols",u(t))},y=m,v=function(t){return"function"==typeof m(t)},h=tinymce.util.Tools.resolve("tinymce.util.I18n"),P=function(t,e,o,r){var n,a,l,c,i,u,m,s=0,d=F.DOM.uniqueId("mcearia"),f=function(t,e){var o="transparent"===t;return'<td class="mce-grid-cell'+(o?" mce-colorbtn-trans":"")+'"><div id="'+d+"-"+s+++'" data-mce-color="'+(t||"")+'" role="option" tabIndex="-1" style="'+(t?"background-color: "+t:"")+'" title="'+h.translate(e)+'">'+(o?"&#215;":"")+"</div></td>"};for((n=g(o)).push({text:h.translate("No color"),color:"transparent"}),l='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',c=n.length-1,u=0;u<e;u++){for(l+="<tr>",i=0;i<t;i++)l+=c<(m=u*t+i)?"<td></td>":f((a=n[m]).color,a.text);l+="</tr>"}if(r){for(l+='<tr><td colspan="'+t+'" class="mce-custom-color-btn"><div id="'+d+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+d+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+h.translate("Custom...")+"</button></div></td></tr>",l+="<tr>",i=0;i<t;i++)l+=f("","Custom color");l+="</tr>"}return l+="</tbody></table>"},k=function(t,e){t.style.background=e,t.setAttribute("data-mce-color",e)},x=function(o){return function(t){var e=t.control;e._color?o.execCommand("mceApplyTextcolor",e.settings.format,e._color):o.execCommand("mceRemoveTextcolor",e.settings.format)}},T=function(r,c){return function(t){var e,a=this.parent(),o=n(r,a.settings.format),l=function(t){r.execCommand("mceApplyTextcolor",a.settings.format,t),a.hidePanel(),a.color(t)};F.DOM.getParent(t.target,".mce-custom-color-btn")&&(a.hidePanel(),y(r).call(r,function(t){var e,o,r,n=a.panel.getEl().getElementsByTagName("table")[0];for(e=i.map(n.rows[n.rows.length-1].childNodes,function(t){return t.firstChild}),r=0;r<e.length&&(o=e[r]).getAttribute("data-mce-color");r++);if(r===c)for(r=0;r<c-1;r++)k(e[r],e[r+1].getAttribute("data-mce-color"));k(o,t),l(t)},o)),(e=t.target.getAttribute("data-mce-color"))?(this.lastId&&F.DOM.get(this.lastId).setAttribute("aria-selected","false"),t.target.setAttribute("aria-selected",!0),this.lastId=t.target.id,"transparent"===e?(r.execCommand("mceRemoveTextcolor",a.settings.format),a.hidePanel(),a.resetColor()):l(e)):null!==e&&a.hidePanel()}},_=function(n,a){return function(){var t=a?p(n):C(n),e=a?f(n):b(n),o=a?s(n):d(n),r=v(n);return P(t,e,o,r)}},A=function(t){t.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!0),onclick:T(t,p(t))},onclick:x(t)}),t.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!1),onclick:T(t,C(t))},onclick:x(t)})};t.add("textcolor",function(t){o(t),A(t)})}();
\ No newline at end of file
Index: src/js/_enqueues/vendor/tinymce/skins/lightgray/fonts/tinymce.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/js/_enqueues/vendor/tinymce/skins/lightgray/fonts/tinymce.svg
===================================================================
--- src/js/_enqueues/vendor/tinymce/skins/lightgray/fonts/tinymce.svg	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/skins/lightgray/fonts/tinymce.svg	(working copy)
@@ -87,6 +87,7 @@
 <glyph unicode="&#xe906;" glyph-name="reload" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" />
 <glyph unicode="&#xe907;" glyph-name="translate" d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8 304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8 48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6 67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816 540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2 214.4l76.8 201.6 76.8-201.6h-153.6z" />
 <glyph unicode="&#xe908;" glyph-name="drag" d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320 640h128v-128h-128v128zM576 384h128v-128h-128v128zM320 384h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM320 896h128v-128h-128v128z" />
+<glyph unicode="&#xe909;" glyph-name="format-painter" d="M768 746.667v42.667c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v42.667h42.667v-170.667h-426.667v-384c0-23.467 19.2-42.667 42.667-42.667h85.333c23.467 0 42.667 19.2 42.667 42.667v298.667h341.333v341.333h-128z" />
 <glyph unicode="&#xe90b;" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" />
 <glyph unicode="&#xe911;" glyph-name="books" d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0 64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384 640h128v-64h-128v64z" />
 <glyph unicode="&#xe914;" glyph-name="upload" d="M839.432 760.57c27.492-27.492 50.554-78.672 55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060 120.568-55.552l142.864-142.862zM512 576v384h-368c-44 0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576 192v-192h-192v192h-160l256 256 256-256h-160z" />
Index: src/js/_enqueues/vendor/tinymce/skins/lightgray/fonts/tinymce.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/js/_enqueues/vendor/tinymce/skins/lightgray/fonts/tinymce.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css
===================================================================
--- src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/skins/lightgray/skin.min.css	(working copy)
@@ -1 +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-top{margin-top:-10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-top>.mce-arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#c5c5c5;top:auto;bottom:-11px}.mce-floatpanel.mce-popover.mce-top>.mce-arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start,.mce-floatpanel.mce-popover.mce-top.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end,.mce-floatpanel.mce-popover.mce-top.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.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(.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}html .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, rgba(0,0,0,0), #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}
+.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-top{margin-top:-10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-top>.mce-arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#c5c5c5;top:auto;bottom:-11px}.mce-floatpanel.mce-popover.mce-top>.mce-arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start,.mce-floatpanel.mce-popover.mce-top.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end,.mce-floatpanel.mce-popover.mce-top.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.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(.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}html .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, rgba(0,0,0,0), #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}div.mce-menubtn.mce-opened.mce-opened-under{z-index:0}.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-format-painter:before{content:"\e909"}.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}/*# sourceMappingURL=skin.min.css.map */
\ No newline at end of file
Index: src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/themes/inlite/theme.js	(working copy)
@@ -1,10235 +1,9821 @@
 (function () {
 var inlite = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');
+    var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');
 
-  var flatten = function (arr) {
-    return arr.reduce(function (results, item) {
-      return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item);
-    }, []);
-  };
-  var $_ccn98l17xjjgwejz7 = { flatten: flatten };
+    var flatten = function (arr) {
+      return arr.reduce(function (results, item) {
+        return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item);
+      }, []);
+    };
+    var DeepFlatten = { flatten: flatten };
 
-  var result = function (id, rect) {
-    return {
-      id: id,
-      rect: rect
+    var result = function (id, rect) {
+      return {
+        id: id,
+        rect: rect
+      };
     };
-  };
-  var match = function (editor, matchers) {
-    for (var i = 0; i < matchers.length; i++) {
-      var f = matchers[i];
-      var result_1 = f(editor);
-      if (result_1) {
-        return result_1;
+    var match = function (editor, matchers) {
+      for (var i = 0; i < matchers.length; i++) {
+        var f = matchers[i];
+        var result_1 = f(editor);
+        if (result_1) {
+          return result_1;
+        }
       }
-    }
-    return null;
-  };
-  var $_6lg87517zjjgwejza = {
-    match: match,
-    result: result
-  };
+      return null;
+    };
+    var Matcher = {
+      match: match,
+      result: result
+    };
 
-  var fromClientRect = function (clientRect) {
-    return {
-      x: clientRect.left,
-      y: clientRect.top,
-      w: clientRect.width,
-      h: clientRect.height
+    var fromClientRect = function (clientRect) {
+      return {
+        x: clientRect.left,
+        y: clientRect.top,
+        w: clientRect.width,
+        h: clientRect.height
+      };
     };
-  };
-  var toClientRect = function (geomRect) {
-    return {
-      left: geomRect.x,
-      top: geomRect.y,
-      width: geomRect.w,
-      height: geomRect.h,
-      right: geomRect.x + geomRect.w,
-      bottom: geomRect.y + geomRect.h
+    var toClientRect = function (geomRect) {
+      return {
+        left: geomRect.x,
+        top: geomRect.y,
+        width: geomRect.w,
+        height: geomRect.h,
+        right: geomRect.x + geomRect.w,
+        bottom: geomRect.y + geomRect.h
+      };
     };
-  };
-  var $_1x174x181jjgwejzd = {
-    fromClientRect: fromClientRect,
-    toClientRect: toClientRect
-  };
+    var Convert = {
+      fromClientRect: fromClientRect,
+      toClientRect: toClientRect
+    };
 
-  var toAbsolute = function (rect) {
-    var vp = global$2.DOM.getViewPort();
-    return {
-      x: rect.x + vp.x,
-      y: rect.y + vp.y,
-      w: rect.w,
-      h: rect.h
+    var toAbsolute = function (rect) {
+      var vp = global$2.DOM.getViewPort();
+      return {
+        x: rect.x + vp.x,
+        y: rect.y + vp.y,
+        w: rect.w,
+        h: rect.h
+      };
     };
-  };
-  var measureElement = function (elm) {
-    var clientRect = elm.getBoundingClientRect();
-    return toAbsolute({
-      x: clientRect.left,
-      y: clientRect.top,
-      w: Math.max(elm.clientWidth, elm.offsetWidth),
-      h: Math.max(elm.clientHeight, elm.offsetHeight)
-    });
-  };
-  var getElementRect = function (editor, elm) {
-    return measureElement(elm);
-  };
-  var getPageAreaRect = function (editor) {
-    return measureElement(editor.getElement().ownerDocument.body);
-  };
-  var getContentAreaRect = function (editor) {
-    return measureElement(editor.getContentAreaContainer() || editor.getBody());
-  };
-  var getSelectionRect = function (editor) {
-    var clientRect = editor.selection.getBoundingClientRect();
-    return clientRect ? toAbsolute($_1x174x181jjgwejzd.fromClientRect(clientRect)) : null;
-  };
-  var $_51qgo2180jjgwejzb = {
-    getElementRect: getElementRect,
-    getPageAreaRect: getPageAreaRect,
-    getContentAreaRect: getContentAreaRect,
-    getSelectionRect: getSelectionRect
-  };
+    var measureElement = function (elm) {
+      var clientRect = elm.getBoundingClientRect();
+      return toAbsolute({
+        x: clientRect.left,
+        y: clientRect.top,
+        w: Math.max(elm.clientWidth, elm.offsetWidth),
+        h: Math.max(elm.clientHeight, elm.offsetHeight)
+      });
+    };
+    var getElementRect = function (editor, elm) {
+      return measureElement(elm);
+    };
+    var getPageAreaRect = function (editor) {
+      return measureElement(editor.getElement().ownerDocument.body);
+    };
+    var getContentAreaRect = function (editor) {
+      return measureElement(editor.getContentAreaContainer() || editor.getBody());
+    };
+    var getSelectionRect = function (editor) {
+      var clientRect = editor.selection.getBoundingClientRect();
+      return clientRect ? toAbsolute(Convert.fromClientRect(clientRect)) : null;
+    };
+    var Measure = {
+      getElementRect: getElementRect,
+      getPageAreaRect: getPageAreaRect,
+      getContentAreaRect: getContentAreaRect,
+      getSelectionRect: getSelectionRect
+    };
 
-  var element = function (element, predicateIds) {
-    return function (editor) {
-      for (var i = 0; i < predicateIds.length; i++) {
-        if (predicateIds[i].predicate(element)) {
-          var result = $_6lg87517zjjgwejza.result(predicateIds[i].id, $_51qgo2180jjgwejzb.getElementRect(editor, element));
-          return result;
+    var element = function (element, predicateIds) {
+      return function (editor) {
+        for (var i = 0; i < predicateIds.length; i++) {
+          if (predicateIds[i].predicate(element)) {
+            var result = Matcher.result(predicateIds[i].id, Measure.getElementRect(editor, element));
+            return result;
+          }
         }
-      }
-      return null;
+        return null;
+      };
     };
-  };
-  var parent = function (elements, predicateIds) {
-    return function (editor) {
-      for (var i = 0; i < elements.length; i++) {
-        for (var x = 0; x < predicateIds.length; x++) {
-          if (predicateIds[x].predicate(elements[i])) {
-            return $_6lg87517zjjgwejza.result(predicateIds[x].id, $_51qgo2180jjgwejzb.getElementRect(editor, elements[i]));
+    var parent = function (elements, predicateIds) {
+      return function (editor) {
+        for (var i = 0; i < elements.length; i++) {
+          for (var x = 0; x < predicateIds.length; x++) {
+            if (predicateIds[x].predicate(elements[i])) {
+              return Matcher.result(predicateIds[x].id, Measure.getElementRect(editor, elements[i]));
+            }
           }
         }
-      }
-      return null;
+        return null;
+      };
     };
-  };
-  var $_egsucq17yjjgwejz9 = {
-    element: element,
-    parent: parent
-  };
+    var ElementMatcher = {
+      element: element,
+      parent: parent
+    };
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var create = function (id, predicate) {
-    return {
-      id: id,
-      predicate: predicate
+    var create = function (id, predicate) {
+      return {
+        id: id,
+        predicate: predicate
+      };
     };
-  };
-  var fromContextToolbars = function (toolbars) {
-    return global$4.map(toolbars, function (toolbar) {
-      return create(toolbar.id, toolbar.predicate);
-    });
-  };
-  var $_9rj8kx182jjgwejze = {
-    create: create,
-    fromContextToolbars: fromContextToolbars
-  };
+    var fromContextToolbars = function (toolbars) {
+      return global$4.map(toolbars, function (toolbar) {
+        return create(toolbar.id, toolbar.predicate);
+      });
+    };
+    var PredicateId = {
+      create: create,
+      fromContextToolbars: fromContextToolbars
+    };
 
-  var textSelection = function (id) {
-    return function (editor) {
-      if (!editor.selection.isCollapsed()) {
-        var result = $_6lg87517zjjgwejza.result(id, $_51qgo2180jjgwejzb.getSelectionRect(editor));
-        return result;
-      }
-      return null;
+    var textSelection = function (id) {
+      return function (editor) {
+        if (!editor.selection.isCollapsed()) {
+          var result = Matcher.result(id, Measure.getSelectionRect(editor));
+          return result;
+        }
+        return null;
+      };
     };
-  };
-  var emptyTextBlock = function (elements, id) {
-    return function (editor) {
-      var i;
-      var textBlockElementsMap = editor.schema.getTextBlockElements();
-      for (i = 0; i < elements.length; i++) {
-        if (elements[i].nodeName === 'TABLE') {
-          return null;
+    var emptyTextBlock = function (elements, id) {
+      return function (editor) {
+        var i;
+        var textBlockElementsMap = editor.schema.getTextBlockElements();
+        for (i = 0; i < elements.length; i++) {
+          if (elements[i].nodeName === 'TABLE') {
+            return null;
+          }
         }
-      }
-      for (i = 0; i < elements.length; i++) {
-        if (elements[i].nodeName in textBlockElementsMap) {
-          if (editor.dom.isEmpty(elements[i])) {
-            return $_6lg87517zjjgwejza.result(id, $_51qgo2180jjgwejzb.getSelectionRect(editor));
+        for (i = 0; i < elements.length; i++) {
+          if (elements[i].nodeName in textBlockElementsMap) {
+            if (editor.dom.isEmpty(elements[i])) {
+              return Matcher.result(id, Measure.getSelectionRect(editor));
+            }
+            return null;
           }
-          return null;
         }
-      }
-      return null;
+        return null;
+      };
     };
-  };
-  var $_fhwgeg184jjgwejzf = {
-    textSelection: textSelection,
-    emptyTextBlock: emptyTextBlock
-  };
+    var SelectionMatcher = {
+      textSelection: textSelection,
+      emptyTextBlock: emptyTextBlock
+    };
 
-  var fireSkinLoaded = function (editor) {
-    editor.fire('SkinLoaded');
-  };
-  var fireBeforeRenderUI = function (editor) {
-    return editor.fire('BeforeRenderUI');
-  };
-  var $_77u64d186jjgwejzi = {
-    fireSkinLoaded: fireSkinLoaded,
-    fireBeforeRenderUI: fireBeforeRenderUI
-  };
+    var fireSkinLoaded = function (editor) {
+      editor.fire('SkinLoaded');
+    };
+    var fireBeforeRenderUI = function (editor) {
+      return editor.fire('BeforeRenderUI');
+    };
+    var Events = {
+      fireSkinLoaded: fireSkinLoaded,
+      fireBeforeRenderUI: fireBeforeRenderUI
+    };
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.EditorManager');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.EditorManager');
 
-  var isType = function (type) {
-    return function (value) {
-      return typeof value === type;
+    var isType = function (type) {
+      return function (value) {
+        return typeof value === type;
+      };
     };
-  };
-  var isArray = function (value) {
-    return Array.isArray(value);
-  };
-  var isNull = function (value) {
-    return value === null;
-  };
-  var isObject = function (predicate) {
-    return function (value) {
-      return !isNull(value) && !isArray(value) && predicate(value);
+    var isArray = function (value) {
+      return Array.isArray(value);
     };
-  };
-  var isString = function (value) {
-    return isType('string')(value);
-  };
-  var isNumber = function (value) {
-    return isType('number')(value);
-  };
-  var isFunction = function (value) {
-    return isType('function')(value);
-  };
-  var isBoolean = function (value) {
-    return isType('boolean')(value);
-  };
-  var $_e4npq318ajjgwejzo = {
-    isString: isString,
-    isNumber: isNumber,
-    isBoolean: isBoolean,
-    isFunction: isFunction,
-    isObject: isObject(isType('object')),
-    isNull: isNull,
-    isArray: isArray
-  };
+    var isNull = function (value) {
+      return value === null;
+    };
+    var isObject = function (predicate) {
+      return function (value) {
+        return !isNull(value) && !isArray(value) && predicate(value);
+      };
+    };
+    var isString = function (value) {
+      return isType('string')(value);
+    };
+    var isNumber = function (value) {
+      return isType('number')(value);
+    };
+    var isFunction = function (value) {
+      return isType('function')(value);
+    };
+    var isBoolean = function (value) {
+      return isType('boolean')(value);
+    };
+    var Type = {
+      isString: isString,
+      isNumber: isNumber,
+      isBoolean: isBoolean,
+      isFunction: isFunction,
+      isObject: isObject(isType('object')),
+      isNull: isNull,
+      isArray: isArray
+    };
 
-  var validDefaultOrDie = function (value, predicate) {
-    if (predicate(value)) {
-      return true;
-    }
-    throw new Error('Default value doesn\'t match requested type.');
-  };
-  var getByTypeOr = function (predicate) {
-    return function (editor, name, defaultValue) {
-      var settings = editor.settings;
-      validDefaultOrDie(defaultValue, predicate);
-      return name in settings && predicate(settings[name]) ? settings[name] : defaultValue;
+    var validDefaultOrDie = function (value, predicate) {
+      if (predicate(value)) {
+        return true;
+      }
+      throw new Error('Default value doesn\'t match requested type.');
     };
-  };
-  var splitNoEmpty = function (str, delim) {
-    return str.split(delim).filter(function (item) {
-      return item.length > 0;
-    });
-  };
-  var itemsToArray = function (value, defaultValue) {
-    var stringToItemsArray = function (value) {
-      return typeof value === 'string' ? splitNoEmpty(value, /[ ,]/) : value;
+    var getByTypeOr = function (predicate) {
+      return function (editor, name, defaultValue) {
+        var settings = editor.settings;
+        validDefaultOrDie(defaultValue, predicate);
+        return name in settings && predicate(settings[name]) ? settings[name] : defaultValue;
+      };
     };
-    var boolToItemsArray = function (value, defaultValue) {
-      return value === false ? [] : defaultValue;
+    var splitNoEmpty = function (str, delim) {
+      return str.split(delim).filter(function (item) {
+        return item.length > 0;
+      });
     };
-    if ($_e4npq318ajjgwejzo.isArray(value)) {
-      return value;
-    } else if ($_e4npq318ajjgwejzo.isString(value)) {
-      return stringToItemsArray(value);
-    } else if ($_e4npq318ajjgwejzo.isBoolean(value)) {
-      return boolToItemsArray(value, defaultValue);
-    }
-    return defaultValue;
-  };
-  var getToolbarItemsOr = function (predicate) {
-    return function (editor, name, defaultValue) {
-      var value = name in editor.settings ? editor.settings[name] : defaultValue;
-      validDefaultOrDie(defaultValue, predicate);
-      return itemsToArray(value, defaultValue);
+    var itemsToArray = function (value, defaultValue) {
+      var stringToItemsArray = function (value) {
+        return typeof value === 'string' ? splitNoEmpty(value, /[ ,]/) : value;
+      };
+      var boolToItemsArray = function (value, defaultValue) {
+        return value === false ? [] : defaultValue;
+      };
+      if (Type.isArray(value)) {
+        return value;
+      } else if (Type.isString(value)) {
+        return stringToItemsArray(value);
+      } else if (Type.isBoolean(value)) {
+        return boolToItemsArray(value, defaultValue);
+      }
+      return defaultValue;
     };
-  };
-  var $_c8umh189jjgwejzm = {
-    getStringOr: getByTypeOr($_e4npq318ajjgwejzo.isString),
-    getBoolOr: getByTypeOr($_e4npq318ajjgwejzo.isBoolean),
-    getNumberOr: getByTypeOr($_e4npq318ajjgwejzo.isNumber),
-    getHandlerOr: getByTypeOr($_e4npq318ajjgwejzo.isFunction),
-    getToolbarItemsOr: getToolbarItemsOr($_e4npq318ajjgwejzo.isArray)
-  };
+    var getToolbarItemsOr = function (predicate) {
+      return function (editor, name, defaultValue) {
+        var value = name in editor.settings ? editor.settings[name] : defaultValue;
+        validDefaultOrDie(defaultValue, predicate);
+        return itemsToArray(value, defaultValue);
+      };
+    };
+    var EditorSettings = {
+      getStringOr: getByTypeOr(Type.isString),
+      getBoolOr: getByTypeOr(Type.isBoolean),
+      getNumberOr: getByTypeOr(Type.isNumber),
+      getHandlerOr: getByTypeOr(Type.isFunction),
+      getToolbarItemsOr: getToolbarItemsOr(Type.isArray)
+    };
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');
 
-  var result$1 = function (rect, position) {
-    return {
-      rect: rect,
-      position: position
+    var result$1 = function (rect, position) {
+      return {
+        rect: rect,
+        position: position
+      };
     };
-  };
-  var moveTo = function (rect, toRect) {
-    return {
-      x: toRect.x,
-      y: toRect.y,
-      w: rect.w,
-      h: rect.h
+    var moveTo = function (rect, toRect) {
+      return {
+        x: toRect.x,
+        y: toRect.y,
+        w: rect.w,
+        h: rect.h
+      };
     };
-  };
-  var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) {
-    var relPos, relRect, outputPanelRect;
-    var paddedContentRect = {
-      x: contentAreaRect.x,
-      y: contentAreaRect.y,
-      w: contentAreaRect.w + (contentAreaRect.w < panelRect.w + targetRect.w ? panelRect.w : 0),
-      h: contentAreaRect.h + (contentAreaRect.h < panelRect.h + targetRect.h ? panelRect.h : 0)
-    };
-    relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions1);
-    targetRect = global$6.clamp(targetRect, paddedContentRect);
-    if (relPos) {
-      relRect = global$6.relativePosition(panelRect, targetRect, relPos);
-      outputPanelRect = moveTo(panelRect, relRect);
-      return result$1(outputPanelRect, relPos);
-    }
-    targetRect = global$6.intersect(paddedContentRect, targetRect);
-    if (targetRect) {
-      relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions2);
+    var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) {
+      var relPos, relRect, outputPanelRect;
+      var paddedContentRect = {
+        x: contentAreaRect.x,
+        y: contentAreaRect.y,
+        w: contentAreaRect.w + (contentAreaRect.w < panelRect.w + targetRect.w ? panelRect.w : 0),
+        h: contentAreaRect.h + (contentAreaRect.h < panelRect.h + targetRect.h ? panelRect.h : 0)
+      };
+      relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions1);
+      targetRect = global$6.clamp(targetRect, paddedContentRect);
       if (relPos) {
         relRect = global$6.relativePosition(panelRect, targetRect, relPos);
         outputPanelRect = moveTo(panelRect, relRect);
         return result$1(outputPanelRect, relPos);
       }
-      outputPanelRect = moveTo(panelRect, targetRect);
-      return result$1(outputPanelRect, relPos);
-    }
-    return null;
-  };
-  var calcInsert = function (targetRect, contentAreaRect, panelRect) {
-    return calcByPositions([
-      'cr-cl',
-      'cl-cr'
-    ], [
-      'bc-tc',
-      'bl-tl',
-      'br-tr'
-    ], targetRect, contentAreaRect, panelRect);
-  };
-  var calc = function (targetRect, contentAreaRect, panelRect) {
-    return calcByPositions([
-      'tc-bc',
-      'bc-tc',
-      'tl-bl',
-      'bl-tl',
-      'tr-br',
-      'br-tr',
-      'cr-cl',
-      'cl-cr'
-    ], [
-      'bc-tc',
-      'bl-tl',
-      'br-tr',
-      'cr-cl'
-    ], targetRect, contentAreaRect, panelRect);
-  };
-  var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) {
-    var userConstrainedPanelRect;
-    if (typeof handler === 'function') {
-      userConstrainedPanelRect = handler({
-        elementRect: $_1x174x181jjgwejzd.toClientRect(targetRect),
-        contentAreaRect: $_1x174x181jjgwejzd.toClientRect(contentAreaRect),
-        panelRect: $_1x174x181jjgwejzd.toClientRect(panelRect)
-      });
-      return $_1x174x181jjgwejzd.fromClientRect(userConstrainedPanelRect);
-    }
-    return panelRect;
-  };
-  var defaultHandler = function (rects) {
-    return rects.panelRect;
-  };
-  var $_gir42l18bjjgwejzq = {
-    calcInsert: calcInsert,
-    calc: calc,
-    userConstrain: userConstrain,
-    defaultHandler: defaultHandler
-  };
-
-  var toAbsoluteUrl = function (editor, url) {
-    return editor.documentBaseURI.toAbsolute(url);
-  };
-  var urlFromName = function (name) {
-    var prefix = global$5.baseURL + '/skins/';
-    return name ? prefix + name : prefix + 'lightgray';
-  };
-  var getTextSelectionToolbarItems = function (editor) {
-    return $_c8umh189jjgwejzm.getToolbarItemsOr(editor, 'selection_toolbar', [
-      'bold',
-      'italic',
-      '|',
-      'quicklink',
-      'h2',
-      'h3',
-      'blockquote'
-    ]);
-  };
-  var getInsertToolbarItems = function (editor) {
-    return $_c8umh189jjgwejzm.getToolbarItemsOr(editor, 'insert_toolbar', [
-      'quickimage',
-      'quicktable'
-    ]);
-  };
-  var getPositionHandler = function (editor) {
-    return $_c8umh189jjgwejzm.getHandlerOr(editor, 'inline_toolbar_position_handler', $_gir42l18bjjgwejzq.defaultHandler);
-  };
-  var getSkinUrl = function (editor) {
-    var settings = editor.settings;
-    return settings.skin_url ? toAbsoluteUrl(editor, settings.skin_url) : urlFromName(settings.skin);
-  };
-  var isSkinDisabled = function (editor) {
-    return editor.settings.skin === false;
-  };
-  var $_4j2h42187jjgwejzk = {
-    getTextSelectionToolbarItems: getTextSelectionToolbarItems,
-    getInsertToolbarItems: getInsertToolbarItems,
-    getPositionHandler: getPositionHandler,
-    getSkinUrl: getSkinUrl,
-    isSkinDisabled: isSkinDisabled
-  };
-
-  var fireSkinLoaded$1 = function (editor, callback) {
-    var done = function () {
-      editor._skinLoaded = true;
-      $_77u64d186jjgwejzi.fireSkinLoaded(editor);
-      callback();
+      targetRect = global$6.intersect(paddedContentRect, targetRect);
+      if (targetRect) {
+        relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions2);
+        if (relPos) {
+          relRect = global$6.relativePosition(panelRect, targetRect, relPos);
+          outputPanelRect = moveTo(panelRect, relRect);
+          return result$1(outputPanelRect, relPos);
+        }
+        outputPanelRect = moveTo(panelRect, targetRect);
+        return result$1(outputPanelRect, relPos);
+      }
+      return null;
     };
-    if (editor.initialized) {
-      done();
-    } else {
-      editor.on('init', done);
-    }
-  };
-  var load = function (editor, callback) {
-    var skinUrl = $_4j2h42187jjgwejzk.getSkinUrl(editor);
-    var done = function () {
-      fireSkinLoaded$1(editor, callback);
+    var calcInsert = function (targetRect, contentAreaRect, panelRect) {
+      return calcByPositions([
+        'cr-cl',
+        'cl-cr'
+      ], [
+        'bc-tc',
+        'bl-tl',
+        'br-tr'
+      ], targetRect, contentAreaRect, panelRect);
     };
-    if ($_4j2h42187jjgwejzk.isSkinDisabled(editor)) {
-      done();
-    } else {
-      global$2.DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done);
-      editor.contentCSS.push(skinUrl + '/content.inline.min.css');
-    }
-  };
-  var $_93v08q185jjgwejzh = { load: load };
+    var calc = function (targetRect, contentAreaRect, panelRect) {
+      return calcByPositions([
+        'tc-bc',
+        'bc-tc',
+        'tl-bl',
+        'bl-tl',
+        'tr-br',
+        'br-tr',
+        'cr-cl',
+        'cl-cr'
+      ], [
+        'bc-tc',
+        'bl-tl',
+        'br-tr',
+        'cr-cl'
+      ], targetRect, contentAreaRect, panelRect);
+    };
+    var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) {
+      var userConstrainedPanelRect;
+      if (typeof handler === 'function') {
+        userConstrainedPanelRect = handler({
+          elementRect: Convert.toClientRect(targetRect),
+          contentAreaRect: Convert.toClientRect(contentAreaRect),
+          panelRect: Convert.toClientRect(panelRect)
+        });
+        return Convert.fromClientRect(userConstrainedPanelRect);
+      }
+      return panelRect;
+    };
+    var defaultHandler = function (rects) {
+      return rects.panelRect;
+    };
+    var Layout = {
+      calcInsert: calcInsert,
+      calc: calc,
+      userConstrain: userConstrain,
+      defaultHandler: defaultHandler
+    };
 
-  var getSelectionElements = function (editor) {
-    var node = editor.selection.getNode();
-    var elms = editor.dom.getParents(node, '*');
-    return elms;
-  };
-  var createToolbar = function (editor, selector, id, items) {
-    var selectorPredicate = function (elm) {
-      return editor.dom.is(elm, selector);
+    var toAbsoluteUrl = function (editor, url) {
+      return editor.documentBaseURI.toAbsolute(url);
     };
-    return {
-      predicate: selectorPredicate,
-      id: id,
-      items: items
+    var urlFromName = function (name) {
+      var prefix = global$5.baseURL + '/skins/';
+      return name ? prefix + name : prefix + 'lightgray';
     };
-  };
-  var getToolbars = function (editor) {
-    var contextToolbars = editor.contextToolbars;
-    return $_ccn98l17xjjgwejz7.flatten([
-      contextToolbars ? contextToolbars : [],
-      createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright')
-    ]);
-  };
-  var findMatchResult = function (editor, toolbars) {
-    var result, elements, contextToolbarsPredicateIds;
-    elements = getSelectionElements(editor);
-    contextToolbarsPredicateIds = $_9rj8kx182jjgwejze.fromContextToolbars(toolbars);
-    result = $_6lg87517zjjgwejza.match(editor, [
-      $_egsucq17yjjgwejz9.element(elements[0], contextToolbarsPredicateIds),
-      $_fhwgeg184jjgwejzf.textSelection('text'),
-      $_fhwgeg184jjgwejzf.emptyTextBlock(elements, 'insert'),
-      $_egsucq17yjjgwejz9.parent(elements, contextToolbarsPredicateIds)
-    ]);
-    return result && result.rect ? result : null;
-  };
-  var editorHasFocus = function (editor) {
-    return document.activeElement === editor.getBody();
-  };
-  var togglePanel = function (editor, panel) {
-    var toggle = function () {
-      var toolbars = getToolbars(editor);
-      var result = findMatchResult(editor, toolbars);
-      if (result) {
-        panel.show(editor, result.id, result.rect, toolbars);
+    var getTextSelectionToolbarItems = function (editor) {
+      return EditorSettings.getToolbarItemsOr(editor, 'selection_toolbar', [
+        'bold',
+        'italic',
+        '|',
+        'quicklink',
+        'h2',
+        'h3',
+        'blockquote'
+      ]);
+    };
+    var getInsertToolbarItems = function (editor) {
+      return EditorSettings.getToolbarItemsOr(editor, 'insert_toolbar', [
+        'quickimage',
+        'quicktable'
+      ]);
+    };
+    var getPositionHandler = function (editor) {
+      return EditorSettings.getHandlerOr(editor, 'inline_toolbar_position_handler', Layout.defaultHandler);
+    };
+    var getSkinUrl = function (editor) {
+      var settings = editor.settings;
+      return settings.skin_url ? toAbsoluteUrl(editor, settings.skin_url) : urlFromName(settings.skin);
+    };
+    var isSkinDisabled = function (editor) {
+      return editor.settings.skin === false;
+    };
+    var Settings = {
+      getTextSelectionToolbarItems: getTextSelectionToolbarItems,
+      getInsertToolbarItems: getInsertToolbarItems,
+      getPositionHandler: getPositionHandler,
+      getSkinUrl: getSkinUrl,
+      isSkinDisabled: isSkinDisabled
+    };
+
+    var fireSkinLoaded$1 = function (editor, callback) {
+      var done = function () {
+        editor._skinLoaded = true;
+        Events.fireSkinLoaded(editor);
+        callback();
+      };
+      if (editor.initialized) {
+        done();
       } else {
-        panel.hide();
+        editor.on('init', done);
       }
     };
-    return function () {
-      if (!editor.removed && editorHasFocus(editor)) {
-        toggle();
+    var load = function (editor, callback) {
+      var skinUrl = Settings.getSkinUrl(editor);
+      var done = function () {
+        fireSkinLoaded$1(editor, callback);
+      };
+      if (Settings.isSkinDisabled(editor)) {
+        done();
+      } else {
+        global$2.DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done);
+        editor.contentCSS.push(skinUrl + '/content.inline.min.css');
       }
     };
-  };
-  var repositionPanel = function (editor, panel) {
-    return function () {
-      var toolbars = getToolbars(editor);
-      var result = findMatchResult(editor, toolbars);
-      if (result) {
-        panel.reposition(editor, result.id, result.rect);
-      }
+    var SkinLoader = { load: load };
+
+    var getSelectionElements = function (editor) {
+      var node = editor.selection.getNode();
+      var elms = editor.dom.getParents(node, '*');
+      return elms;
     };
-  };
-  var ignoreWhenFormIsVisible = function (editor, panel, f) {
-    return function () {
-      if (!editor.removed && !panel.inForm()) {
-        f();
-      }
+    var createToolbar = function (editor, selector, id, items) {
+      var selectorPredicate = function (elm) {
+        return editor.dom.is(elm, selector);
+      };
+      return {
+        predicate: selectorPredicate,
+        id: id,
+        items: items
+      };
     };
-  };
-  var bindContextualToolbarsEvents = function (editor, panel) {
-    var throttledTogglePanel = global$3.throttle(togglePanel(editor, panel), 0);
-    var throttledTogglePanelWhenNotInForm = global$3.throttle(ignoreWhenFormIsVisible(editor, panel, togglePanel(editor, panel)), 0);
-    var reposition = repositionPanel(editor, panel);
-    editor.on('blur hide ObjectResizeStart', panel.hide);
-    editor.on('click', throttledTogglePanel);
-    editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm);
-    editor.on('ResizeEditor keyup', throttledTogglePanel);
-    editor.on('ResizeWindow', reposition);
-    global$2.DOM.bind(global$1.container, 'scroll', reposition);
-    editor.on('remove', function () {
-      global$2.DOM.unbind(global$1.container, 'scroll', reposition);
-      panel.remove();
-    });
-    editor.shortcuts.add('Alt+F10,F10', '', panel.focus);
-  };
-  var overrideLinkShortcut = function (editor, panel) {
-    editor.shortcuts.remove('meta+k');
-    editor.shortcuts.add('meta+k', '', function () {
-      var toolbars = getToolbars(editor);
-      var result = $_6lg87517zjjgwejza.match(editor, [$_fhwgeg184jjgwejzf.textSelection('quicklink')]);
-      if (result) {
-        panel.show(editor, result.id, result.rect, toolbars);
-      }
-    });
-  };
-  var renderInlineUI = function (editor, panel) {
-    $_93v08q185jjgwejzh.load(editor, function () {
-      bindContextualToolbarsEvents(editor, panel);
-      overrideLinkShortcut(editor, panel);
-    });
-    return {};
-  };
-  var fail = function (message) {
-    throw new Error(message);
-  };
-  var renderUI = function (editor, panel) {
-    return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.');
-  };
-  var $_b0wxh217tjjgwejyx = { renderUI: renderUI };
+    var getToolbars = function (editor) {
+      var contextToolbars = editor.contextToolbars;
+      return DeepFlatten.flatten([
+        contextToolbars ? contextToolbars : [],
+        createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright')
+      ]);
+    };
+    var findMatchResult = function (editor, toolbars) {
+      var result, elements, contextToolbarsPredicateIds;
+      elements = getSelectionElements(editor);
+      contextToolbarsPredicateIds = PredicateId.fromContextToolbars(toolbars);
+      result = Matcher.match(editor, [
+        ElementMatcher.element(elements[0], contextToolbarsPredicateIds),
+        SelectionMatcher.textSelection('text'),
+        SelectionMatcher.emptyTextBlock(elements, 'insert'),
+        ElementMatcher.parent(elements, contextToolbarsPredicateIds)
+      ]);
+      return result && result.rect ? result : null;
+    };
+    var editorHasFocus = function (editor) {
+      return document.activeElement === editor.getBody();
+    };
+    var togglePanel = function (editor, panel) {
+      var toggle = function () {
+        var toolbars = getToolbars(editor);
+        var result = findMatchResult(editor, toolbars);
+        if (result) {
+          panel.show(editor, result.id, result.rect, toolbars);
+        } else {
+          panel.hide();
+        }
+      };
+      return function () {
+        if (!editor.removed && editorHasFocus(editor)) {
+          toggle();
+        }
+      };
+    };
+    var repositionPanel = function (editor, panel) {
+      return function () {
+        var toolbars = getToolbars(editor);
+        var result = findMatchResult(editor, toolbars);
+        if (result) {
+          panel.reposition(editor, result.id, result.rect);
+        }
+      };
+    };
+    var ignoreWhenFormIsVisible = function (editor, panel, f) {
+      return function () {
+        if (!editor.removed && !panel.inForm()) {
+          f();
+        }
+      };
+    };
+    var bindContextualToolbarsEvents = function (editor, panel) {
+      var throttledTogglePanel = global$3.throttle(togglePanel(editor, panel), 0);
+      var throttledTogglePanelWhenNotInForm = global$3.throttle(ignoreWhenFormIsVisible(editor, panel, togglePanel(editor, panel)), 0);
+      var reposition = repositionPanel(editor, panel);
+      editor.on('blur hide ObjectResizeStart', panel.hide);
+      editor.on('click', throttledTogglePanel);
+      editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm);
+      editor.on('ResizeEditor keyup', throttledTogglePanel);
+      editor.on('ResizeWindow', reposition);
+      global$2.DOM.bind(global$1.container, 'scroll', reposition);
+      editor.on('remove', function () {
+        global$2.DOM.unbind(global$1.container, 'scroll', reposition);
+        panel.remove();
+      });
+      editor.shortcuts.add('Alt+F10,F10', '', panel.focus);
+    };
+    var overrideLinkShortcut = function (editor, panel) {
+      editor.shortcuts.remove('meta+k');
+      editor.shortcuts.add('meta+k', '', function () {
+        var toolbars = getToolbars(editor);
+        var result = Matcher.match(editor, [SelectionMatcher.textSelection('quicklink')]);
+        if (result) {
+          panel.show(editor, result.id, result.rect, toolbars);
+        }
+      });
+    };
+    var renderInlineUI = function (editor, panel) {
+      SkinLoader.load(editor, function () {
+        bindContextualToolbarsEvents(editor, panel);
+        overrideLinkShortcut(editor, panel);
+      });
+      return {};
+    };
+    var fail = function (message) {
+      throw new Error(message);
+    };
+    var renderUI = function (editor, panel) {
+      return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.');
+    };
+    var Render = { renderUI: renderUI };
 
-  var noop = function () {
-    var x = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-      x[_i] = arguments[_i];
-    }
-  };
-
-  var compose = function (fa, fb) {
-    return function () {
-      var x = [];
+    var noop = function () {
+      var args = [];
       for (var _i = 0; _i < arguments.length; _i++) {
-        x[_i] = arguments[_i];
+        args[_i] = arguments[_i];
       }
-      return fa(fb.apply(null, arguments));
     };
-  };
-  var constant = function (value) {
-    return function () {
-      return value;
+    var constant = function (value) {
+      return function () {
+        return value;
+      };
     };
-  };
+    var never = constant(false);
+    var always = constant(true);
 
+    var never$1 = never;
+    var always$1 = always;
+    var none = function () {
+      return NONE;
+    };
+    var NONE = function () {
+      var eq = function (o) {
+        return o.isNone();
+      };
+      var call$$1 = function (thunk) {
+        return thunk();
+      };
+      var id = function (n) {
+        return n;
+      };
+      var noop$$1 = function () {
+      };
+      var nul = function () {
+        return null;
+      };
+      var undef = function () {
+        return undefined;
+      };
+      var me = {
+        fold: function (n, s) {
+          return n();
+        },
+        is: never$1,
+        isSome: never$1,
+        isNone: always$1,
+        getOr: id,
+        getOrThunk: call$$1,
+        getOrDie: function (msg) {
+          throw new Error(msg || 'error: getOrDie called on none.');
+        },
+        getOrNull: nul,
+        getOrUndefined: undef,
+        or: id,
+        orThunk: call$$1,
+        map: none,
+        ap: none,
+        each: noop$$1,
+        bind: none,
+        flatten: none,
+        exists: never$1,
+        forall: always$1,
+        filter: none,
+        equals: eq,
+        equals_: eq,
+        toArray: function () {
+          return [];
+        },
+        toString: 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,
+        getOrNull: constant_a,
+        getOrUndefined: 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 curry = function (f) {
-    var x = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-      x[_i - 1] = arguments[_i];
-    }
-    var args = new Array(arguments.length - 1);
-    for (var i = 1; i < arguments.length; i++)
-      args[i - 1] = arguments[i];
-    return function () {
-      var x = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        x[_i] = arguments[_i];
-      }
-      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 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 isFunction$1 = isType$1('function');
+    var isNumber$1 = isType$1('number');
 
-
-
-
-  var never = constant(false);
-  var always = constant(true);
-
-  var never$1 = never;
-  var always$1 = always;
-  var none = function () {
-    return NONE;
-  };
-  var NONE = function () {
-    var eq = function (o) {
-      return o.isNone();
+    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 call$$1 = function (thunk) {
-      return thunk();
+    var exists = function (xs, pred) {
+      return findIndex(xs, pred).isSome();
     };
-    var id = function (n) {
-      return n;
+    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 noop$$1 = function () {
+    var each = function (xs, f) {
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        f(x, i, xs);
+      }
     };
-    var nul = function () {
-      return null;
+    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 undef = function () {
-      return undefined;
+    var foldl = function (xs, f, acc) {
+      each(xs, function (x) {
+        acc = f(acc, x);
+      });
+      return acc;
     };
-    var me = {
-      fold: function (n, s) {
-        return n();
-      },
-      is: never$1,
-      isSome: never$1,
-      isNone: always$1,
-      getOr: id,
-      getOrThunk: call$$1,
-      getOrDie: function (msg) {
-        throw new Error(msg || 'error: getOrDie called on none.');
-      },
-      getOrNull: nul,
-      getOrUndefined: undef,
-      or: id,
-      orThunk: call$$1,
-      map: none,
-      ap: none,
-      each: noop$$1,
-      bind: none,
-      flatten: none,
-      exists: never$1,
-      forall: always$1,
-      filter: none,
-      equals: eq,
-      equals_: eq,
-      toArray: function () {
-        return [];
-      },
-      toString: constant('none()')
+    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();
     };
-    if (Object.freeze)
-      Object.freeze(me);
-    return me;
-  }();
-  var some = function (a) {
-    var constant_a = function () {
-      return a;
+    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 self = function () {
-      return me;
+    var slowIndexOf = function (xs, x) {
+      for (var i = 0, len = xs.length; i < len; ++i) {
+        if (xs[i] === x) {
+          return i;
+        }
+      }
+      return -1;
     };
-    var map = function (f) {
-      return some(f(a));
+    var push = Array.prototype.push;
+    var flatten$1 = 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 (f) {
-      return f(a);
+    var slice = Array.prototype.slice;
+    var from$1 = isFunction$1(Array.from) ? Array.from : function (x) {
+      return slice.call(x);
     };
-    var me = {
-      fold: function (n, s) {
-        return s(a);
+
+    var count = 0;
+    var funcs = {
+      id: function () {
+        return 'mceu_' + count++;
       },
-      is: function (v) {
-        return a === v;
+      create: function (name$$1, attrs, children) {
+        var elm = document.createElement(name$$1);
+        global$2.DOM.setAttribs(elm, attrs);
+        if (typeof children === 'string') {
+          elm.innerHTML = children;
+        } else {
+          global$4.each(children, function (child) {
+            if (child.nodeType) {
+              elm.appendChild(child);
+            }
+          });
+        }
+        return elm;
       },
-      isSome: always$1,
-      isNone: never$1,
-      getOr: constant_a,
-      getOrThunk: constant_a,
-      getOrDie: constant_a,
-      getOrNull: constant_a,
-      getOrUndefined: constant_a,
-      or: self,
-      orThunk: self,
-      map: map,
-      ap: function (optfab) {
-        return optfab.fold(none, function (fab) {
-          return some(fab(a));
-        });
+      createFragment: function (html) {
+        return global$2.DOM.createFragment(html);
       },
-      each: function (f) {
-        f(a);
+      getWindowSize: function () {
+        return global$2.DOM.getViewPort();
       },
-      bind: bind,
-      flatten: constant_a,
-      exists: bind,
-      forall: bind,
-      filter: function (f) {
-        return f(a) ? me : NONE;
+      getSize: function (elm) {
+        var width, height;
+        if (elm.getBoundingClientRect) {
+          var rect = elm.getBoundingClientRect();
+          width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);
+          height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);
+        } else {
+          width = elm.offsetWidth;
+          height = elm.offsetHeight;
+        }
+        return {
+          width: width,
+          height: height
+        };
       },
-      equals: function (o) {
-        return o.is(a);
+      getPos: function (elm, root) {
+        return global$2.DOM.getPos(elm, root || funcs.getContainer());
       },
-      equals_: function (o, elementEq) {
-        return o.fold(never$1, function (b) {
-          return elementEq(a, b);
-        });
+      getContainer: function () {
+        return global$1.container ? global$1.container : document.body;
       },
-      toArray: function () {
-        return [a];
+      getViewPort: function (win) {
+        return global$2.DOM.getViewPort(win);
       },
-      toString: function () {
-        return 'some(' + a + ')';
+      get: function (id) {
+        return document.getElementById(id);
+      },
+      addClass: function (elm, cls) {
+        return global$2.DOM.addClass(elm, cls);
+      },
+      removeClass: function (elm, cls) {
+        return global$2.DOM.removeClass(elm, cls);
+      },
+      hasClass: function (elm, cls) {
+        return global$2.DOM.hasClass(elm, cls);
+      },
+      toggleClass: function (elm, cls, state) {
+        return global$2.DOM.toggleClass(elm, cls, state);
+      },
+      css: function (elm, name$$1, value) {
+        return global$2.DOM.setStyle(elm, name$$1, value);
+      },
+      getRuntimeStyle: function (elm, name$$1) {
+        return global$2.DOM.getStyle(elm, name$$1, true);
+      },
+      on: function (target, name$$1, callback, scope) {
+        return global$2.DOM.bind(target, name$$1, callback, scope);
+      },
+      off: function (target, name$$1, callback) {
+        return global$2.DOM.unbind(target, name$$1, callback);
+      },
+      fire: function (target, name$$1, args) {
+        return global$2.DOM.fire(target, name$$1, args);
+      },
+      innerHtml: function (elm, html) {
+        global$2.DOM.setHTML(elm, html);
       }
     };
-    return me;
-  };
-  var from = function (value) {
-    return value === null || value === undefined ? NONE : some(value);
-  };
-  var Option = {
-    some: some,
-    none: none,
-    from: from
-  };
 
-  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 global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
 
+    var global$8 = tinymce.util.Tools.resolve('tinymce.util.Class');
 
+    var global$9 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');
 
-
-
-
-  var isFunction$1 = isType$1('function');
-  var isNumber$1 = isType$1('number');
-
-  var rawIndexOf = function () {
-    var pIndexOf = Array.prototype.indexOf;
-    var fastIndex = function (xs, x) {
-      return pIndexOf.call(xs, x);
+    var BoxUtils = {
+      parseBox: function (value) {
+        var len;
+        var radix = 10;
+        if (!value) {
+          return;
+        }
+        if (typeof value === 'number') {
+          value = value || 0;
+          return {
+            top: value,
+            left: value,
+            bottom: value,
+            right: value
+          };
+        }
+        value = value.split(' ');
+        len = value.length;
+        if (len === 1) {
+          value[1] = value[2] = value[3] = value[0];
+        } else if (len === 2) {
+          value[2] = value[0];
+          value[3] = value[1];
+        } else if (len === 3) {
+          value[3] = value[1];
+        }
+        return {
+          top: parseInt(value[0], radix) || 0,
+          right: parseInt(value[1], radix) || 0,
+          bottom: parseInt(value[2], radix) || 0,
+          left: parseInt(value[3], radix) || 0
+        };
+      },
+      measureBox: function (elm, prefix) {
+        function getStyle(name) {
+          var defaultView = elm.ownerDocument.defaultView;
+          if (defaultView) {
+            var computedStyle = defaultView.getComputedStyle(elm, null);
+            if (computedStyle) {
+              name = name.replace(/[A-Z]/g, function (a) {
+                return '-' + a;
+              });
+              return computedStyle.getPropertyValue(name);
+            } else {
+              return null;
+            }
+          }
+          return elm.currentStyle[name];
+        }
+        function getSide(name) {
+          var val = parseFloat(getStyle(name));
+          return isNaN(val) ? 0 : val;
+        }
+        return {
+          top: getSide(prefix + 'TopWidth'),
+          right: getSide(prefix + 'RightWidth'),
+          bottom: getSide(prefix + 'BottomWidth'),
+          left: getSide(prefix + 'LeftWidth')
+        };
+      }
     };
-    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 exists = function (xs, pred) {
-    return findIndex(xs, pred).isSome();
-  };
-
-
-  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);
+    function noop$1() {
     }
-    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);
+    function ClassList(onchange) {
+      this.cls = [];
+      this.cls._map = {};
+      this.onchange = onchange || noop$1;
+      this.prefix = '';
     }
-  };
-
-
-  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 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$1 = 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 slice = Array.prototype.slice;
-  var reverse = function (xs) {
-    var r = slice.call(xs, 0);
-    r.reverse();
-    return r;
-  };
-
-
-
-
-
-
-  var from$1 = isFunction$1(Array.from) ? Array.from : function (x) {
-    return slice.call(x);
-  };
-
-  var count = 0;
-  var funcs = {
-    id: function () {
-      return 'mceu_' + count++;
-    },
-    create: function (name$$1, attrs, children) {
-      var elm = document.createElement(name$$1);
-      global$2.DOM.setAttribs(elm, attrs);
-      if (typeof children === 'string') {
-        elm.innerHTML = children;
-      } else {
-        global$4.each(children, function (child) {
-          if (child.nodeType) {
-            elm.appendChild(child);
+    global$4.extend(ClassList.prototype, {
+      add: function (cls) {
+        if (cls && !this.contains(cls)) {
+          this.cls._map[cls] = true;
+          this.cls.push(cls);
+          this._change();
+        }
+        return this;
+      },
+      remove: function (cls) {
+        if (this.contains(cls)) {
+          var i = void 0;
+          for (i = 0; i < this.cls.length; i++) {
+            if (this.cls[i] === cls) {
+              break;
+            }
           }
-        });
-      }
-      return elm;
-    },
-    createFragment: function (html) {
-      return global$2.DOM.createFragment(html);
-    },
-    getWindowSize: function () {
-      return global$2.DOM.getViewPort();
-    },
-    getSize: function (elm) {
-      var width, height;
-      if (elm.getBoundingClientRect) {
-        var rect = elm.getBoundingClientRect();
-        width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);
-        height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);
-      } else {
-        width = elm.offsetWidth;
-        height = elm.offsetHeight;
-      }
-      return {
-        width: width,
-        height: height
-      };
-    },
-    getPos: function (elm, root) {
-      return global$2.DOM.getPos(elm, root || funcs.getContainer());
-    },
-    getContainer: function () {
-      return global$1.container ? global$1.container : document.body;
-    },
-    getViewPort: function (win) {
-      return global$2.DOM.getViewPort(win);
-    },
-    get: function (id) {
-      return document.getElementById(id);
-    },
-    addClass: function (elm, cls) {
-      return global$2.DOM.addClass(elm, cls);
-    },
-    removeClass: function (elm, cls) {
-      return global$2.DOM.removeClass(elm, cls);
-    },
-    hasClass: function (elm, cls) {
-      return global$2.DOM.hasClass(elm, cls);
-    },
-    toggleClass: function (elm, cls, state) {
-      return global$2.DOM.toggleClass(elm, cls, state);
-    },
-    css: function (elm, name$$1, value) {
-      return global$2.DOM.setStyle(elm, name$$1, value);
-    },
-    getRuntimeStyle: function (elm, name$$1) {
-      return global$2.DOM.getStyle(elm, name$$1, true);
-    },
-    on: function (target, name$$1, callback, scope) {
-      return global$2.DOM.bind(target, name$$1, callback, scope);
-    },
-    off: function (target, name$$1, callback) {
-      return global$2.DOM.unbind(target, name$$1, callback);
-    },
-    fire: function (target, name$$1, args) {
-      return global$2.DOM.fire(target, name$$1, args);
-    },
-    innerHtml: function (elm, html) {
-      global$2.DOM.setHTML(elm, html);
-    }
-  };
-
-  var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
-
-  var global$8 = tinymce.util.Tools.resolve('tinymce.util.Class');
-
-  var global$9 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');
-
-  var $_4kbuyt18pjjgwek1w = {
-    parseBox: function (value) {
-      var len;
-      var radix = 10;
-      if (!value) {
-        return;
-      }
-      if (typeof value === 'number') {
-        value = value || 0;
-        return {
-          top: value,
-          left: value,
-          bottom: value,
-          right: value
-        };
-      }
-      value = value.split(' ');
-      len = value.length;
-      if (len === 1) {
-        value[1] = value[2] = value[3] = value[0];
-      } else if (len === 2) {
-        value[2] = value[0];
-        value[3] = value[1];
-      } else if (len === 3) {
-        value[3] = value[1];
-      }
-      return {
-        top: parseInt(value[0], radix) || 0,
-        right: parseInt(value[1], radix) || 0,
-        bottom: parseInt(value[2], radix) || 0,
-        left: parseInt(value[3], radix) || 0
-      };
-    },
-    measureBox: function (elm, prefix) {
-      function getStyle(name) {
-        var defaultView = elm.ownerDocument.defaultView;
-        if (defaultView) {
-          var computedStyle = defaultView.getComputedStyle(elm, null);
-          if (computedStyle) {
-            name = name.replace(/[A-Z]/g, function (a) {
-              return '-' + a;
-            });
-            return computedStyle.getPropertyValue(name);
+          this.cls.splice(i, 1);
+          delete this.cls._map[cls];
+          this._change();
+        }
+        return this;
+      },
+      toggle: function (cls, state) {
+        var curState = this.contains(cls);
+        if (curState !== state) {
+          if (curState) {
+            this.remove(cls);
           } else {
-            return null;
+            this.add(cls);
           }
+          this._change();
         }
-        return elm.currentStyle[name];
+        return this;
+      },
+      contains: function (cls) {
+        return !!this.cls._map[cls];
+      },
+      _change: function () {
+        delete this.clsValue;
+        this.onchange.call(this);
       }
-      function getSide(name) {
-        var val = parseFloat(getStyle(name));
-        return isNaN(val) ? 0 : val;
+    });
+    ClassList.prototype.toString = function () {
+      var value;
+      if (this.clsValue) {
+        return this.clsValue;
       }
-      return {
-        top: getSide(prefix + 'TopWidth'),
-        right: getSide(prefix + 'RightWidth'),
-        bottom: getSide(prefix + 'BottomWidth'),
-        left: getSide(prefix + 'LeftWidth')
-      };
-    }
-  };
-
-  function noop$1() {
-  }
-  function ClassList(onchange) {
-    this.cls = [];
-    this.cls._map = {};
-    this.onchange = onchange || noop$1;
-    this.prefix = '';
-  }
-  global$4.extend(ClassList.prototype, {
-    add: function (cls) {
-      if (cls && !this.contains(cls)) {
-        this.cls._map[cls] = true;
-        this.cls.push(cls);
-        this._change();
-      }
-      return this;
-    },
-    remove: function (cls) {
-      if (this.contains(cls)) {
-        var i = void 0;
-        for (i = 0; i < this.cls.length; i++) {
-          if (this.cls[i] === cls) {
-            break;
-          }
+      value = '';
+      for (var i = 0; i < this.cls.length; i++) {
+        if (i > 0) {
+          value += ' ';
         }
-        this.cls.splice(i, 1);
-        delete this.cls._map[cls];
-        this._change();
+        value += this.prefix + this.cls[i];
       }
-      return this;
-    },
-    toggle: function (cls, state) {
-      var curState = this.contains(cls);
-      if (curState !== state) {
-        if (curState) {
-          this.remove(cls);
-        } else {
-          this.add(cls);
+      return value;
+    };
+
+    function unique(array) {
+      var uniqueItems = [];
+      var i = array.length, item;
+      while (i--) {
+        item = array[i];
+        if (!item.__checked) {
+          uniqueItems.push(item);
+          item.__checked = 1;
         }
-        this._change();
       }
-      return this;
-    },
-    contains: function (cls) {
-      return !!this.cls._map[cls];
-    },
-    _change: function () {
-      delete this.clsValue;
-      this.onchange.call(this);
-    }
-  });
-  ClassList.prototype.toString = function () {
-    var value;
-    if (this.clsValue) {
-      return this.clsValue;
-    }
-    value = '';
-    for (var i = 0; i < this.cls.length; i++) {
-      if (i > 0) {
-        value += ' ';
+      i = uniqueItems.length;
+      while (i--) {
+        delete uniqueItems[i].__checked;
       }
-      value += this.prefix + this.cls[i];
+      return uniqueItems;
     }
-    return value;
-  };
-
-  function unique(array) {
-    var uniqueItems = [];
-    var i = array.length, item;
-    while (i--) {
-      item = array[i];
-      if (!item.__checked) {
-        uniqueItems.push(item);
-        item.__checked = 1;
-      }
-    }
-    i = uniqueItems.length;
-    while (i--) {
-      delete uniqueItems[i].__checked;
-    }
-    return uniqueItems;
-  }
-  var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
-  var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;
-  var whiteSpace = /^\s*|\s*$/g;
-  var Collection;
-  var Selector = global$8.extend({
-    init: function (selector) {
-      var match = this.match;
-      function compileNameFilter(name) {
-        if (name) {
-          name = name.toLowerCase();
-          return function (item) {
-            return name === '*' || item.type === name;
-          };
+    var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
+    var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;
+    var whiteSpace = /^\s*|\s*$/g;
+    var Collection;
+    var Selector = global$8.extend({
+      init: function (selector) {
+        var match = this.match;
+        function compileNameFilter(name) {
+          if (name) {
+            name = name.toLowerCase();
+            return function (item) {
+              return name === '*' || item.type === name;
+            };
+          }
         }
-      }
-      function compileIdFilter(id) {
-        if (id) {
-          return function (item) {
-            return item._name === id;
-          };
+        function compileIdFilter(id) {
+          if (id) {
+            return function (item) {
+              return item._name === id;
+            };
+          }
         }
-      }
-      function compileClassesFilter(classes) {
-        if (classes) {
-          classes = classes.split('.');
-          return function (item) {
-            var i = classes.length;
-            while (i--) {
-              if (!item.classes.contains(classes[i])) {
-                return false;
+        function compileClassesFilter(classes) {
+          if (classes) {
+            classes = classes.split('.');
+            return function (item) {
+              var i = classes.length;
+              while (i--) {
+                if (!item.classes.contains(classes[i])) {
+                  return false;
+                }
               }
-            }
-            return true;
-          };
+              return true;
+            };
+          }
         }
-      }
-      function compileAttrFilter(name, cmp, check) {
-        if (name) {
-          return function (item) {
-            var value = item[name] ? item[name]() : '';
-            return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;
-          };
-        }
-      }
-      function compilePsuedoFilter(name) {
-        var notSelectors;
-        if (name) {
-          name = /(?:not\((.+)\))|(.+)/i.exec(name);
-          if (!name[1]) {
-            name = name[2];
-            return function (item, index, length) {
-              return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;
+        function compileAttrFilter(name, cmp, check) {
+          if (name) {
+            return function (item) {
+              var value = item[name] ? item[name]() : '';
+              return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;
             };
           }
-          notSelectors = parseChunks(name[1], []);
-          return function (item) {
-            return !match(item, notSelectors);
-          };
         }
-      }
-      function compile(selector, filters, direct) {
-        var parts;
-        function add(filter) {
-          if (filter) {
-            filters.push(filter);
+        function compilePsuedoFilter(name) {
+          var notSelectors;
+          if (name) {
+            name = /(?:not\((.+)\))|(.+)/i.exec(name);
+            if (!name[1]) {
+              name = name[2];
+              return function (item, index, length) {
+                return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;
+              };
+            }
+            notSelectors = parseChunks(name[1], []);
+            return function (item) {
+              return !match(item, notSelectors);
+            };
           }
         }
-        parts = expression.exec(selector.replace(whiteSpace, ''));
-        add(compileNameFilter(parts[1]));
-        add(compileIdFilter(parts[2]));
-        add(compileClassesFilter(parts[3]));
-        add(compileAttrFilter(parts[4], parts[5], parts[6]));
-        add(compilePsuedoFilter(parts[7]));
-        filters.pseudo = !!parts[7];
-        filters.direct = direct;
-        return filters;
-      }
-      function parseChunks(selector, selectors) {
-        var parts = [];
-        var extra, matches, i;
-        do {
-          chunker.exec('');
-          matches = chunker.exec(selector);
-          if (matches) {
-            selector = matches[3];
-            parts.push(matches[1]);
-            if (matches[2]) {
-              extra = matches[3];
-              break;
+        function compile(selector, filters, direct) {
+          var parts;
+          function add(filter) {
+            if (filter) {
+              filters.push(filter);
             }
           }
-        } while (matches);
-        if (extra) {
-          parseChunks(extra, selectors);
+          parts = expression.exec(selector.replace(whiteSpace, ''));
+          add(compileNameFilter(parts[1]));
+          add(compileIdFilter(parts[2]));
+          add(compileClassesFilter(parts[3]));
+          add(compileAttrFilter(parts[4], parts[5], parts[6]));
+          add(compilePsuedoFilter(parts[7]));
+          filters.pseudo = !!parts[7];
+          filters.direct = direct;
+          return filters;
         }
-        selector = [];
-        for (i = 0; i < parts.length; i++) {
-          if (parts[i] !== '>') {
-            selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+        function parseChunks(selector, selectors) {
+          var parts = [];
+          var extra, matches, i;
+          do {
+            chunker.exec('');
+            matches = chunker.exec(selector);
+            if (matches) {
+              selector = matches[3];
+              parts.push(matches[1]);
+              if (matches[2]) {
+                extra = matches[3];
+                break;
+              }
+            }
+          } while (matches);
+          if (extra) {
+            parseChunks(extra, selectors);
           }
+          selector = [];
+          for (i = 0; i < parts.length; i++) {
+            if (parts[i] !== '>') {
+              selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+            }
+          }
+          selectors.push(selector);
+          return selectors;
         }
-        selectors.push(selector);
-        return selectors;
-      }
-      this._selectors = parseChunks(selector, []);
-    },
-    match: function (control, selectors) {
-      var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
-      selectors = selectors || this._selectors;
-      for (i = 0, l = selectors.length; i < l; i++) {
-        selector = selectors[i];
-        sl = selector.length;
-        item = control;
-        count = 0;
-        for (si = sl - 1; si >= 0; si--) {
-          filters = selector[si];
-          while (item) {
-            if (filters.pseudo) {
-              siblings = item.parent().items();
-              index = length = siblings.length;
-              while (index--) {
-                if (siblings[index] === item) {
+        this._selectors = parseChunks(selector, []);
+      },
+      match: function (control, selectors) {
+        var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
+        selectors = selectors || this._selectors;
+        for (i = 0, l = selectors.length; i < l; i++) {
+          selector = selectors[i];
+          sl = selector.length;
+          item = control;
+          count = 0;
+          for (si = sl - 1; si >= 0; si--) {
+            filters = selector[si];
+            while (item) {
+              if (filters.pseudo) {
+                siblings = item.parent().items();
+                index = length = siblings.length;
+                while (index--) {
+                  if (siblings[index] === item) {
+                    break;
+                  }
+                }
+              }
+              for (fi = 0, fl = filters.length; fi < fl; fi++) {
+                if (!filters[fi](item, index, length)) {
+                  fi = fl + 1;
                   break;
                 }
               }
+              if (fi === fl) {
+                count++;
+                break;
+              } else {
+                if (si === sl - 1) {
+                  break;
+                }
+              }
+              item = item.parent();
             }
+          }
+          if (count === sl) {
+            return true;
+          }
+        }
+        return false;
+      },
+      find: function (container) {
+        var matches = [], i, l;
+        var selectors = this._selectors;
+        function collect(items, selector, index) {
+          var i, l, fi, fl, item;
+          var filters = selector[index];
+          for (i = 0, l = items.length; i < l; i++) {
+            item = items[i];
             for (fi = 0, fl = filters.length; fi < fl; fi++) {
-              if (!filters[fi](item, index, length)) {
+              if (!filters[fi](item, i, l)) {
                 fi = fl + 1;
                 break;
               }
             }
             if (fi === fl) {
-              count++;
-              break;
-            } else {
-              if (si === sl - 1) {
-                break;
+              if (index === selector.length - 1) {
+                matches.push(item);
+              } else {
+                if (item.items) {
+                  collect(item.items(), selector, index + 1);
+                }
               }
+            } else if (filters.direct) {
+              return;
             }
-            item = item.parent();
+            if (item.items) {
+              collect(item.items(), selector, index);
+            }
           }
         }
-        if (count === sl) {
-          return true;
-        }
-      }
-      return false;
-    },
-    find: function (container) {
-      var matches = [], i, l;
-      var selectors = this._selectors;
-      function collect(items, selector, index) {
-        var i, l, fi, fl, item;
-        var filters = selector[index];
-        for (i = 0, l = items.length; i < l; i++) {
-          item = items[i];
-          for (fi = 0, fl = filters.length; fi < fl; fi++) {
-            if (!filters[fi](item, i, l)) {
-              fi = fl + 1;
-              break;
-            }
+        if (container.items) {
+          for (i = 0, l = selectors.length; i < l; i++) {
+            collect(container.items(), selectors[i], 0);
           }
-          if (fi === fl) {
-            if (index === selector.length - 1) {
-              matches.push(item);
-            } else {
-              if (item.items) {
-                collect(item.items(), selector, index + 1);
-              }
-            }
-          } else if (filters.direct) {
-            return;
+          if (l > 1) {
+            matches = unique(matches);
           }
-          if (item.items) {
-            collect(item.items(), selector, index);
-          }
         }
-      }
-      if (container.items) {
-        for (i = 0, l = selectors.length; i < l; i++) {
-          collect(container.items(), selectors[i], 0);
+        if (!Collection) {
+          Collection = Selector.Collection;
         }
-        if (l > 1) {
-          matches = unique(matches);
-        }
+        return new Collection(matches);
       }
-      if (!Collection) {
-        Collection = Selector.Collection;
-      }
-      return new Collection(matches);
-    }
-  });
+    });
 
-  var Collection$1;
-  var proto;
-  var push$1 = Array.prototype.push;
-  var slice$1 = Array.prototype.slice;
-  proto = {
-    length: 0,
-    init: function (items) {
-      if (items) {
-        this.add(items);
-      }
-    },
-    add: function (items) {
-      var self = this;
-      if (!global$4.isArray(items)) {
-        if (items instanceof Collection$1) {
-          self.add(items.toArray());
+    var Collection$1, proto;
+    var push$1 = Array.prototype.push, slice$1 = Array.prototype.slice;
+    proto = {
+      length: 0,
+      init: function (items) {
+        if (items) {
+          this.add(items);
+        }
+      },
+      add: function (items) {
+        var self = this;
+        if (!global$4.isArray(items)) {
+          if (items instanceof Collection$1) {
+            self.add(items.toArray());
+          } else {
+            push$1.call(self, items);
+          }
         } else {
-          push$1.call(self, items);
+          push$1.apply(self, items);
         }
-      } else {
-        push$1.apply(self, items);
-      }
-      return self;
-    },
-    set: function (items) {
-      var self = this;
-      var len = self.length;
-      var i;
-      self.length = 0;
-      self.add(items);
-      for (i = self.length; i < len; i++) {
-        delete self[i];
-      }
-      return self;
-    },
-    filter: function (selector) {
-      var self = this;
-      var i, l;
-      var matches = [];
-      var item, match;
-      if (typeof selector === 'string') {
-        selector = new Selector(selector);
-        match = function (item) {
-          return selector.match(item);
-        };
-      } else {
-        match = selector;
-      }
-      for (i = 0, l = self.length; i < l; i++) {
-        item = self[i];
-        if (match(item)) {
-          matches.push(item);
+        return self;
+      },
+      set: function (items) {
+        var self = this;
+        var len = self.length;
+        var i;
+        self.length = 0;
+        self.add(items);
+        for (i = self.length; i < len; i++) {
+          delete self[i];
         }
-      }
-      return new Collection$1(matches);
-    },
-    slice: function () {
-      return new Collection$1(slice$1.apply(this, arguments));
-    },
-    eq: function (index) {
-      return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
-    },
-    each: function (callback) {
-      global$4.each(this, callback);
-      return this;
-    },
-    toArray: function () {
-      return global$4.toArray(this);
-    },
-    indexOf: function (ctrl) {
-      var self = this;
-      var i = self.length;
-      while (i--) {
-        if (self[i] === ctrl) {
-          break;
+        return self;
+      },
+      filter: function (selector) {
+        var self = this;
+        var i, l;
+        var matches = [];
+        var item, match;
+        if (typeof selector === 'string') {
+          selector = new Selector(selector);
+          match = function (item) {
+            return selector.match(item);
+          };
+        } else {
+          match = selector;
         }
-      }
-      return i;
-    },
-    reverse: function () {
-      return new Collection$1(global$4.toArray(this).reverse());
-    },
-    hasClass: function (cls) {
-      return this[0] ? this[0].classes.contains(cls) : false;
-    },
-    prop: function (name, value) {
-      var self = this;
-      var item;
-      if (value !== undefined) {
+        for (i = 0, l = self.length; i < l; i++) {
+          item = self[i];
+          if (match(item)) {
+            matches.push(item);
+          }
+        }
+        return new Collection$1(matches);
+      },
+      slice: function () {
+        return new Collection$1(slice$1.apply(this, arguments));
+      },
+      eq: function (index) {
+        return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+      },
+      each: function (callback) {
+        global$4.each(this, callback);
+        return this;
+      },
+      toArray: function () {
+        return global$4.toArray(this);
+      },
+      indexOf: function (ctrl) {
+        var self = this;
+        var i = self.length;
+        while (i--) {
+          if (self[i] === ctrl) {
+            break;
+          }
+        }
+        return i;
+      },
+      reverse: function () {
+        return new Collection$1(global$4.toArray(this).reverse());
+      },
+      hasClass: function (cls) {
+        return this[0] ? this[0].classes.contains(cls) : false;
+      },
+      prop: function (name, value) {
+        var self = this;
+        var item;
+        if (value !== undefined) {
+          self.each(function (item) {
+            if (item[name]) {
+              item[name](value);
+            }
+          });
+          return self;
+        }
+        item = self[0];
+        if (item && item[name]) {
+          return item[name]();
+        }
+      },
+      exec: function (name) {
+        var self = this, args = global$4.toArray(arguments).slice(1);
         self.each(function (item) {
           if (item[name]) {
-            item[name](value);
+            item[name].apply(item, args);
           }
         });
         return self;
-      }
-      item = self[0];
-      if (item && item[name]) {
-        return item[name]();
-      }
-    },
-    exec: function (name) {
-      var self = this, args = global$4.toArray(arguments).slice(1);
-      self.each(function (item) {
-        if (item[name]) {
-          item[name].apply(item, args);
+      },
+      remove: function () {
+        var i = this.length;
+        while (i--) {
+          this[i].remove();
         }
-      });
-      return self;
-    },
-    remove: function () {
-      var i = this.length;
-      while (i--) {
-        this[i].remove();
+        return this;
+      },
+      addClass: function (cls) {
+        return this.each(function (item) {
+          item.classes.add(cls);
+        });
+      },
+      removeClass: function (cls) {
+        return this.each(function (item) {
+          item.classes.remove(cls);
+        });
       }
-      return this;
-    },
-    addClass: function (cls) {
-      return this.each(function (item) {
-        item.classes.add(cls);
-      });
-    },
-    removeClass: function (cls) {
-      return this.each(function (item) {
-        item.classes.remove(cls);
-      });
-    }
-  };
-  global$4.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {
-    proto[name] = function () {
-      var args = global$4.toArray(arguments);
-      this.each(function (ctrl) {
-        if (name in ctrl) {
-          ctrl[name].apply(ctrl, args);
-        }
-      });
-      return this;
     };
-  });
-  global$4.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {
-    proto[name] = function (value) {
-      return this.prop(name, value);
+    global$4.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {
+      proto[name] = function () {
+        var args = global$4.toArray(arguments);
+        this.each(function (ctrl) {
+          if (name in ctrl) {
+            ctrl[name].apply(ctrl, args);
+          }
+        });
+        return this;
+      };
+    });
+    global$4.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {
+      proto[name] = function (value) {
+        return this.prop(name, value);
+      };
+    });
+    Collection$1 = global$8.extend(proto);
+    Selector.Collection = Collection$1;
+    var Collection$2 = Collection$1;
+
+    var Binding = function (settings) {
+      this.create = settings.create;
     };
-  });
-  Collection$1 = global$8.extend(proto);
-  Selector.Collection = Collection$1;
-  var Collection$2 = Collection$1;
-
-  var Binding = function (settings) {
-    this.create = settings.create;
-  };
-  Binding.create = function (model, name) {
-    return new Binding({
-      create: function (otherModel, otherName) {
-        var bindings;
-        var fromSelfToOther = function (e) {
-          otherModel.set(otherName, e.value);
-        };
-        var fromOtherToSelf = function (e) {
-          model.set(name, e.value);
-        };
-        otherModel.on('change:' + otherName, fromOtherToSelf);
-        model.on('change:' + name, fromSelfToOther);
-        bindings = otherModel._bindings;
-        if (!bindings) {
-          bindings = otherModel._bindings = [];
-          otherModel.on('destroy', function () {
-            var i = bindings.length;
-            while (i--) {
-              bindings[i]();
-            }
+    Binding.create = function (model, name) {
+      return new Binding({
+        create: function (otherModel, otherName) {
+          var bindings;
+          var fromSelfToOther = function (e) {
+            otherModel.set(otherName, e.value);
+          };
+          var fromOtherToSelf = function (e) {
+            model.set(name, e.value);
+          };
+          otherModel.on('change:' + otherName, fromOtherToSelf);
+          model.on('change:' + name, fromSelfToOther);
+          bindings = otherModel._bindings;
+          if (!bindings) {
+            bindings = otherModel._bindings = [];
+            otherModel.on('destroy', function () {
+              var i = bindings.length;
+              while (i--) {
+                bindings[i]();
+              }
+            });
+          }
+          bindings.push(function () {
+            model.off('change:' + name, fromSelfToOther);
           });
+          return model.get(name);
         }
-        bindings.push(function () {
-          model.off('change:' + name, fromSelfToOther);
-        });
-        return model.get(name);
-      }
-    });
-  };
+      });
+    };
 
-  var global$10 = tinymce.util.Tools.resolve('tinymce.util.Observable');
+    var global$a = tinymce.util.Tools.resolve('tinymce.util.Observable');
 
-  function isNode(node) {
-    return node.nodeType > 0;
-  }
-  function isEqual(a, b) {
-    var k, checked;
-    if (a === b) {
-      return true;
+    function isNode(node) {
+      return node.nodeType > 0;
     }
-    if (a === null || b === null) {
-      return a === b;
-    }
-    if (typeof a !== 'object' || typeof b !== 'object') {
-      return a === b;
-    }
-    if (global$4.isArray(b)) {
-      if (a.length !== b.length) {
-        return false;
+    function isEqual(a, b) {
+      var k, checked;
+      if (a === b) {
+        return true;
       }
-      k = a.length;
-      while (k--) {
+      if (a === null || b === null) {
+        return a === b;
+      }
+      if (typeof a !== 'object' || typeof b !== 'object') {
+        return a === b;
+      }
+      if (global$4.isArray(b)) {
+        if (a.length !== b.length) {
+          return false;
+        }
+        k = a.length;
+        while (k--) {
+          if (!isEqual(a[k], b[k])) {
+            return false;
+          }
+        }
+      }
+      if (isNode(a) || isNode(b)) {
+        return a === b;
+      }
+      checked = {};
+      for (k in b) {
         if (!isEqual(a[k], b[k])) {
           return false;
         }
+        checked[k] = true;
       }
-    }
-    if (isNode(a) || isNode(b)) {
-      return a === b;
-    }
-    checked = {};
-    for (k in b) {
-      if (!isEqual(a[k], b[k])) {
-        return false;
+      for (k in a) {
+        if (!checked[k] && !isEqual(a[k], b[k])) {
+          return false;
+        }
       }
-      checked[k] = true;
+      return true;
     }
-    for (k in a) {
-      if (!checked[k] && !isEqual(a[k], b[k])) {
-        return false;
-      }
-    }
-    return true;
-  }
-  var ObservableObject = global$8.extend({
-    Mixins: [global$10],
-    init: function (data) {
-      var name, value;
-      data = data || {};
-      for (name in data) {
-        value = data[name];
+    var ObservableObject = global$8.extend({
+      Mixins: [global$a],
+      init: function (data) {
+        var name, value;
+        data = data || {};
+        for (name in data) {
+          value = data[name];
+          if (value instanceof Binding) {
+            data[name] = value.create(this, name);
+          }
+        }
+        this.data = data;
+      },
+      set: function (name, value) {
+        var key, args;
+        var oldValue = this.data[name];
         if (value instanceof Binding) {
-          data[name] = value.create(this, name);
+          value = value.create(this, name);
         }
-      }
-      this.data = data;
-    },
-    set: function (name, value) {
-      var key, args;
-      var oldValue = this.data[name];
-      if (value instanceof Binding) {
-        value = value.create(this, name);
-      }
-      if (typeof name === 'object') {
-        for (key in name) {
-          this.set(key, name[key]);
+        if (typeof name === 'object') {
+          for (key in name) {
+            this.set(key, name[key]);
+          }
+          return this;
         }
+        if (!isEqual(oldValue, value)) {
+          this.data[name] = value;
+          args = {
+            target: this,
+            name: name,
+            value: value,
+            oldValue: oldValue
+          };
+          this.fire('change:' + name, args);
+          this.fire('change', args);
+        }
         return this;
+      },
+      get: function (name) {
+        return this.data[name];
+      },
+      has: function (name) {
+        return name in this.data;
+      },
+      bind: function (name) {
+        return Binding.create(this, name);
+      },
+      destroy: function () {
+        this.fire('destroy');
       }
-      if (!isEqual(oldValue, value)) {
-        this.data[name] = value;
-        args = {
-          target: this,
-          name: name,
-          value: value,
-          oldValue: oldValue
-        };
-        this.fire('change:' + name, args);
-        this.fire('change', args);
+    });
+
+    var dirtyCtrls = {}, animationFrameRequested;
+    var ReflowQueue = {
+      add: function (ctrl) {
+        var parent$$1 = ctrl.parent();
+        if (parent$$1) {
+          if (!parent$$1._layout || parent$$1._layout.isNative()) {
+            return;
+          }
+          if (!dirtyCtrls[parent$$1._id]) {
+            dirtyCtrls[parent$$1._id] = parent$$1;
+          }
+          if (!animationFrameRequested) {
+            animationFrameRequested = true;
+            global$3.requestAnimationFrame(function () {
+              var id, ctrl;
+              animationFrameRequested = false;
+              for (id in dirtyCtrls) {
+                ctrl = dirtyCtrls[id];
+                if (ctrl.state.get('rendered')) {
+                  ctrl.reflow();
+                }
+              }
+              dirtyCtrls = {};
+            }, document.body);
+          }
+        }
+      },
+      remove: function (ctrl) {
+        if (dirtyCtrls[ctrl._id]) {
+          delete dirtyCtrls[ctrl._id];
+        }
       }
-      return this;
-    },
-    get: function (name) {
-      return this.data[name];
-    },
-    has: function (name) {
-      return name in this.data;
-    },
-    bind: function (name) {
-      return Binding.create(this, name);
-    },
-    destroy: function () {
-      this.fire('destroy');
-    }
-  });
+    };
 
-  var dirtyCtrls = {};
-  var animationFrameRequested;
-  var $_cqjgb518wjjgwek2f = {
-    add: function (ctrl) {
-      var parent$$1 = ctrl.parent();
-      if (parent$$1) {
-        if (!parent$$1._layout || parent$$1._layout.isNative()) {
-          return;
+    var getUiContainerDelta = function (ctrl) {
+      var uiContainer = getUiContainer(ctrl);
+      if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
+        var containerPos = global$2.DOM.getPos(uiContainer);
+        var dx = uiContainer.scrollLeft - containerPos.x;
+        var dy = uiContainer.scrollTop - containerPos.y;
+        return Option.some({
+          x: dx,
+          y: dy
+        });
+      } else {
+        return Option.none();
+      }
+    };
+    var setUiContainer = function (editor, ctrl) {
+      var uiContainer = global$2.DOM.select(editor.settings.ui_container)[0];
+      ctrl.getRoot().uiContainer = uiContainer;
+    };
+    var getUiContainer = function (ctrl) {
+      return ctrl ? ctrl.getRoot().uiContainer : null;
+    };
+    var inheritUiContainer = function (fromCtrl, toCtrl) {
+      return toCtrl.uiContainer = getUiContainer(fromCtrl);
+    };
+    var UiContainer = {
+      getUiContainerDelta: getUiContainerDelta,
+      setUiContainer: setUiContainer,
+      getUiContainer: getUiContainer,
+      inheritUiContainer: inheritUiContainer
+    };
+
+    var hasMouseWheelEventSupport = 'onmousewheel' in document;
+    var hasWheelEventSupport = false;
+    var classPrefix = 'mce-';
+    var Control, idCounter = 0;
+    var proto$1 = {
+      Statics: { classPrefix: classPrefix },
+      isRtl: function () {
+        return Control.rtl;
+      },
+      classPrefix: classPrefix,
+      init: function (settings) {
+        var self$$1 = this;
+        var classes, defaultClasses;
+        function applyClasses(classes) {
+          var i;
+          classes = classes.split(' ');
+          for (i = 0; i < classes.length; i++) {
+            self$$1.classes.add(classes[i]);
+          }
         }
-        if (!dirtyCtrls[parent$$1._id]) {
-          dirtyCtrls[parent$$1._id] = parent$$1;
+        self$$1.settings = settings = global$4.extend({}, self$$1.Defaults, settings);
+        self$$1._id = settings.id || 'mceu_' + idCounter++;
+        self$$1._aria = { role: settings.role };
+        self$$1._elmCache = {};
+        self$$1.$ = global$7;
+        self$$1.state = new ObservableObject({
+          visible: true,
+          active: false,
+          disabled: false,
+          value: ''
+        });
+        self$$1.data = new ObservableObject(settings.data);
+        self$$1.classes = new ClassList(function () {
+          if (self$$1.state.get('rendered')) {
+            self$$1.getEl().className = this.toString();
+          }
+        });
+        self$$1.classes.prefix = self$$1.classPrefix;
+        classes = settings.classes;
+        if (classes) {
+          if (self$$1.Defaults) {
+            defaultClasses = self$$1.Defaults.classes;
+            if (defaultClasses && classes !== defaultClasses) {
+              applyClasses(defaultClasses);
+            }
+          }
+          applyClasses(classes);
         }
-        if (!animationFrameRequested) {
-          animationFrameRequested = true;
-          global$3.requestAnimationFrame(function () {
-            var id, ctrl;
-            animationFrameRequested = false;
-            for (id in dirtyCtrls) {
-              ctrl = dirtyCtrls[id];
-              if (ctrl.state.get('rendered')) {
-                ctrl.reflow();
+        global$4.each('title text name visible disabled active value'.split(' '), function (name$$1) {
+          if (name$$1 in settings) {
+            self$$1[name$$1](settings[name$$1]);
+          }
+        });
+        self$$1.on('click', function () {
+          if (self$$1.disabled()) {
+            return false;
+          }
+        });
+        self$$1.settings = settings;
+        self$$1.borderBox = BoxUtils.parseBox(settings.border);
+        self$$1.paddingBox = BoxUtils.parseBox(settings.padding);
+        self$$1.marginBox = BoxUtils.parseBox(settings.margin);
+        if (settings.hidden) {
+          self$$1.hide();
+        }
+      },
+      Properties: 'parent,name',
+      getContainerElm: function () {
+        var uiContainer = UiContainer.getUiContainer(this);
+        return uiContainer ? uiContainer : funcs.getContainer();
+      },
+      getParentCtrl: function (elm) {
+        var ctrl;
+        var lookup = this.getRoot().controlIdLookup;
+        while (elm && lookup) {
+          ctrl = lookup[elm.id];
+          if (ctrl) {
+            break;
+          }
+          elm = elm.parentNode;
+        }
+        return ctrl;
+      },
+      initLayoutRect: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var borderBox, layoutRect;
+        var elm = self$$1.getEl();
+        var width, height, minWidth, minHeight, autoResize;
+        var startMinWidth, startMinHeight, initialSize;
+        borderBox = self$$1.borderBox = self$$1.borderBox || BoxUtils.measureBox(elm, 'border');
+        self$$1.paddingBox = self$$1.paddingBox || BoxUtils.measureBox(elm, 'padding');
+        self$$1.marginBox = self$$1.marginBox || BoxUtils.measureBox(elm, 'margin');
+        initialSize = funcs.getSize(elm);
+        startMinWidth = settings.minWidth;
+        startMinHeight = settings.minHeight;
+        minWidth = startMinWidth || initialSize.width;
+        minHeight = startMinHeight || initialSize.height;
+        width = settings.width;
+        height = settings.height;
+        autoResize = settings.autoResize;
+        autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;
+        width = width || minWidth;
+        height = height || minHeight;
+        var deltaW = borderBox.left + borderBox.right;
+        var deltaH = borderBox.top + borderBox.bottom;
+        var maxW = settings.maxWidth || 65535;
+        var maxH = settings.maxHeight || 65535;
+        self$$1._layoutRect = layoutRect = {
+          x: settings.x || 0,
+          y: settings.y || 0,
+          w: width,
+          h: height,
+          deltaW: deltaW,
+          deltaH: deltaH,
+          contentW: width - deltaW,
+          contentH: height - deltaH,
+          innerW: width - deltaW,
+          innerH: height - deltaH,
+          startMinWidth: startMinWidth || 0,
+          startMinHeight: startMinHeight || 0,
+          minW: Math.min(minWidth, maxW),
+          minH: Math.min(minHeight, maxH),
+          maxW: maxW,
+          maxH: maxH,
+          autoResize: autoResize,
+          scrollW: 0
+        };
+        self$$1._lastLayoutRect = {};
+        return layoutRect;
+      },
+      layoutRect: function (newRect) {
+        var self$$1 = this;
+        var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
+        if (!curRect) {
+          curRect = self$$1.initLayoutRect();
+        }
+        if (newRect) {
+          deltaWidth = curRect.deltaW;
+          deltaHeight = curRect.deltaH;
+          if (newRect.x !== undefined) {
+            curRect.x = newRect.x;
+          }
+          if (newRect.y !== undefined) {
+            curRect.y = newRect.y;
+          }
+          if (newRect.minW !== undefined) {
+            curRect.minW = newRect.minW;
+          }
+          if (newRect.minH !== undefined) {
+            curRect.minH = newRect.minH;
+          }
+          size = newRect.w;
+          if (size !== undefined) {
+            size = size < curRect.minW ? curRect.minW : size;
+            size = size > curRect.maxW ? curRect.maxW : size;
+            curRect.w = size;
+            curRect.innerW = size - deltaWidth;
+          }
+          size = newRect.h;
+          if (size !== undefined) {
+            size = size < curRect.minH ? curRect.minH : size;
+            size = size > curRect.maxH ? curRect.maxH : size;
+            curRect.h = size;
+            curRect.innerH = size - deltaHeight;
+          }
+          size = newRect.innerW;
+          if (size !== undefined) {
+            size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
+            size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
+            curRect.innerW = size;
+            curRect.w = size + deltaWidth;
+          }
+          size = newRect.innerH;
+          if (size !== undefined) {
+            size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
+            size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
+            curRect.innerH = size;
+            curRect.h = size + deltaHeight;
+          }
+          if (newRect.contentW !== undefined) {
+            curRect.contentW = newRect.contentW;
+          }
+          if (newRect.contentH !== undefined) {
+            curRect.contentH = newRect.contentH;
+          }
+          lastLayoutRect = self$$1._lastLayoutRect;
+          if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
+            repaintControls = Control.repaintControls;
+            if (repaintControls) {
+              if (repaintControls.map && !repaintControls.map[self$$1._id]) {
+                repaintControls.push(self$$1);
+                repaintControls.map[self$$1._id] = true;
               }
             }
-            dirtyCtrls = {};
-          }, document.body);
+            lastLayoutRect.x = curRect.x;
+            lastLayoutRect.y = curRect.y;
+            lastLayoutRect.w = curRect.w;
+            lastLayoutRect.h = curRect.h;
+          }
+          return self$$1;
         }
-      }
-    },
-    remove: function (ctrl) {
-      if (dirtyCtrls[ctrl._id]) {
-        delete dirtyCtrls[ctrl._id];
-      }
-    }
-  };
-
-  var getUiContainerDelta = function (ctrl) {
-    var uiContainer = getUiContainer(ctrl);
-    if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
-      var containerPos = global$2.DOM.getPos(uiContainer);
-      var dx = uiContainer.scrollLeft - containerPos.x;
-      var dy = uiContainer.scrollTop - containerPos.y;
-      return Option.some({
-        x: dx,
-        y: dy
-      });
-    } else {
-      return Option.none();
-    }
-  };
-  var setUiContainer = function (editor, ctrl) {
-    var uiContainer = global$2.DOM.select(editor.settings.ui_container)[0];
-    ctrl.getRoot().uiContainer = uiContainer;
-  };
-  var getUiContainer = function (ctrl) {
-    return ctrl ? ctrl.getRoot().uiContainer : null;
-  };
-  var inheritUiContainer = function (fromCtrl, toCtrl) {
-    return toCtrl.uiContainer = getUiContainer(fromCtrl);
-  };
-  var $_egt6ye18xjjgwek2h = {
-    getUiContainerDelta: getUiContainerDelta,
-    setUiContainer: setUiContainer,
-    getUiContainer: getUiContainer,
-    inheritUiContainer: inheritUiContainer
-  };
-
-  var hasMouseWheelEventSupport = 'onmousewheel' in document;
-  var hasWheelEventSupport = false;
-  var classPrefix = 'mce-';
-  var Control;
-  var idCounter = 0;
-  var proto$1 = {
-    Statics: { classPrefix: classPrefix },
-    isRtl: function () {
-      return Control.rtl;
-    },
-    classPrefix: classPrefix,
-    init: function (settings) {
-      var self$$1 = this;
-      var classes, defaultClasses;
-      function applyClasses(classes) {
-        var i;
-        classes = classes.split(' ');
-        for (i = 0; i < classes.length; i++) {
-          self$$1.classes.add(classes[i]);
+        return curRect;
+      },
+      repaint: function () {
+        var self$$1 = this;
+        var style, bodyStyle, bodyElm, rect, borderBox;
+        var borderW, borderH, lastRepaintRect, round, value;
+        round = !document.createRange ? Math.round : function (value) {
+          return value;
+        };
+        style = self$$1.getEl().style;
+        rect = self$$1._layoutRect;
+        lastRepaintRect = self$$1._lastRepaintRect || {};
+        borderBox = self$$1.borderBox;
+        borderW = borderBox.left + borderBox.right;
+        borderH = borderBox.top + borderBox.bottom;
+        if (rect.x !== lastRepaintRect.x) {
+          style.left = round(rect.x) + 'px';
+          lastRepaintRect.x = rect.x;
         }
-      }
-      self$$1.settings = settings = global$4.extend({}, self$$1.Defaults, settings);
-      self$$1._id = settings.id || 'mceu_' + idCounter++;
-      self$$1._aria = { role: settings.role };
-      self$$1._elmCache = {};
-      self$$1.$ = global$7;
-      self$$1.state = new ObservableObject({
-        visible: true,
-        active: false,
-        disabled: false,
-        value: ''
-      });
-      self$$1.data = new ObservableObject(settings.data);
-      self$$1.classes = new ClassList(function () {
-        if (self$$1.state.get('rendered')) {
-          self$$1.getEl().className = this.toString();
+        if (rect.y !== lastRepaintRect.y) {
+          style.top = round(rect.y) + 'px';
+          lastRepaintRect.y = rect.y;
         }
-      });
-      self$$1.classes.prefix = self$$1.classPrefix;
-      classes = settings.classes;
-      if (classes) {
-        if (self$$1.Defaults) {
-          defaultClasses = self$$1.Defaults.classes;
-          if (defaultClasses && classes !== defaultClasses) {
-            applyClasses(defaultClasses);
+        if (rect.w !== lastRepaintRect.w) {
+          value = round(rect.w - borderW);
+          style.width = (value >= 0 ? value : 0) + 'px';
+          lastRepaintRect.w = rect.w;
+        }
+        if (rect.h !== lastRepaintRect.h) {
+          value = round(rect.h - borderH);
+          style.height = (value >= 0 ? value : 0) + 'px';
+          lastRepaintRect.h = rect.h;
+        }
+        if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {
+          value = round(rect.innerW);
+          bodyElm = self$$1.getEl('body');
+          if (bodyElm) {
+            bodyStyle = bodyElm.style;
+            bodyStyle.width = (value >= 0 ? value : 0) + 'px';
           }
+          lastRepaintRect.innerW = rect.innerW;
         }
-        applyClasses(classes);
-      }
-      global$4.each('title text name visible disabled active value'.split(' '), function (name$$1) {
-        if (name$$1 in settings) {
-          self$$1[name$$1](settings[name$$1]);
+        if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {
+          value = round(rect.innerH);
+          bodyElm = bodyElm || self$$1.getEl('body');
+          if (bodyElm) {
+            bodyStyle = bodyStyle || bodyElm.style;
+            bodyStyle.height = (value >= 0 ? value : 0) + 'px';
+          }
+          lastRepaintRect.innerH = rect.innerH;
         }
-      });
-      self$$1.on('click', function () {
-        if (self$$1.disabled()) {
-          return false;
+        self$$1._lastRepaintRect = lastRepaintRect;
+        self$$1.fire('repaint', {}, false);
+      },
+      updateLayoutRect: function () {
+        var self$$1 = this;
+        self$$1.parent()._lastRect = null;
+        funcs.css(self$$1.getEl(), {
+          width: '',
+          height: ''
+        });
+        self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;
+        self$$1.initLayoutRect();
+      },
+      on: function (name$$1, callback) {
+        var self$$1 = this;
+        function resolveCallbackName(name$$1) {
+          var callback, scope;
+          if (typeof name$$1 !== 'string') {
+            return name$$1;
+          }
+          return function (e) {
+            if (!callback) {
+              self$$1.parentsAndSelf().each(function (ctrl) {
+                var callbacks = ctrl.settings.callbacks;
+                if (callbacks && (callback = callbacks[name$$1])) {
+                  scope = ctrl;
+                  return false;
+                }
+              });
+            }
+            if (!callback) {
+              e.action = name$$1;
+              this.fire('execute', e);
+              return;
+            }
+            return callback.call(scope, e);
+          };
         }
-      });
-      self$$1.settings = settings;
-      self$$1.borderBox = $_4kbuyt18pjjgwek1w.parseBox(settings.border);
-      self$$1.paddingBox = $_4kbuyt18pjjgwek1w.parseBox(settings.padding);
-      self$$1.marginBox = $_4kbuyt18pjjgwek1w.parseBox(settings.margin);
-      if (settings.hidden) {
-        self$$1.hide();
-      }
-    },
-    Properties: 'parent,name',
-    getContainerElm: function () {
-      var uiContainer = $_egt6ye18xjjgwek2h.getUiContainer(this);
-      return uiContainer ? uiContainer : funcs.getContainer();
-    },
-    getParentCtrl: function (elm) {
-      var ctrl;
-      var lookup = this.getRoot().controlIdLookup;
-      while (elm && lookup) {
-        ctrl = lookup[elm.id];
-        if (ctrl) {
-          break;
+        getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));
+        return self$$1;
+      },
+      off: function (name$$1, callback) {
+        getEventDispatcher(this).off(name$$1, callback);
+        return this;
+      },
+      fire: function (name$$1, args, bubble) {
+        var self$$1 = this;
+        args = args || {};
+        if (!args.control) {
+          args.control = self$$1;
         }
-        elm = elm.parentNode;
-      }
-      return ctrl;
-    },
-    initLayoutRect: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var borderBox, layoutRect;
-      var elm = self$$1.getEl();
-      var width, height, minWidth, minHeight, autoResize;
-      var startMinWidth, startMinHeight, initialSize;
-      borderBox = self$$1.borderBox = self$$1.borderBox || $_4kbuyt18pjjgwek1w.measureBox(elm, 'border');
-      self$$1.paddingBox = self$$1.paddingBox || $_4kbuyt18pjjgwek1w.measureBox(elm, 'padding');
-      self$$1.marginBox = self$$1.marginBox || $_4kbuyt18pjjgwek1w.measureBox(elm, 'margin');
-      initialSize = funcs.getSize(elm);
-      startMinWidth = settings.minWidth;
-      startMinHeight = settings.minHeight;
-      minWidth = startMinWidth || initialSize.width;
-      minHeight = startMinHeight || initialSize.height;
-      width = settings.width;
-      height = settings.height;
-      autoResize = settings.autoResize;
-      autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;
-      width = width || minWidth;
-      height = height || minHeight;
-      var deltaW = borderBox.left + borderBox.right;
-      var deltaH = borderBox.top + borderBox.bottom;
-      var maxW = settings.maxWidth || 65535;
-      var maxH = settings.maxHeight || 65535;
-      self$$1._layoutRect = layoutRect = {
-        x: settings.x || 0,
-        y: settings.y || 0,
-        w: width,
-        h: height,
-        deltaW: deltaW,
-        deltaH: deltaH,
-        contentW: width - deltaW,
-        contentH: height - deltaH,
-        innerW: width - deltaW,
-        innerH: height - deltaH,
-        startMinWidth: startMinWidth || 0,
-        startMinHeight: startMinHeight || 0,
-        minW: Math.min(minWidth, maxW),
-        minH: Math.min(minHeight, maxH),
-        maxW: maxW,
-        maxH: maxH,
-        autoResize: autoResize,
-        scrollW: 0
-      };
-      self$$1._lastLayoutRect = {};
-      return layoutRect;
-    },
-    layoutRect: function (newRect) {
-      var self$$1 = this;
-      var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
-      if (!curRect) {
-        curRect = self$$1.initLayoutRect();
-      }
-      if (newRect) {
-        deltaWidth = curRect.deltaW;
-        deltaHeight = curRect.deltaH;
-        if (newRect.x !== undefined) {
-          curRect.x = newRect.x;
+        args = getEventDispatcher(self$$1).fire(name$$1, args);
+        if (bubble !== false && self$$1.parent) {
+          var parent$$1 = self$$1.parent();
+          while (parent$$1 && !args.isPropagationStopped()) {
+            parent$$1.fire(name$$1, args, false);
+            parent$$1 = parent$$1.parent();
+          }
         }
-        if (newRect.y !== undefined) {
-          curRect.y = newRect.y;
+        return args;
+      },
+      hasEventListeners: function (name$$1) {
+        return getEventDispatcher(this).has(name$$1);
+      },
+      parents: function (selector) {
+        var self$$1 = this;
+        var ctrl, parents = new Collection$2();
+        for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {
+          parents.add(ctrl);
         }
-        if (newRect.minW !== undefined) {
-          curRect.minW = newRect.minW;
+        if (selector) {
+          parents = parents.filter(selector);
         }
-        if (newRect.minH !== undefined) {
-          curRect.minH = newRect.minH;
+        return parents;
+      },
+      parentsAndSelf: function (selector) {
+        return new Collection$2(this).add(this.parents(selector));
+      },
+      next: function () {
+        var parentControls = this.parent().items();
+        return parentControls[parentControls.indexOf(this) + 1];
+      },
+      prev: function () {
+        var parentControls = this.parent().items();
+        return parentControls[parentControls.indexOf(this) - 1];
+      },
+      innerHtml: function (html) {
+        this.$el.html(html);
+        return this;
+      },
+      getEl: function (suffix) {
+        var id = suffix ? this._id + '-' + suffix : this._id;
+        if (!this._elmCache[id]) {
+          this._elmCache[id] = global$7('#' + id)[0];
         }
-        size = newRect.w;
-        if (size !== undefined) {
-          size = size < curRect.minW ? curRect.minW : size;
-          size = size > curRect.maxW ? curRect.maxW : size;
-          curRect.w = size;
-          curRect.innerW = size - deltaWidth;
+        return this._elmCache[id];
+      },
+      show: function () {
+        return this.visible(true);
+      },
+      hide: function () {
+        return this.visible(false);
+      },
+      focus: function () {
+        try {
+          this.getEl().focus();
+        } catch (ex) {
         }
-        size = newRect.h;
-        if (size !== undefined) {
-          size = size < curRect.minH ? curRect.minH : size;
-          size = size > curRect.maxH ? curRect.maxH : size;
-          curRect.h = size;
-          curRect.innerH = size - deltaHeight;
+        return this;
+      },
+      blur: function () {
+        this.getEl().blur();
+        return this;
+      },
+      aria: function (name$$1, value) {
+        var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);
+        if (typeof value === 'undefined') {
+          return self$$1._aria[name$$1];
         }
-        size = newRect.innerW;
-        if (size !== undefined) {
-          size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
-          size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
-          curRect.innerW = size;
-          curRect.w = size + deltaWidth;
+        self$$1._aria[name$$1] = value;
+        if (self$$1.state.get('rendered')) {
+          elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);
         }
-        size = newRect.innerH;
-        if (size !== undefined) {
-          size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
-          size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
-          curRect.innerH = size;
-          curRect.h = size + deltaHeight;
+        return self$$1;
+      },
+      encode: function (text, translate) {
+        if (translate !== false) {
+          text = this.translate(text);
         }
-        if (newRect.contentW !== undefined) {
-          curRect.contentW = newRect.contentW;
+        return (text || '').replace(/[&<>"]/g, function (match) {
+          return '&#' + match.charCodeAt(0) + ';';
+        });
+      },
+      translate: function (text) {
+        return Control.translate ? Control.translate(text) : text;
+      },
+      before: function (items) {
+        var self$$1 = this, parent$$1 = self$$1.parent();
+        if (parent$$1) {
+          parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);
         }
-        if (newRect.contentH !== undefined) {
-          curRect.contentH = newRect.contentH;
+        return self$$1;
+      },
+      after: function (items) {
+        var self$$1 = this, parent$$1 = self$$1.parent();
+        if (parent$$1) {
+          parent$$1.insert(items, parent$$1.items().indexOf(self$$1));
         }
-        lastLayoutRect = self$$1._lastLayoutRect;
-        if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
-          repaintControls = Control.repaintControls;
-          if (repaintControls) {
-            if (repaintControls.map && !repaintControls.map[self$$1._id]) {
-              repaintControls.push(self$$1);
-              repaintControls.map[self$$1._id] = true;
-            }
+        return self$$1;
+      },
+      remove: function () {
+        var self$$1 = this;
+        var elm = self$$1.getEl();
+        var parent$$1 = self$$1.parent();
+        var newItems, i;
+        if (self$$1.items) {
+          var controls = self$$1.items().toArray();
+          i = controls.length;
+          while (i--) {
+            controls[i].remove();
           }
-          lastLayoutRect.x = curRect.x;
-          lastLayoutRect.y = curRect.y;
-          lastLayoutRect.w = curRect.w;
-          lastLayoutRect.h = curRect.h;
         }
-        return self$$1;
-      }
-      return curRect;
-    },
-    repaint: function () {
-      var self$$1 = this;
-      var style, bodyStyle, bodyElm, rect, borderBox;
-      var borderW, borderH, lastRepaintRect, round, value;
-      round = !document.createRange ? Math.round : function (value) {
-        return value;
-      };
-      style = self$$1.getEl().style;
-      rect = self$$1._layoutRect;
-      lastRepaintRect = self$$1._lastRepaintRect || {};
-      borderBox = self$$1.borderBox;
-      borderW = borderBox.left + borderBox.right;
-      borderH = borderBox.top + borderBox.bottom;
-      if (rect.x !== lastRepaintRect.x) {
-        style.left = round(rect.x) + 'px';
-        lastRepaintRect.x = rect.x;
-      }
-      if (rect.y !== lastRepaintRect.y) {
-        style.top = round(rect.y) + 'px';
-        lastRepaintRect.y = rect.y;
-      }
-      if (rect.w !== lastRepaintRect.w) {
-        value = round(rect.w - borderW);
-        style.width = (value >= 0 ? value : 0) + 'px';
-        lastRepaintRect.w = rect.w;
-      }
-      if (rect.h !== lastRepaintRect.h) {
-        value = round(rect.h - borderH);
-        style.height = (value >= 0 ? value : 0) + 'px';
-        lastRepaintRect.h = rect.h;
-      }
-      if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {
-        value = round(rect.innerW);
-        bodyElm = self$$1.getEl('body');
-        if (bodyElm) {
-          bodyStyle = bodyElm.style;
-          bodyStyle.width = (value >= 0 ? value : 0) + 'px';
+        if (parent$$1 && parent$$1.items) {
+          newItems = [];
+          parent$$1.items().each(function (item) {
+            if (item !== self$$1) {
+              newItems.push(item);
+            }
+          });
+          parent$$1.items().set(newItems);
+          parent$$1._lastRect = null;
         }
-        lastRepaintRect.innerW = rect.innerW;
-      }
-      if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {
-        value = round(rect.innerH);
-        bodyElm = bodyElm || self$$1.getEl('body');
-        if (bodyElm) {
-          bodyStyle = bodyStyle || bodyElm.style;
-          bodyStyle.height = (value >= 0 ? value : 0) + 'px';
+        if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {
+          global$7(elm).off();
         }
-        lastRepaintRect.innerH = rect.innerH;
-      }
-      self$$1._lastRepaintRect = lastRepaintRect;
-      self$$1.fire('repaint', {}, false);
-    },
-    updateLayoutRect: function () {
-      var self$$1 = this;
-      self$$1.parent()._lastRect = null;
-      funcs.css(self$$1.getEl(), {
-        width: '',
-        height: ''
-      });
-      self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;
-      self$$1.initLayoutRect();
-    },
-    on: function (name$$1, callback) {
-      var self$$1 = this;
-      function resolveCallbackName(name$$1) {
-        var callback, scope;
-        if (typeof name$$1 !== 'string') {
-          return name$$1;
+        var lookup = self$$1.getRoot().controlIdLookup;
+        if (lookup) {
+          delete lookup[self$$1._id];
         }
-        return function (e) {
-          if (!callback) {
-            self$$1.parentsAndSelf().each(function (ctrl) {
-              var callbacks = ctrl.settings.callbacks;
-              if (callbacks && (callback = callbacks[name$$1])) {
-                scope = ctrl;
-                return false;
-              }
-            });
+        if (elm && elm.parentNode) {
+          elm.parentNode.removeChild(elm);
+        }
+        self$$1.state.set('rendered', false);
+        self$$1.state.destroy();
+        self$$1.fire('remove');
+        return self$$1;
+      },
+      renderBefore: function (elm) {
+        global$7(elm).before(this.renderHtml());
+        this.postRender();
+        return this;
+      },
+      renderTo: function (elm) {
+        global$7(elm || this.getContainerElm()).append(this.renderHtml());
+        this.postRender();
+        return this;
+      },
+      preRender: function () {
+      },
+      render: function () {
+      },
+      renderHtml: function () {
+        return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
+      },
+      postRender: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var elm, box, parent$$1, name$$1, parentEventsRoot;
+        self$$1.$el = global$7(self$$1.getEl());
+        self$$1.state.set('rendered', true);
+        for (name$$1 in settings) {
+          if (name$$1.indexOf('on') === 0) {
+            self$$1.on(name$$1.substr(2), settings[name$$1]);
           }
-          if (!callback) {
-            e.action = name$$1;
-            this.fire('execute', e);
-            return;
+        }
+        if (self$$1._eventsRoot) {
+          for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {
+            parentEventsRoot = parent$$1._eventsRoot;
           }
-          return callback.call(scope, e);
-        };
-      }
-      getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));
-      return self$$1;
-    },
-    off: function (name$$1, callback) {
-      getEventDispatcher(this).off(name$$1, callback);
-      return this;
-    },
-    fire: function (name$$1, args, bubble) {
-      var self$$1 = this;
-      args = args || {};
-      if (!args.control) {
-        args.control = self$$1;
-      }
-      args = getEventDispatcher(self$$1).fire(name$$1, args);
-      if (bubble !== false && self$$1.parent) {
-        var parent$$1 = self$$1.parent();
-        while (parent$$1 && !args.isPropagationStopped()) {
-          parent$$1.fire(name$$1, args, false);
-          parent$$1 = parent$$1.parent();
+          if (parentEventsRoot) {
+            for (name$$1 in parentEventsRoot._nativeEvents) {
+              self$$1._nativeEvents[name$$1] = true;
+            }
+          }
         }
-      }
-      return args;
-    },
-    hasEventListeners: function (name$$1) {
-      return getEventDispatcher(this).has(name$$1);
-    },
-    parents: function (selector) {
-      var self$$1 = this;
-      var ctrl, parents = new Collection$2();
-      for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {
-        parents.add(ctrl);
-      }
-      if (selector) {
-        parents = parents.filter(selector);
-      }
-      return parents;
-    },
-    parentsAndSelf: function (selector) {
-      return new Collection$2(this).add(this.parents(selector));
-    },
-    next: function () {
-      var parentControls = this.parent().items();
-      return parentControls[parentControls.indexOf(this) + 1];
-    },
-    prev: function () {
-      var parentControls = this.parent().items();
-      return parentControls[parentControls.indexOf(this) - 1];
-    },
-    innerHtml: function (html) {
-      this.$el.html(html);
-      return this;
-    },
-    getEl: function (suffix) {
-      var id = suffix ? this._id + '-' + suffix : this._id;
-      if (!this._elmCache[id]) {
-        this._elmCache[id] = global$7('#' + id)[0];
-      }
-      return this._elmCache[id];
-    },
-    show: function () {
-      return this.visible(true);
-    },
-    hide: function () {
-      return this.visible(false);
-    },
-    focus: function () {
-      try {
-        this.getEl().focus();
-      } catch (ex) {
-      }
-      return this;
-    },
-    blur: function () {
-      this.getEl().blur();
-      return this;
-    },
-    aria: function (name$$1, value) {
-      var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);
-      if (typeof value === 'undefined') {
-        return self$$1._aria[name$$1];
-      }
-      self$$1._aria[name$$1] = value;
-      if (self$$1.state.get('rendered')) {
-        elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);
-      }
-      return self$$1;
-    },
-    encode: function (text, translate) {
-      if (translate !== false) {
-        text = this.translate(text);
-      }
-      return (text || '').replace(/[&<>"]/g, function (match) {
-        return '&#' + match.charCodeAt(0) + ';';
-      });
-    },
-    translate: function (text) {
-      return Control.translate ? Control.translate(text) : text;
-    },
-    before: function (items) {
-      var self$$1 = this, parent$$1 = self$$1.parent();
-      if (parent$$1) {
-        parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);
-      }
-      return self$$1;
-    },
-    after: function (items) {
-      var self$$1 = this, parent$$1 = self$$1.parent();
-      if (parent$$1) {
-        parent$$1.insert(items, parent$$1.items().indexOf(self$$1));
-      }
-      return self$$1;
-    },
-    remove: function () {
-      var self$$1 = this;
-      var elm = self$$1.getEl();
-      var parent$$1 = self$$1.parent();
-      var newItems, i;
-      if (self$$1.items) {
-        var controls = self$$1.items().toArray();
-        i = controls.length;
-        while (i--) {
-          controls[i].remove();
+        bindPendingEvents(self$$1);
+        if (settings.style) {
+          elm = self$$1.getEl();
+          if (elm) {
+            elm.setAttribute('style', settings.style);
+            elm.style.cssText = settings.style;
+          }
         }
-      }
-      if (parent$$1 && parent$$1.items) {
-        newItems = [];
-        parent$$1.items().each(function (item) {
-          if (item !== self$$1) {
-            newItems.push(item);
+        if (self$$1.settings.border) {
+          box = self$$1.borderBox;
+          self$$1.$el.css({
+            'border-top-width': box.top,
+            'border-right-width': box.right,
+            'border-bottom-width': box.bottom,
+            'border-left-width': box.left
+          });
+        }
+        var root = self$$1.getRoot();
+        if (!root.controlIdLookup) {
+          root.controlIdLookup = {};
+        }
+        root.controlIdLookup[self$$1._id] = self$$1;
+        for (var key in self$$1._aria) {
+          self$$1.aria(key, self$$1._aria[key]);
+        }
+        if (self$$1.state.get('visible') === false) {
+          self$$1.getEl().style.display = 'none';
+        }
+        self$$1.bindStates();
+        self$$1.state.on('change:visible', function (e) {
+          var state = e.value;
+          var parentCtrl;
+          if (self$$1.state.get('rendered')) {
+            self$$1.getEl().style.display = state === false ? 'none' : '';
+            self$$1.getEl().getBoundingClientRect();
           }
+          parentCtrl = self$$1.parent();
+          if (parentCtrl) {
+            parentCtrl._lastRect = null;
+          }
+          self$$1.fire(state ? 'show' : 'hide');
+          ReflowQueue.add(self$$1);
         });
-        parent$$1.items().set(newItems);
-        parent$$1._lastRect = null;
-      }
-      if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {
-        global$7(elm).off();
-      }
-      var lookup = self$$1.getRoot().controlIdLookup;
-      if (lookup) {
-        delete lookup[self$$1._id];
-      }
-      if (elm && elm.parentNode) {
-        elm.parentNode.removeChild(elm);
-      }
-      self$$1.state.set('rendered', false);
-      self$$1.state.destroy();
-      self$$1.fire('remove');
-      return self$$1;
-    },
-    renderBefore: function (elm) {
-      global$7(elm).before(this.renderHtml());
-      this.postRender();
-      return this;
-    },
-    renderTo: function (elm) {
-      global$7(elm || this.getContainerElm()).append(this.renderHtml());
-      this.postRender();
-      return this;
-    },
-    preRender: function () {
-    },
-    render: function () {
-    },
-    renderHtml: function () {
-      return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
-    },
-    postRender: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var elm, box, parent$$1, name$$1, parentEventsRoot;
-      self$$1.$el = global$7(self$$1.getEl());
-      self$$1.state.set('rendered', true);
-      for (name$$1 in settings) {
-        if (name$$1.indexOf('on') === 0) {
-          self$$1.on(name$$1.substr(2), settings[name$$1]);
+        self$$1.fire('postrender', {}, false);
+      },
+      bindStates: function () {
+      },
+      scrollIntoView: function (align) {
+        function getOffset(elm, rootElm) {
+          var x, y, parent$$1 = elm;
+          x = y = 0;
+          while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {
+            x += parent$$1.offsetLeft || 0;
+            y += parent$$1.offsetTop || 0;
+            parent$$1 = parent$$1.offsetParent;
+          }
+          return {
+            x: x,
+            y: y
+          };
         }
-      }
-      if (self$$1._eventsRoot) {
-        for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {
-          parentEventsRoot = parent$$1._eventsRoot;
+        var elm = this.getEl(), parentElm = elm.parentNode;
+        var x, y, width, height, parentWidth, parentHeight;
+        var pos = getOffset(elm, parentElm);
+        x = pos.x;
+        y = pos.y;
+        width = elm.offsetWidth;
+        height = elm.offsetHeight;
+        parentWidth = parentElm.clientWidth;
+        parentHeight = parentElm.clientHeight;
+        if (align === 'end') {
+          x -= parentWidth - width;
+          y -= parentHeight - height;
+        } else if (align === 'center') {
+          x -= parentWidth / 2 - width / 2;
+          y -= parentHeight / 2 - height / 2;
         }
-        if (parentEventsRoot) {
-          for (name$$1 in parentEventsRoot._nativeEvents) {
-            self$$1._nativeEvents[name$$1] = true;
+        parentElm.scrollLeft = x;
+        parentElm.scrollTop = y;
+        return this;
+      },
+      getRoot: function () {
+        var ctrl = this, rootControl;
+        var parents = [];
+        while (ctrl) {
+          if (ctrl.rootControl) {
+            rootControl = ctrl.rootControl;
+            break;
           }
+          parents.push(ctrl);
+          rootControl = ctrl;
+          ctrl = ctrl.parent();
         }
-      }
-      bindPendingEvents(self$$1);
-      if (settings.style) {
-        elm = self$$1.getEl();
-        if (elm) {
-          elm.setAttribute('style', settings.style);
-          elm.style.cssText = settings.style;
+        if (!rootControl) {
+          rootControl = this;
         }
-      }
-      if (self$$1.settings.border) {
-        box = self$$1.borderBox;
-        self$$1.$el.css({
-          'border-top-width': box.top,
-          'border-right-width': box.right,
-          'border-bottom-width': box.bottom,
-          'border-left-width': box.left
-        });
-      }
-      var root = self$$1.getRoot();
-      if (!root.controlIdLookup) {
-        root.controlIdLookup = {};
-      }
-      root.controlIdLookup[self$$1._id] = self$$1;
-      for (var key in self$$1._aria) {
-        self$$1.aria(key, self$$1._aria[key]);
-      }
-      if (self$$1.state.get('visible') === false) {
-        self$$1.getEl().style.display = 'none';
-      }
-      self$$1.bindStates();
-      self$$1.state.on('change:visible', function (e) {
-        var state = e.value;
-        var parentCtrl;
-        if (self$$1.state.get('rendered')) {
-          self$$1.getEl().style.display = state === false ? 'none' : '';
-          self$$1.getEl().getBoundingClientRect();
+        var i = parents.length;
+        while (i--) {
+          parents[i].rootControl = rootControl;
         }
-        parentCtrl = self$$1.parent();
-        if (parentCtrl) {
-          parentCtrl._lastRect = null;
+        return rootControl;
+      },
+      reflow: function () {
+        ReflowQueue.remove(this);
+        var parent$$1 = this.parent();
+        if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {
+          parent$$1.reflow();
         }
-        self$$1.fire(state ? 'show' : 'hide');
-        $_cqjgb518wjjgwek2f.add(self$$1);
-      });
-      self$$1.fire('postrender', {}, false);
-    },
-    bindStates: function () {
-    },
-    scrollIntoView: function (align) {
-      function getOffset(elm, rootElm) {
-        var x, y, parent$$1 = elm;
-        x = y = 0;
-        while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {
-          x += parent$$1.offsetLeft || 0;
-          y += parent$$1.offsetTop || 0;
-          parent$$1 = parent$$1.offsetParent;
-        }
-        return {
-          x: x,
-          y: y
-        };
+        return this;
       }
-      var elm = this.getEl(), parentElm = elm.parentNode;
-      var x, y, width, height, parentWidth, parentHeight;
-      var pos = getOffset(elm, parentElm);
-      x = pos.x;
-      y = pos.y;
-      width = elm.offsetWidth;
-      height = elm.offsetHeight;
-      parentWidth = parentElm.clientWidth;
-      parentHeight = parentElm.clientHeight;
-      if (align === 'end') {
-        x -= parentWidth - width;
-        y -= parentHeight - height;
-      } else if (align === 'center') {
-        x -= parentWidth / 2 - width / 2;
-        y -= parentHeight / 2 - height / 2;
-      }
-      parentElm.scrollLeft = x;
-      parentElm.scrollTop = y;
-      return this;
-    },
-    getRoot: function () {
-      var ctrl = this, rootControl;
-      var parents = [];
-      while (ctrl) {
-        if (ctrl.rootControl) {
-          rootControl = ctrl.rootControl;
-          break;
+    };
+    global$4.each('text title visible disabled active value'.split(' '), function (name$$1) {
+      proto$1[name$$1] = function (value) {
+        if (arguments.length === 0) {
+          return this.state.get(name$$1);
         }
-        parents.push(ctrl);
-        rootControl = ctrl;
-        ctrl = ctrl.parent();
+        if (typeof value !== 'undefined') {
+          this.state.set(name$$1, value);
+        }
+        return this;
+      };
+    });
+    Control = global$8.extend(proto$1);
+    function getEventDispatcher(obj) {
+      if (!obj._eventDispatcher) {
+        obj._eventDispatcher = new global$9({
+          scope: obj,
+          toggleEvent: function (name$$1, state) {
+            if (state && global$9.isNative(name$$1)) {
+              if (!obj._nativeEvents) {
+                obj._nativeEvents = {};
+              }
+              obj._nativeEvents[name$$1] = true;
+              if (obj.state.get('rendered')) {
+                bindPendingEvents(obj);
+              }
+            }
+          }
+        });
       }
-      if (!rootControl) {
-        rootControl = this;
-      }
-      var i = parents.length;
-      while (i--) {
-        parents[i].rootControl = rootControl;
-      }
-      return rootControl;
-    },
-    reflow: function () {
-      $_cqjgb518wjjgwek2f.remove(this);
-      var parent$$1 = this.parent();
-      if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {
-        parent$$1.reflow();
-      }
-      return this;
+      return obj._eventDispatcher;
     }
-  };
-  global$4.each('text title visible disabled active value'.split(' '), function (name$$1) {
-    proto$1[name$$1] = function (value) {
-      if (arguments.length === 0) {
-        return this.state.get(name$$1);
+    function bindPendingEvents(eventCtrl) {
+      var i, l, parents, eventRootCtrl, nativeEvents, name$$1;
+      function delegate(e) {
+        var control = eventCtrl.getParentCtrl(e.target);
+        if (control) {
+          control.fire(e.type, e);
+        }
       }
-      if (typeof value !== 'undefined') {
-        this.state.set(name$$1, value);
+      function mouseLeaveHandler() {
+        var ctrl = eventRootCtrl._lastHoverCtrl;
+        if (ctrl) {
+          ctrl.fire('mouseleave', { target: ctrl.getEl() });
+          ctrl.parents().each(function (ctrl) {
+            ctrl.fire('mouseleave', { target: ctrl.getEl() });
+          });
+          eventRootCtrl._lastHoverCtrl = null;
+        }
       }
-      return this;
-    };
-  });
-  Control = global$8.extend(proto$1);
-  function getEventDispatcher(obj) {
-    if (!obj._eventDispatcher) {
-      obj._eventDispatcher = new global$9({
-        scope: obj,
-        toggleEvent: function (name$$1, state) {
-          if (state && global$9.isNative(name$$1)) {
-            if (!obj._nativeEvents) {
-              obj._nativeEvents = {};
+      function mouseEnterHandler(e) {
+        var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
+        if (ctrl !== lastCtrl) {
+          eventRootCtrl._lastHoverCtrl = ctrl;
+          parents = ctrl.parents().toArray().reverse();
+          parents.push(ctrl);
+          if (lastCtrl) {
+            lastParents = lastCtrl.parents().toArray().reverse();
+            lastParents.push(lastCtrl);
+            for (idx = 0; idx < lastParents.length; idx++) {
+              if (parents[idx] !== lastParents[idx]) {
+                break;
+              }
             }
-            obj._nativeEvents[name$$1] = true;
-            if (obj.state.get('rendered')) {
-              bindPendingEvents(obj);
+            for (i = lastParents.length - 1; i >= idx; i--) {
+              lastCtrl = lastParents[i];
+              lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });
             }
           }
+          for (i = idx; i < parents.length; i++) {
+            ctrl = parents[i];
+            ctrl.fire('mouseenter', { target: ctrl.getEl() });
+          }
         }
-      });
-    }
-    return obj._eventDispatcher;
-  }
-  function bindPendingEvents(eventCtrl) {
-    var i, l, parents, eventRootCtrl, nativeEvents, name$$1;
-    function delegate(e) {
-      var control = eventCtrl.getParentCtrl(e.target);
-      if (control) {
-        control.fire(e.type, e);
       }
-    }
-    function mouseLeaveHandler() {
-      var ctrl = eventRootCtrl._lastHoverCtrl;
-      if (ctrl) {
-        ctrl.fire('mouseleave', { target: ctrl.getEl() });
-        ctrl.parents().each(function (ctrl) {
-          ctrl.fire('mouseleave', { target: ctrl.getEl() });
-        });
-        eventRootCtrl._lastHoverCtrl = null;
+      function fixWheelEvent(e) {
+        e.preventDefault();
+        if (e.type === 'mousewheel') {
+          e.deltaY = -1 / 40 * e.wheelDelta;
+          if (e.wheelDeltaX) {
+            e.deltaX = -1 / 40 * e.wheelDeltaX;
+          }
+        } else {
+          e.deltaX = 0;
+          e.deltaY = e.detail;
+        }
+        e = eventCtrl.fire('wheel', e);
       }
-    }
-    function mouseEnterHandler(e) {
-      var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
-      if (ctrl !== lastCtrl) {
-        eventRootCtrl._lastHoverCtrl = ctrl;
-        parents = ctrl.parents().toArray().reverse();
-        parents.push(ctrl);
-        if (lastCtrl) {
-          lastParents = lastCtrl.parents().toArray().reverse();
-          lastParents.push(lastCtrl);
-          for (idx = 0; idx < lastParents.length; idx++) {
-            if (parents[idx] !== lastParents[idx]) {
-              break;
+      nativeEvents = eventCtrl._nativeEvents;
+      if (nativeEvents) {
+        parents = eventCtrl.parents().toArray();
+        parents.unshift(eventCtrl);
+        for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
+          eventRootCtrl = parents[i]._eventsRoot;
+        }
+        if (!eventRootCtrl) {
+          eventRootCtrl = parents[parents.length - 1] || eventCtrl;
+        }
+        eventCtrl._eventsRoot = eventRootCtrl;
+        for (l = i, i = 0; i < l; i++) {
+          parents[i]._eventsRoot = eventRootCtrl;
+        }
+        var eventRootDelegates = eventRootCtrl._delegates;
+        if (!eventRootDelegates) {
+          eventRootDelegates = eventRootCtrl._delegates = {};
+        }
+        for (name$$1 in nativeEvents) {
+          if (!nativeEvents) {
+            return false;
+          }
+          if (name$$1 === 'wheel' && !hasWheelEventSupport) {
+            if (hasMouseWheelEventSupport) {
+              global$7(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);
+            } else {
+              global$7(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);
             }
+            continue;
           }
-          for (i = lastParents.length - 1; i >= idx; i--) {
-            lastCtrl = lastParents[i];
-            lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });
+          if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {
+            if (!eventRootCtrl._hasMouseEnter) {
+              global$7(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);
+              eventRootCtrl._hasMouseEnter = 1;
+            }
+          } else if (!eventRootDelegates[name$$1]) {
+            global$7(eventRootCtrl.getEl()).on(name$$1, delegate);
+            eventRootDelegates[name$$1] = true;
           }
+          nativeEvents[name$$1] = false;
         }
-        for (i = idx; i < parents.length; i++) {
-          ctrl = parents[i];
-          ctrl.fire('mouseenter', { target: ctrl.getEl() });
-        }
       }
     }
-    function fixWheelEvent(e) {
-      e.preventDefault();
-      if (e.type === 'mousewheel') {
-        e.deltaY = -1 / 40 * e.wheelDelta;
-        if (e.wheelDeltaX) {
-          e.deltaX = -1 / 40 * e.wheelDeltaX;
-        }
-      } else {
-        e.deltaX = 0;
-        e.deltaY = e.detail;
+    var Control$1 = Control;
+
+    var isStatic = function (elm) {
+      return funcs.getRuntimeStyle(elm, 'position') === 'static';
+    };
+    var isFixed = function (ctrl) {
+      return ctrl.state.get('fixed');
+    };
+    function calculateRelativePosition(ctrl, targetElm, rel) {
+      var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
+      viewport = getWindowViewPort();
+      pos = funcs.getPos(targetElm, UiContainer.getUiContainer(ctrl));
+      x = pos.x;
+      y = pos.y;
+      if (isFixed(ctrl) && isStatic(document.body)) {
+        x -= viewport.x;
+        y -= viewport.y;
       }
-      e = eventCtrl.fire('wheel', e);
-    }
-    nativeEvents = eventCtrl._nativeEvents;
-    if (nativeEvents) {
-      parents = eventCtrl.parents().toArray();
-      parents.unshift(eventCtrl);
-      for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
-        eventRootCtrl = parents[i]._eventsRoot;
+      ctrlElm = ctrl.getEl();
+      size = funcs.getSize(ctrlElm);
+      selfW = size.width;
+      selfH = size.height;
+      size = funcs.getSize(targetElm);
+      targetW = size.width;
+      targetH = size.height;
+      rel = (rel || '').split('');
+      if (rel[0] === 'b') {
+        y += targetH;
       }
-      if (!eventRootCtrl) {
-        eventRootCtrl = parents[parents.length - 1] || eventCtrl;
+      if (rel[1] === 'r') {
+        x += targetW;
       }
-      eventCtrl._eventsRoot = eventRootCtrl;
-      for (l = i, i = 0; i < l; i++) {
-        parents[i]._eventsRoot = eventRootCtrl;
+      if (rel[0] === 'c') {
+        y += Math.round(targetH / 2);
       }
-      var eventRootDelegates = eventRootCtrl._delegates;
-      if (!eventRootDelegates) {
-        eventRootDelegates = eventRootCtrl._delegates = {};
+      if (rel[1] === 'c') {
+        x += Math.round(targetW / 2);
       }
-      for (name$$1 in nativeEvents) {
-        if (!nativeEvents) {
-          return false;
-        }
-        if (name$$1 === 'wheel' && !hasWheelEventSupport) {
-          if (hasMouseWheelEventSupport) {
-            global$7(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);
-          } else {
-            global$7(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);
-          }
-          continue;
-        }
-        if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {
-          if (!eventRootCtrl._hasMouseEnter) {
-            global$7(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);
-            eventRootCtrl._hasMouseEnter = 1;
-          }
-        } else if (!eventRootDelegates[name$$1]) {
-          global$7(eventRootCtrl.getEl()).on(name$$1, delegate);
-          eventRootDelegates[name$$1] = true;
-        }
-        nativeEvents[name$$1] = false;
+      if (rel[3] === 'b') {
+        y -= selfH;
       }
+      if (rel[4] === 'r') {
+        x -= selfW;
+      }
+      if (rel[3] === 'c') {
+        y -= Math.round(selfH / 2);
+      }
+      if (rel[4] === 'c') {
+        x -= Math.round(selfW / 2);
+      }
+      return {
+        x: x,
+        y: y,
+        w: selfW,
+        h: selfH
+      };
     }
-  }
-  var Control$1 = Control;
-
-  var isStatic = function (elm) {
-    return funcs.getRuntimeStyle(elm, 'position') === 'static';
-  };
-  var isFixed = function (ctrl) {
-    return ctrl.state.get('fixed');
-  };
-  function calculateRelativePosition(ctrl, targetElm, rel) {
-    var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
-    viewport = getWindowViewPort();
-    pos = funcs.getPos(targetElm, $_egt6ye18xjjgwek2h.getUiContainer(ctrl));
-    x = pos.x;
-    y = pos.y;
-    if (isFixed(ctrl) && isStatic(document.body)) {
-      x -= viewport.x;
-      y -= viewport.y;
-    }
-    ctrlElm = ctrl.getEl();
-    size = funcs.getSize(ctrlElm);
-    selfW = size.width;
-    selfH = size.height;
-    size = funcs.getSize(targetElm);
-    targetW = size.width;
-    targetH = size.height;
-    rel = (rel || '').split('');
-    if (rel[0] === 'b') {
-      y += targetH;
-    }
-    if (rel[1] === 'r') {
-      x += targetW;
-    }
-    if (rel[0] === 'c') {
-      y += Math.round(targetH / 2);
-    }
-    if (rel[1] === 'c') {
-      x += Math.round(targetW / 2);
-    }
-    if (rel[3] === 'b') {
-      y -= selfH;
-    }
-    if (rel[4] === 'r') {
-      x -= selfW;
-    }
-    if (rel[3] === 'c') {
-      y -= Math.round(selfH / 2);
-    }
-    if (rel[4] === 'c') {
-      x -= Math.round(selfW / 2);
-    }
-    return {
-      x: x,
-      y: y,
-      w: selfW,
-      h: selfH
+    var getUiContainerViewPort = function (customUiContainer) {
+      return {
+        x: 0,
+        y: 0,
+        w: customUiContainer.scrollWidth - 1,
+        h: customUiContainer.scrollHeight - 1
+      };
     };
-  }
-  var getUiContainerViewPort = function (customUiContainer) {
-    return {
-      x: 0,
-      y: 0,
-      w: customUiContainer.scrollWidth - 1,
-      h: customUiContainer.scrollHeight - 1
+    var getWindowViewPort = function () {
+      var win = window;
+      var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);
+      var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
+      var w = win.innerWidth || document.documentElement.clientWidth;
+      var h = win.innerHeight || document.documentElement.clientHeight;
+      return {
+        x: x,
+        y: y,
+        w: w,
+        h: h
+      };
     };
-  };
-  var getWindowViewPort = function () {
-    var win = window;
-    var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);
-    var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
-    var w = win.innerWidth || document.documentElement.clientWidth;
-    var h = win.innerHeight || document.documentElement.clientHeight;
-    return {
-      x: x,
-      y: y,
-      w: x + w,
-      h: y + h
+    var getViewPortRect = function (ctrl) {
+      var customUiContainer = UiContainer.getUiContainer(ctrl);
+      return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();
     };
-  };
-  var getViewPortRect = function (ctrl) {
-    var customUiContainer = $_egt6ye18xjjgwek2h.getUiContainer(ctrl);
-    return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();
-  };
-  var $_8zu82i18yjjgwek2l = {
-    testMoveRel: function (elm, rels) {
-      var viewPortRect = getViewPortRect(this);
-      for (var i = 0; i < rels.length; i++) {
-        var pos = calculateRelativePosition(this, elm, rels[i]);
-        if (isFixed(this)) {
-          if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
-            return rels[i];
+    var Movable = {
+      testMoveRel: function (elm, rels) {
+        var viewPortRect = getViewPortRect(this);
+        for (var i = 0; i < rels.length; i++) {
+          var pos = calculateRelativePosition(this, elm, rels[i]);
+          if (isFixed(this)) {
+            if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
+              return rels[i];
+            }
+          } else {
+            if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {
+              return rels[i];
+            }
           }
-        } else {
-          if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {
-            return rels[i];
+        }
+        return rels[0];
+      },
+      moveRel: function (elm, rel) {
+        if (typeof rel !== 'string') {
+          rel = this.testMoveRel(elm, rel);
+        }
+        var pos = calculateRelativePosition(this, elm, rel);
+        return this.moveTo(pos.x, pos.y);
+      },
+      moveBy: function (dx, dy) {
+        var self$$1 = this, rect = self$$1.layoutRect();
+        self$$1.moveTo(rect.x + dx, rect.y + dy);
+        return self$$1;
+      },
+      moveTo: function (x, y) {
+        var self$$1 = this;
+        function constrain(value, max, size) {
+          if (value < 0) {
+            return 0;
           }
+          if (value + size > max) {
+            value = max - size;
+            return value < 0 ? 0 : value;
+          }
+          return value;
         }
-      }
-      return rels[0];
-    },
-    moveRel: function (elm, rel) {
-      if (typeof rel !== 'string') {
-        rel = this.testMoveRel(elm, rel);
-      }
-      var pos = calculateRelativePosition(this, elm, rel);
-      return this.moveTo(pos.x, pos.y);
-    },
-    moveBy: function (dx, dy) {
-      var self$$1 = this, rect = self$$1.layoutRect();
-      self$$1.moveTo(rect.x + dx, rect.y + dy);
-      return self$$1;
-    },
-    moveTo: function (x, y) {
-      var self$$1 = this;
-      function constrain(value, max, size) {
-        if (value < 0) {
-          return 0;
+        if (self$$1.settings.constrainToViewport) {
+          var viewPortRect = getViewPortRect(this);
+          var layoutRect = self$$1.layoutRect();
+          x = constrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
+          y = constrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
         }
-        if (value + size > max) {
-          value = max - size;
-          return value < 0 ? 0 : value;
+        var uiContainer = UiContainer.getUiContainer(self$$1);
+        if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {
+          x -= uiContainer.scrollLeft;
+          y -= uiContainer.scrollTop;
         }
-        return value;
-      }
-      if (self$$1.settings.constrainToViewport) {
-        var viewPortRect = getViewPortRect(this);
-        var layoutRect = self$$1.layoutRect();
-        x = constrain(x, viewPortRect.w, layoutRect.w);
-        y = constrain(y, viewPortRect.h, layoutRect.h);
-      }
-      var uiContainer = $_egt6ye18xjjgwek2h.getUiContainer(self$$1);
-      if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {
-        x -= uiContainer.scrollLeft;
-        y -= uiContainer.scrollTop;
-      }
-      if (uiContainer) {
-        x += 1;
-        y += 1;
-      }
-      if (self$$1.state.get('rendered')) {
-        self$$1.layoutRect({
+        if (uiContainer) {
+          x += 1;
+          y += 1;
+        }
+        if (self$$1.state.get('rendered')) {
+          self$$1.layoutRect({
+            x: x,
+            y: y
+          }).repaint();
+        } else {
+          self$$1.settings.x = x;
+          self$$1.settings.y = y;
+        }
+        self$$1.fire('move', {
           x: x,
           y: y
-        }).repaint();
-      } else {
-        self$$1.settings.x = x;
-        self$$1.settings.y = y;
+        });
+        return self$$1;
       }
-      self$$1.fire('move', {
-        x: x,
-        y: y
-      });
-      return self$$1;
-    }
-  };
+    };
 
-  var Tooltip = Control$1.extend({
-    Mixins: [$_8zu82i18yjjgwek2l],
-    Defaults: { classes: 'widget tooltip tooltip-n' },
-    renderHtml: function () {
-      var self = this, prefix = self.classPrefix;
-      return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.getEl().lastChild.innerHTML = self.encode(e.value);
-      });
-      return self._super();
-    },
-    repaint: function () {
-      var self = this;
-      var style, rect;
-      style = self.getEl().style;
-      rect = self._layoutRect;
-      style.left = rect.x + 'px';
-      style.top = rect.y + 'px';
-      style.zIndex = 65535 + 65535;
-    }
-  });
+    var Tooltip = Control$1.extend({
+      Mixins: [Movable],
+      Defaults: { classes: 'widget tooltip tooltip-n' },
+      renderHtml: function () {
+        var self = this, prefix = self.classPrefix;
+        return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.getEl().lastChild.innerHTML = self.encode(e.value);
+        });
+        return self._super();
+      },
+      repaint: function () {
+        var self = this;
+        var style, rect;
+        style = self.getEl().style;
+        rect = self._layoutRect;
+        style.left = rect.x + 'px';
+        style.top = rect.y + 'px';
+        style.zIndex = 65535 + 65535;
+      }
+    });
 
-  var Widget = Control$1.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      settings = self.settings;
-      self.canFocus = true;
-      if (settings.tooltip && Widget.tooltips !== false) {
-        self.on('mouseenter', function (e) {
-          var tooltip = self.tooltip().moveTo(-65535);
-          if (e.control === self) {
-            var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [
-              'bc-tc',
-              'bc-tl',
-              'bc-tr'
-            ]);
-            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
-            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
-            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
-            tooltip.moveRel(self.getEl(), rel);
-          } else {
-            tooltip.hide();
-          }
+    var Widget = Control$1.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        settings = self.settings;
+        self.canFocus = true;
+        if (settings.tooltip && Widget.tooltips !== false) {
+          self.on('mouseenter', function (e) {
+            var tooltip = self.tooltip().moveTo(-65535);
+            if (e.control === self) {
+              var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [
+                'bc-tc',
+                'bc-tl',
+                'bc-tr'
+              ]);
+              tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
+              tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
+              tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
+              tooltip.moveRel(self.getEl(), rel);
+            } else {
+              tooltip.hide();
+            }
+          });
+          self.on('mouseleave mousedown click', function () {
+            self.tooltip().remove();
+            self._tooltip = null;
+          });
+        }
+        self.aria('label', settings.ariaLabel || settings.tooltip);
+      },
+      tooltip: function () {
+        if (!this._tooltip) {
+          this._tooltip = new Tooltip({ type: 'tooltip' });
+          UiContainer.inheritUiContainer(this, this._tooltip);
+          this._tooltip.renderTo();
+        }
+        return this._tooltip;
+      },
+      postRender: function () {
+        var self = this, settings = self.settings;
+        self._super();
+        if (!self.parent() && (settings.width || settings.height)) {
+          self.initLayoutRect();
+          self.repaint();
+        }
+        if (settings.autofocus) {
+          self.focus();
+        }
+      },
+      bindStates: function () {
+        var self = this;
+        function disable(state) {
+          self.aria('disabled', state);
+          self.classes.toggle('disabled', state);
+        }
+        function active(state) {
+          self.aria('pressed', state);
+          self.classes.toggle('active', state);
+        }
+        self.state.on('change:disabled', function (e) {
+          disable(e.value);
         });
-        self.on('mouseleave mousedown click', function () {
-          self.tooltip().remove();
-          self._tooltip = null;
+        self.state.on('change:active', function (e) {
+          active(e.value);
         });
+        if (self.state.get('disabled')) {
+          disable(true);
+        }
+        if (self.state.get('active')) {
+          active(true);
+        }
+        return self._super();
+      },
+      remove: function () {
+        this._super();
+        if (this._tooltip) {
+          this._tooltip.remove();
+          this._tooltip = null;
+        }
       }
-      self.aria('label', settings.ariaLabel || settings.tooltip);
-    },
-    tooltip: function () {
-      if (!this._tooltip) {
-        this._tooltip = new Tooltip({ type: 'tooltip' });
-        $_egt6ye18xjjgwek2h.inheritUiContainer(this, this._tooltip);
-        this._tooltip.renderTo();
-      }
-      return this._tooltip;
-    },
-    postRender: function () {
-      var self = this, settings = self.settings;
-      self._super();
-      if (!self.parent() && (settings.width || settings.height)) {
-        self.initLayoutRect();
-        self.repaint();
-      }
-      if (settings.autofocus) {
-        self.focus();
-      }
-    },
-    bindStates: function () {
-      var self = this;
-      function disable(state) {
-        self.aria('disabled', state);
-        self.classes.toggle('disabled', state);
-      }
-      function active(state) {
-        self.aria('pressed', state);
-        self.classes.toggle('active', state);
-      }
-      self.state.on('change:disabled', function (e) {
-        disable(e.value);
-      });
-      self.state.on('change:active', function (e) {
-        active(e.value);
-      });
-      if (self.state.get('disabled')) {
-        disable(true);
-      }
-      if (self.state.get('active')) {
-        active(true);
-      }
-      return self._super();
-    },
-    remove: function () {
-      this._super();
-      if (this._tooltip) {
-        this._tooltip.remove();
-        this._tooltip = null;
-      }
-    }
-  });
+    });
 
-  var Progress = Widget.extend({
-    Defaults: { value: 0 },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('progress');
-      if (!self.settings.filter) {
-        self.settings.filter = function (value) {
-          return Math.round(value);
-        };
+    var Progress = Widget.extend({
+      Defaults: { value: 0 },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('progress');
+        if (!self.settings.filter) {
+          self.settings.filter = function (value) {
+            return Math.round(value);
+          };
+        }
+      },
+      renderHtml: function () {
+        var self = this, id = self._id, prefix = this.classPrefix;
+        return '<div id="' + id + '" class="' + self.classes + '">' + '<div class="' + prefix + 'bar-container">' + '<div class="' + prefix + 'bar"></div>' + '</div>' + '<div class="' + prefix + 'text">0%</div>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.value(self.settings.value);
+        return self;
+      },
+      bindStates: function () {
+        var self = this;
+        function setValue(value) {
+          value = self.settings.filter(value);
+          self.getEl().lastChild.innerHTML = value + '%';
+          self.getEl().firstChild.firstChild.style.width = value + '%';
+        }
+        self.state.on('change:value', function (e) {
+          setValue(e.value);
+        });
+        setValue(self.state.get('value'));
+        return self._super();
       }
-    },
-    renderHtml: function () {
-      var self = this, id = self._id, prefix = this.classPrefix;
-      return '<div id="' + id + '" class="' + self.classes + '">' + '<div class="' + prefix + 'bar-container">' + '<div class="' + prefix + 'bar"></div>' + '</div>' + '<div class="' + prefix + 'text">0%</div>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.value(self.settings.value);
-      return self;
-    },
-    bindStates: function () {
-      var self = this;
-      function setValue(value) {
-        value = self.settings.filter(value);
-        self.getEl().lastChild.innerHTML = value + '%';
-        self.getEl().firstChild.firstChild.style.width = value + '%';
-      }
-      self.state.on('change:value', function (e) {
-        setValue(e.value);
-      });
-      setValue(self.state.get('value'));
-      return self._super();
-    }
-  });
+    });
 
-  var updateLiveRegion = function (ctx, text) {
-    ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');
-  };
-  var Notification = Control$1.extend({
-    Mixins: [$_8zu82i18yjjgwek2l],
-    Defaults: { classes: 'widget notification' },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.maxWidth = settings.maxWidth;
-      if (settings.text) {
-        self.text(settings.text);
-      }
-      if (settings.icon) {
-        self.icon = settings.icon;
-      }
-      if (settings.color) {
-        self.color = settings.color;
-      }
-      if (settings.type) {
-        self.classes.add('notification-' + settings.type);
-      }
-      if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {
-        self.closeButton = false;
-      } else {
-        self.classes.add('has-close');
-        self.closeButton = true;
-      }
-      if (settings.progressBar) {
-        self.progressBar = new Progress();
-      }
-      self.on('click', function (e) {
-        if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {
-          self.close();
+    var updateLiveRegion = function (ctx, text) {
+      ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');
+    };
+    var Notification = Control$1.extend({
+      Mixins: [Movable],
+      Defaults: { classes: 'widget notification' },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.maxWidth = settings.maxWidth;
+        if (settings.text) {
+          self.text(settings.text);
         }
-      });
-    },
-    renderHtml: function () {
-      var self = this;
-      var prefix = self.classPrefix;
-      var icon = '', closeButton = '', progressBar = '', notificationStyle = '';
-      if (self.icon) {
-        icon = '<i class="' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '"></i>';
-      }
-      notificationStyle = ' style="max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';"' : '"');
-      if (self.closeButton) {
-        closeButton = '<button type="button" class="' + prefix + 'close" aria-hidden="true">\xD7</button>';
-      }
-      if (self.progressBar) {
-        progressBar = self.progressBar.renderHtml();
-      }
-      return '<div id="' + self._id + '" class="' + self.classes + '"' + notificationStyle + ' role="presentation">' + icon + '<div class="' + prefix + 'notification-inner">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<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 self = this;
-      global$3.setTimeout(function () {
-        self.$el.addClass(self.classPrefix + 'in');
-        updateLiveRegion(self, self.state.get('text'));
-      }, 100);
-      return self._super();
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.getEl().firstChild.innerHTML = e.value;
-        updateLiveRegion(self, e.value);
-      });
-      if (self.progressBar) {
-        self.progressBar.bindStates();
-        self.progressBar.state.on('change:value', function (e) {
+        if (settings.icon) {
+          self.icon = settings.icon;
+        }
+        if (settings.color) {
+          self.color = settings.color;
+        }
+        if (settings.type) {
+          self.classes.add('notification-' + settings.type);
+        }
+        if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {
+          self.closeButton = false;
+        } else {
+          self.classes.add('has-close');
+          self.closeButton = true;
+        }
+        if (settings.progressBar) {
+          self.progressBar = new Progress();
+        }
+        self.on('click', function (e) {
+          if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {
+            self.close();
+          }
+        });
+      },
+      renderHtml: function () {
+        var self = this;
+        var prefix = self.classPrefix;
+        var icon = '', closeButton = '', progressBar = '', notificationStyle = '';
+        if (self.icon) {
+          icon = '<i class="' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '"></i>';
+        }
+        notificationStyle = ' style="max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';"' : '"');
+        if (self.closeButton) {
+          closeButton = '<button type="button" class="' + prefix + 'close" aria-hidden="true">\xD7</button>';
+        }
+        if (self.progressBar) {
+          progressBar = self.progressBar.renderHtml();
+        }
+        return '<div id="' + self._id + '" class="' + self.classes + '"' + notificationStyle + ' role="presentation">' + icon + '<div class="' + prefix + 'notification-inner">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<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 self = this;
+        global$3.setTimeout(function () {
+          self.$el.addClass(self.classPrefix + 'in');
           updateLiveRegion(self, self.state.get('text'));
+        }, 100);
+        return self._super();
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.getEl().firstChild.innerHTML = e.value;
+          updateLiveRegion(self, e.value);
         });
+        if (self.progressBar) {
+          self.progressBar.bindStates();
+          self.progressBar.state.on('change:value', function (e) {
+            updateLiveRegion(self, self.state.get('text'));
+          });
+        }
+        return self._super();
+      },
+      close: function () {
+        var self = this;
+        if (!self.fire('close').isDefaultPrevented()) {
+          self.remove();
+        }
+        return self;
+      },
+      repaint: function () {
+        var self = this;
+        var style, rect;
+        style = self.getEl().style;
+        rect = self._layoutRect;
+        style.left = rect.x + 'px';
+        style.top = rect.y + 'px';
+        style.zIndex = 65535 - 1;
       }
-      return self._super();
-    },
-    close: function () {
-      var self = this;
-      if (!self.fire('close').isDefaultPrevented()) {
-        self.remove();
-      }
-      return self;
-    },
-    repaint: function () {
-      var self = this;
-      var style, rect;
-      style = self.getEl().style;
-      rect = self._layoutRect;
-      style.left = rect.x + 'px';
-      style.top = rect.y + 'px';
-      style.zIndex = 65535 - 1;
-    }
-  });
+    });
 
-  function NotificationManagerImpl (editor) {
-    var getEditorContainer = function (editor) {
-      return editor.inline ? editor.getElement() : editor.getContentAreaContainer();
-    };
-    var getContainerWidth = function () {
-      var container = getEditorContainer(editor);
-      return funcs.getSize(container).width;
-    };
-    var prePositionNotifications = function (notifications) {
-      each(notifications, function (notification) {
-        notification.moveTo(0, 0);
-      });
-    };
-    var positionNotifications = function (notifications) {
-      if (notifications.length > 0) {
-        var firstItem = notifications.slice(0, 1)[0];
+    function NotificationManagerImpl (editor) {
+      var getEditorContainer = function (editor) {
+        return editor.inline ? editor.getElement() : editor.getContentAreaContainer();
+      };
+      var getContainerWidth = function () {
         var container = getEditorContainer(editor);
-        firstItem.moveRel(container, 'tc-tc');
-        each(notifications, function (notification, index) {
-          if (index > 0) {
-            notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');
-          }
+        return funcs.getSize(container).width;
+      };
+      var prePositionNotifications = function (notifications) {
+        each(notifications, function (notification) {
+          notification.moveTo(0, 0);
         });
-      }
-    };
-    var reposition = function (notifications) {
-      prePositionNotifications(notifications);
-      positionNotifications(notifications);
-    };
-    var open = function (args, closeCallback) {
-      var extendedArgs = global$4.extend(args, { maxWidth: getContainerWidth() });
-      var notif = new Notification(extendedArgs);
-      notif.args = extendedArgs;
-      if (extendedArgs.timeout > 0) {
-        notif.timer = setTimeout(function () {
-          notif.close();
+      };
+      var positionNotifications = function (notifications) {
+        if (notifications.length > 0) {
+          var firstItem = notifications.slice(0, 1)[0];
+          var container = getEditorContainer(editor);
+          firstItem.moveRel(container, 'tc-tc');
+          each(notifications, function (notification, index) {
+            if (index > 0) {
+              notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');
+            }
+          });
+        }
+      };
+      var reposition = function (notifications) {
+        prePositionNotifications(notifications);
+        positionNotifications(notifications);
+      };
+      var open = function (args, closeCallback) {
+        var extendedArgs = global$4.extend(args, { maxWidth: getContainerWidth() });
+        var notif = new Notification(extendedArgs);
+        notif.args = extendedArgs;
+        if (extendedArgs.timeout > 0) {
+          notif.timer = setTimeout(function () {
+            notif.close();
+            closeCallback();
+          }, extendedArgs.timeout);
+        }
+        notif.on('close', function () {
           closeCallback();
-        }, extendedArgs.timeout);
-      }
-      notif.on('close', function () {
-        closeCallback();
-      });
-      notif.renderTo();
-      return notif;
-    };
-    var close = function (notification) {
-      notification.close();
-    };
-    var getArgs = function (notification) {
-      return notification.args;
-    };
-    return {
-      open: open,
-      close: close,
-      reposition: reposition,
-      getArgs: getArgs
-    };
-  }
-
-  function getDocumentSize(doc) {
-    var documentElement, body, scrollWidth, clientWidth;
-    var offsetWidth, scrollHeight, clientHeight, offsetHeight;
-    var max = Math.max;
-    documentElement = doc.documentElement;
-    body = doc.body;
-    scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
-    clientWidth = max(documentElement.clientWidth, body.clientWidth);
-    offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
-    scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
-    clientHeight = max(documentElement.clientHeight, body.clientHeight);
-    offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
-    return {
-      width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
-      height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
-    };
-  }
-  function updateWithTouchData(e) {
-    var keys, i;
-    if (e.changedTouches) {
-      keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');
-      for (i = 0; i < keys.length; i++) {
-        e[keys[i]] = e.changedTouches[0][keys[i]];
-      }
+        });
+        notif.renderTo();
+        return notif;
+      };
+      var close = function (notification) {
+        notification.close();
+      };
+      var getArgs = function (notification) {
+        return notification.args;
+      };
+      return {
+        open: open,
+        close: close,
+        reposition: reposition,
+        getArgs: getArgs
+      };
     }
-  }
-  function DragHelper (id, settings) {
-    var $eventOverlay;
-    var doc = settings.document || document;
-    var downButton;
-    var start, stop$$1, drag, startX, startY;
-    settings = settings || {};
-    var handleElement = doc.getElementById(settings.handle || id);
-    start = function (e) {
-      var docSize = getDocumentSize(doc);
-      var handleElm, cursor;
-      updateWithTouchData(e);
-      e.preventDefault();
-      downButton = e.button;
-      handleElm = handleElement;
-      startX = e.screenX;
-      startY = e.screenY;
-      if (window.getComputedStyle) {
-        cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
-      } else {
-        cursor = handleElm.runtimeStyle.cursor;
-      }
-      $eventOverlay = global$7('<div></div>').css({
-        position: 'absolute',
-        top: 0,
-        left: 0,
-        width: docSize.width,
-        height: docSize.height,
-        zIndex: 2147483647,
-        opacity: 0.0001,
-        cursor: cursor
-      }).appendTo(doc.body);
-      global$7(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);
-      settings.start(e);
-    };
-    drag = function (e) {
-      updateWithTouchData(e);
-      if (e.button !== downButton) {
-        return stop$$1(e);
-      }
-      e.deltaX = e.screenX - startX;
-      e.deltaY = e.screenY - startY;
-      e.preventDefault();
-      settings.drag(e);
-    };
-    stop$$1 = function (e) {
-      updateWithTouchData(e);
-      global$7(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);
-      $eventOverlay.remove();
-      if (settings.stop) {
-        settings.stop(e);
-      }
-    };
-    this.destroy = function () {
-      global$7(handleElement).off();
-    };
-    global$7(handleElement).on('mousedown touchstart', start);
-  }
 
-  var global$11 = tinymce.util.Tools.resolve('tinymce.ui.Factory');
-
-  var hasTabstopData = function (elm) {
-    return elm.getAttribute('data-mce-tabstop') ? true : false;
-  };
-  function KeyboardNavigation (settings) {
-    var root = settings.root;
-    var focusedElement, focusedControl;
-    function isElement(node) {
-      return node && node.nodeType === 1;
+    function getDocumentSize(doc) {
+      var documentElement, body, scrollWidth, clientWidth;
+      var offsetWidth, scrollHeight, clientHeight, offsetHeight;
+      var max = Math.max;
+      documentElement = doc.documentElement;
+      body = doc.body;
+      scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
+      clientWidth = max(documentElement.clientWidth, body.clientWidth);
+      offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
+      scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
+      clientHeight = max(documentElement.clientHeight, body.clientHeight);
+      offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
+      return {
+        width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
+        height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
+      };
     }
-    try {
-      focusedElement = document.activeElement;
-    } catch (ex) {
-      focusedElement = document.body;
-    }
-    focusedControl = root.getParentCtrl(focusedElement);
-    function getRole(elm) {
-      elm = elm || focusedElement;
-      if (isElement(elm)) {
-        return elm.getAttribute('role');
-      }
-      return null;
-    }
-    function getParentRole(elm) {
-      var role, parent$$1 = elm || focusedElement;
-      while (parent$$1 = parent$$1.parentNode) {
-        if (role = getRole(parent$$1)) {
-          return role;
+    function updateWithTouchData(e) {
+      var keys, i;
+      if (e.changedTouches) {
+        keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');
+        for (i = 0; i < keys.length; i++) {
+          e[keys[i]] = e.changedTouches[0][keys[i]];
         }
       }
     }
-    function getAriaProp(name$$1) {
-      var elm = focusedElement;
-      if (isElement(elm)) {
-        return elm.getAttribute('aria-' + name$$1);
-      }
-    }
-    function isTextInputElement(elm) {
-      var tagName = elm.tagName.toUpperCase();
-      return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';
-    }
-    function canFocus(elm) {
-      if (isTextInputElement(elm) && !elm.hidden) {
-        return true;
-      }
-      if (hasTabstopData(elm)) {
-        return true;
-      }
-      if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {
-        return true;
-      }
-      return false;
-    }
-    function getFocusElements(elm) {
-      var elements = [];
-      function collect(elm) {
-        if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {
-          return;
+    function DragHelper (id, settings) {
+      var $eventOverlay;
+      var doc = settings.document || document;
+      var downButton;
+      var start, stop$$1, drag, startX, startY;
+      settings = settings || {};
+      var handleElement = doc.getElementById(settings.handle || id);
+      start = function (e) {
+        var docSize = getDocumentSize(doc);
+        var handleElm, cursor;
+        updateWithTouchData(e);
+        e.preventDefault();
+        downButton = e.button;
+        handleElm = handleElement;
+        startX = e.screenX;
+        startY = e.screenY;
+        if (window.getComputedStyle) {
+          cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
+        } else {
+          cursor = handleElm.runtimeStyle.cursor;
         }
-        if (canFocus(elm)) {
-          elements.push(elm);
+        $eventOverlay = global$7('<div></div>').css({
+          position: 'absolute',
+          top: 0,
+          left: 0,
+          width: docSize.width,
+          height: docSize.height,
+          zIndex: 2147483647,
+          opacity: 0.0001,
+          cursor: cursor
+        }).appendTo(doc.body);
+        global$7(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);
+        settings.start(e);
+      };
+      drag = function (e) {
+        updateWithTouchData(e);
+        if (e.button !== downButton) {
+          return stop$$1(e);
         }
-        for (var i = 0; i < elm.childNodes.length; i++) {
-          collect(elm.childNodes[i]);
+        e.deltaX = e.screenX - startX;
+        e.deltaY = e.screenY - startY;
+        e.preventDefault();
+        settings.drag(e);
+      };
+      stop$$1 = function (e) {
+        updateWithTouchData(e);
+        global$7(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);
+        $eventOverlay.remove();
+        if (settings.stop) {
+          settings.stop(e);
         }
-      }
-      collect(elm || root.getEl());
-      return elements;
+      };
+      this.destroy = function () {
+        global$7(handleElement).off();
+      };
+      global$7(handleElement).on('mousedown touchstart', start);
     }
-    function getNavigationRoot(targetControl) {
-      var navigationRoot, controls;
-      targetControl = targetControl || focusedControl;
-      controls = targetControl.parents().toArray();
-      controls.unshift(targetControl);
-      for (var i = 0; i < controls.length; i++) {
-        navigationRoot = controls[i];
-        if (navigationRoot.settings.ariaRoot) {
-          break;
-        }
+
+    var global$b = tinymce.util.Tools.resolve('tinymce.ui.Factory');
+
+    var hasTabstopData = function (elm) {
+      return elm.getAttribute('data-mce-tabstop') ? true : false;
+    };
+    function KeyboardNavigation (settings) {
+      var root = settings.root;
+      var focusedElement, focusedControl;
+      function isElement(node) {
+        return node && node.nodeType === 1;
       }
-      return navigationRoot;
-    }
-    function focusFirst(targetControl) {
-      var navigationRoot = getNavigationRoot(targetControl);
-      var focusElements = getFocusElements(navigationRoot.getEl());
-      if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {
-        moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
-      } else {
-        moveFocusToIndex(0, focusElements);
+      try {
+        focusedElement = document.activeElement;
+      } catch (ex) {
+        focusedElement = document.body;
       }
-    }
-    function moveFocusToIndex(idx, elements) {
-      if (idx < 0) {
-        idx = elements.length - 1;
-      } else if (idx >= elements.length) {
-        idx = 0;
+      focusedControl = root.getParentCtrl(focusedElement);
+      function getRole(elm) {
+        elm = elm || focusedElement;
+        if (isElement(elm)) {
+          return elm.getAttribute('role');
+        }
+        return null;
       }
-      if (elements[idx]) {
-        elements[idx].focus();
+      function getParentRole(elm) {
+        var role, parent$$1 = elm || focusedElement;
+        while (parent$$1 = parent$$1.parentNode) {
+          if (role = getRole(parent$$1)) {
+            return role;
+          }
+        }
       }
-      return idx;
-    }
-    function moveFocus(dir, elements) {
-      var idx = -1;
-      var navigationRoot = getNavigationRoot();
-      elements = elements || getFocusElements(navigationRoot.getEl());
-      for (var i = 0; i < elements.length; i++) {
-        if (elements[i] === focusedElement) {
-          idx = i;
+      function getAriaProp(name$$1) {
+        var elm = focusedElement;
+        if (isElement(elm)) {
+          return elm.getAttribute('aria-' + name$$1);
         }
       }
-      idx += dir;
-      navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
-    }
-    function left() {
-      var parentRole = getParentRole();
-      if (parentRole === 'tablist') {
-        moveFocus(-1, getFocusElements(focusedElement.parentNode));
-      } else if (focusedControl.parent().submenu) {
-        cancel();
-      } else {
-        moveFocus(-1);
+      function isTextInputElement(elm) {
+        var tagName = elm.tagName.toUpperCase();
+        return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';
       }
-    }
-    function right() {
-      var role = getRole(), parentRole = getParentRole();
-      if (parentRole === 'tablist') {
-        moveFocus(1, getFocusElements(focusedElement.parentNode));
-      } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {
-        enter();
-      } else {
-        moveFocus(1);
+      function canFocus(elm) {
+        if (isTextInputElement(elm) && !elm.hidden) {
+          return true;
+        }
+        if (hasTabstopData(elm)) {
+          return true;
+        }
+        if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {
+          return true;
+        }
+        return false;
       }
-    }
-    function up() {
-      moveFocus(-1);
-    }
-    function down() {
-      var role = getRole(), parentRole = getParentRole();
-      if (role === 'menuitem' && parentRole === 'menubar') {
-        enter();
-      } else if (role === 'button' && getAriaProp('haspopup')) {
-        enter({ key: 'down' });
-      } else {
-        moveFocus(1);
+      function getFocusElements(elm) {
+        var elements = [];
+        function collect(elm) {
+          if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {
+            return;
+          }
+          if (canFocus(elm)) {
+            elements.push(elm);
+          }
+          for (var i = 0; i < elm.childNodes.length; i++) {
+            collect(elm.childNodes[i]);
+          }
+        }
+        collect(elm || root.getEl());
+        return elements;
       }
-    }
-    function tab(e) {
-      var parentRole = getParentRole();
-      if (parentRole === 'tablist') {
-        var elm = getFocusElements(focusedControl.getEl('body'))[0];
-        if (elm) {
-          elm.focus();
+      function getNavigationRoot(targetControl) {
+        var navigationRoot, controls;
+        targetControl = targetControl || focusedControl;
+        controls = targetControl.parents().toArray();
+        controls.unshift(targetControl);
+        for (var i = 0; i < controls.length; i++) {
+          navigationRoot = controls[i];
+          if (navigationRoot.settings.ariaRoot) {
+            break;
+          }
         }
-      } else {
-        moveFocus(e.shiftKey ? -1 : 1);
+        return navigationRoot;
       }
-    }
-    function cancel() {
-      focusedControl.fire('cancel');
-    }
-    function enter(aria) {
-      aria = aria || {};
-      focusedControl.fire('click', {
-        target: focusedElement,
-        aria: aria
-      });
-    }
-    root.on('keydown', function (e) {
-      function handleNonTabOrEscEvent(e, handler) {
-        if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {
-          return;
+      function focusFirst(targetControl) {
+        var navigationRoot = getNavigationRoot(targetControl);
+        var focusElements = getFocusElements(navigationRoot.getEl());
+        if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {
+          moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
+        } else {
+          moveFocusToIndex(0, focusElements);
         }
-        if (getRole(focusedElement) === 'slider') {
-          return;
+      }
+      function moveFocusToIndex(idx, elements) {
+        if (idx < 0) {
+          idx = elements.length - 1;
+        } else if (idx >= elements.length) {
+          idx = 0;
         }
-        if (handler(e) !== false) {
-          e.preventDefault();
+        if (elements[idx]) {
+          elements[idx].focus();
         }
+        return idx;
       }
-      if (e.isDefaultPrevented()) {
-        return;
+      function moveFocus(dir, elements) {
+        var idx = -1;
+        var navigationRoot = getNavigationRoot();
+        elements = elements || getFocusElements(navigationRoot.getEl());
+        for (var i = 0; i < elements.length; i++) {
+          if (elements[i] === focusedElement) {
+            idx = i;
+          }
+        }
+        idx += dir;
+        navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
       }
-      switch (e.keyCode) {
-      case 37:
-        handleNonTabOrEscEvent(e, left);
-        break;
-      case 39:
-        handleNonTabOrEscEvent(e, right);
-        break;
-      case 38:
-        handleNonTabOrEscEvent(e, up);
-        break;
-      case 40:
-        handleNonTabOrEscEvent(e, down);
-        break;
-      case 27:
-        cancel();
-        break;
-      case 14:
-      case 13:
-      case 32:
-        handleNonTabOrEscEvent(e, enter);
-        break;
-      case 9:
-        tab(e);
-        e.preventDefault();
-        break;
+      function left() {
+        var parentRole = getParentRole();
+        if (parentRole === 'tablist') {
+          moveFocus(-1, getFocusElements(focusedElement.parentNode));
+        } else if (focusedControl.parent().submenu) {
+          cancel();
+        } else {
+          moveFocus(-1);
+        }
       }
-    });
-    root.on('focusin', function (e) {
-      focusedElement = e.target;
-      focusedControl = e.control;
-    });
-    return { focusFirst: focusFirst };
-  }
-
-  var selectorCache = {};
-  var Container = Control$1.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      settings = self.settings;
-      if (settings.fixed) {
-        self.state.set('fixed', true);
+      function right() {
+        var role = getRole(), parentRole = getParentRole();
+        if (parentRole === 'tablist') {
+          moveFocus(1, getFocusElements(focusedElement.parentNode));
+        } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {
+          enter();
+        } else {
+          moveFocus(1);
+        }
       }
-      self._items = new Collection$2();
-      if (self.isRtl()) {
-        self.classes.add('rtl');
+      function up() {
+        moveFocus(-1);
       }
-      self.bodyClasses = new ClassList(function () {
-        if (self.state.get('rendered')) {
-          self.getEl('body').className = this.toString();
+      function down() {
+        var role = getRole(), parentRole = getParentRole();
+        if (role === 'menuitem' && parentRole === 'menubar') {
+          enter();
+        } else if (role === 'button' && getAriaProp('haspopup')) {
+          enter({ key: 'down' });
+        } else {
+          moveFocus(1);
         }
-      });
-      self.bodyClasses.prefix = self.classPrefix;
-      self.classes.add('container');
-      self.bodyClasses.add('container-body');
-      if (settings.containerCls) {
-        self.classes.add(settings.containerCls);
       }
-      self._layout = global$11.create((settings.layout || '') + 'layout');
-      if (self.settings.items) {
-        self.add(self.settings.items);
-      } else {
-        self.add(self.render());
-      }
-      self._hasBody = true;
-    },
-    items: function () {
-      return this._items;
-    },
-    find: function (selector) {
-      selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
-      return selector.find(this);
-    },
-    add: function (items) {
-      var self = this;
-      self.items().add(self.create(items)).parent(self);
-      return self;
-    },
-    focus: function (keyboard) {
-      var self = this;
-      var focusCtrl, keyboardNav, items;
-      if (keyboard) {
-        keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
-        if (keyboardNav) {
-          keyboardNav.focusFirst(self);
-          return;
+      function tab(e) {
+        var parentRole = getParentRole();
+        if (parentRole === 'tablist') {
+          var elm = getFocusElements(focusedControl.getEl('body'))[0];
+          if (elm) {
+            elm.focus();
+          }
+        } else {
+          moveFocus(e.shiftKey ? -1 : 1);
         }
       }
-      items = self.find('*');
-      if (self.statusbar) {
-        items.add(self.statusbar.items());
+      function cancel() {
+        focusedControl.fire('cancel');
       }
-      items.each(function (ctrl) {
-        if (ctrl.settings.autofocus) {
-          focusCtrl = null;
-          return false;
+      function enter(aria) {
+        aria = aria || {};
+        focusedControl.fire('click', {
+          target: focusedElement,
+          aria: aria
+        });
+      }
+      root.on('keydown', function (e) {
+        function handleNonTabOrEscEvent(e, handler) {
+          if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {
+            return;
+          }
+          if (getRole(focusedElement) === 'slider') {
+            return;
+          }
+          if (handler(e) !== false) {
+            e.preventDefault();
+          }
         }
-        if (ctrl.canFocus) {
-          focusCtrl = focusCtrl || ctrl;
+        if (e.isDefaultPrevented()) {
+          return;
         }
-      });
-      if (focusCtrl) {
-        focusCtrl.focus();
-      }
-      return self;
-    },
-    replace: function (oldItem, newItem) {
-      var ctrlElm;
-      var items = this.items();
-      var i = items.length;
-      while (i--) {
-        if (items[i] === oldItem) {
-          items[i] = newItem;
+        switch (e.keyCode) {
+        case 37:
+          handleNonTabOrEscEvent(e, left);
           break;
+        case 39:
+          handleNonTabOrEscEvent(e, right);
+          break;
+        case 38:
+          handleNonTabOrEscEvent(e, up);
+          break;
+        case 40:
+          handleNonTabOrEscEvent(e, down);
+          break;
+        case 27:
+          cancel();
+          break;
+        case 14:
+        case 13:
+        case 32:
+          handleNonTabOrEscEvent(e, enter);
+          break;
+        case 9:
+          tab(e);
+          e.preventDefault();
+          break;
         }
-      }
-      if (i >= 0) {
-        ctrlElm = newItem.getEl();
-        if (ctrlElm) {
-          ctrlElm.parentNode.removeChild(ctrlElm);
+      });
+      root.on('focusin', function (e) {
+        focusedElement = e.target;
+        focusedControl = e.control;
+      });
+      return { focusFirst: focusFirst };
+    }
+
+    var selectorCache = {};
+    var Container = Control$1.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        settings = self.settings;
+        if (settings.fixed) {
+          self.state.set('fixed', true);
         }
-        ctrlElm = oldItem.getEl();
-        if (ctrlElm) {
-          ctrlElm.parentNode.removeChild(ctrlElm);
+        self._items = new Collection$2();
+        if (self.isRtl()) {
+          self.classes.add('rtl');
         }
-      }
-      newItem.parent(this);
-    },
-    create: function (items) {
-      var self = this;
-      var settings;
-      var ctrlItems = [];
-      if (!global$4.isArray(items)) {
-        items = [items];
-      }
-      global$4.each(items, function (item) {
-        if (item) {
-          if (!(item instanceof Control$1)) {
-            if (typeof item === 'string') {
-              item = { type: item };
-            }
-            settings = global$4.extend({}, self.settings.defaults, item);
-            item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);
-            item = global$11.create(settings);
+        self.bodyClasses = new ClassList(function () {
+          if (self.state.get('rendered')) {
+            self.getEl('body').className = this.toString();
           }
-          ctrlItems.push(item);
+        });
+        self.bodyClasses.prefix = self.classPrefix;
+        self.classes.add('container');
+        self.bodyClasses.add('container-body');
+        if (settings.containerCls) {
+          self.classes.add(settings.containerCls);
         }
-      });
-      return ctrlItems;
-    },
-    renderNew: function () {
-      var self = this;
-      self.items().each(function (ctrl, index) {
-        var containerElm;
-        ctrl.parent(self);
-        if (!ctrl.state.get('rendered')) {
-          containerElm = self.getEl('body');
-          if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
-            global$7(containerElm.childNodes[index]).before(ctrl.renderHtml());
-          } else {
-            global$7(containerElm).append(ctrl.renderHtml());
+        self._layout = global$b.create((settings.layout || '') + 'layout');
+        if (self.settings.items) {
+          self.add(self.settings.items);
+        } else {
+          self.add(self.render());
+        }
+        self._hasBody = true;
+      },
+      items: function () {
+        return this._items;
+      },
+      find: function (selector) {
+        selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
+        return selector.find(this);
+      },
+      add: function (items) {
+        var self = this;
+        self.items().add(self.create(items)).parent(self);
+        return self;
+      },
+      focus: function (keyboard) {
+        var self = this;
+        var focusCtrl, keyboardNav, items;
+        if (keyboard) {
+          keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
+          if (keyboardNav) {
+            keyboardNav.focusFirst(self);
+            return;
           }
-          ctrl.postRender();
-          $_cqjgb518wjjgwek2f.add(ctrl);
         }
-      });
-      self._layout.applyClasses(self.items().filter(':visible'));
-      self._lastRect = null;
-      return self;
-    },
-    append: function (items) {
-      return this.add(items).renderNew();
-    },
-    prepend: function (items) {
-      var self = this;
-      self.items().set(self.create(items).concat(self.items().toArray()));
-      return self.renderNew();
-    },
-    insert: function (items, index, before) {
-      var self = this;
-      var curItems, beforeItems, afterItems;
-      items = self.create(items);
-      curItems = self.items();
-      if (!before && index < curItems.length - 1) {
-        index += 1;
-      }
-      if (index >= 0 && index < curItems.length) {
-        beforeItems = curItems.slice(0, index).toArray();
-        afterItems = curItems.slice(index).toArray();
-        curItems.set(beforeItems.concat(items, afterItems));
-      }
-      return self.renderNew();
-    },
-    fromJSON: function (data) {
-      var self = this;
-      for (var name in data) {
-        self.find('#' + name).value(data[name]);
-      }
-      return self;
-    },
-    toJSON: function () {
-      var self = this, data = {};
-      self.find('*').each(function (ctrl) {
-        var name = ctrl.name(), value = ctrl.value();
-        if (name && typeof value !== 'undefined') {
-          data[name] = value;
+        items = self.find('*');
+        if (self.statusbar) {
+          items.add(self.statusbar.items());
         }
-      });
-      return data;
-    },
-    renderHtml: function () {
-      var self = this, layout = self._layout, role = this.settings.role;
-      self.preRender();
-      layout.preRender(self);
-      return '<div id="' + self._id + '" class="' + self.classes + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      var box;
-      self.items().exec('postRender');
-      self._super();
-      self._layout.postRender(self);
-      self.state.set('rendered', true);
-      if (self.settings.style) {
-        self.$el.css(self.settings.style);
-      }
-      if (self.settings.border) {
-        box = self.borderBox;
-        self.$el.css({
-          'border-top-width': box.top,
-          'border-right-width': box.right,
-          'border-bottom-width': box.bottom,
-          'border-left-width': box.left
+        items.each(function (ctrl) {
+          if (ctrl.settings.autofocus) {
+            focusCtrl = null;
+            return false;
+          }
+          if (ctrl.canFocus) {
+            focusCtrl = focusCtrl || ctrl;
+          }
         });
-      }
-      if (!self.parent()) {
-        self.keyboardNav = KeyboardNavigation({ root: self });
-      }
-      return self;
-    },
-    initLayoutRect: function () {
-      var self = this, layoutRect = self._super();
-      self._layout.recalc(self);
-      return layoutRect;
-    },
-    recalc: function () {
-      var self = this;
-      var rect = self._layoutRect;
-      var lastRect = self._lastRect;
-      if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {
-        self._layout.recalc(self);
-        rect = self.layoutRect();
-        self._lastRect = {
-          x: rect.x,
-          y: rect.y,
-          w: rect.w,
-          h: rect.h
-        };
-        return true;
-      }
-    },
-    reflow: function () {
-      var i;
-      $_cqjgb518wjjgwek2f.remove(this);
-      if (this.visible()) {
-        Control$1.repaintControls = [];
-        Control$1.repaintControls.map = {};
-        this.recalc();
-        i = Control$1.repaintControls.length;
+        if (focusCtrl) {
+          focusCtrl.focus();
+        }
+        return self;
+      },
+      replace: function (oldItem, newItem) {
+        var ctrlElm;
+        var items = this.items();
+        var i = items.length;
         while (i--) {
-          Control$1.repaintControls[i].repaint();
+          if (items[i] === oldItem) {
+            items[i] = newItem;
+            break;
+          }
         }
-        if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {
-          this.repaint();
+        if (i >= 0) {
+          ctrlElm = newItem.getEl();
+          if (ctrlElm) {
+            ctrlElm.parentNode.removeChild(ctrlElm);
+          }
+          ctrlElm = oldItem.getEl();
+          if (ctrlElm) {
+            ctrlElm.parentNode.removeChild(ctrlElm);
+          }
         }
-        Control$1.repaintControls = [];
-      }
-      return this;
-    }
-  });
-
-  var $_8woeth19ajjgwek4b = {
-    init: function () {
-      var self = this;
-      self.on('repaint', self.renderScroll);
-    },
-    renderScroll: function () {
-      var self = this, margin = 2;
-      function repaintScroll() {
-        var hasScrollH, hasScrollV, bodyElm;
-        function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
-          var containerElm, scrollBarElm, scrollThumbElm;
-          var containerSize, scrollSize, ratio, rect;
-          var posNameLower, sizeNameLower;
-          scrollBarElm = self.getEl('scroll' + axisName);
-          if (scrollBarElm) {
-            posNameLower = posName.toLowerCase();
-            sizeNameLower = sizeName.toLowerCase();
-            global$7(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);
-            if (!hasScroll) {
-              global$7(scrollBarElm).css('display', 'none');
-              return;
+        newItem.parent(this);
+      },
+      create: function (items) {
+        var self = this;
+        var settings;
+        var ctrlItems = [];
+        if (!global$4.isArray(items)) {
+          items = [items];
+        }
+        global$4.each(items, function (item) {
+          if (item) {
+            if (!(item instanceof Control$1)) {
+              if (typeof item === 'string') {
+                item = { type: item };
+              }
+              settings = global$4.extend({}, self.settings.defaults, item);
+              item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);
+              item = global$b.create(settings);
             }
-            global$7(scrollBarElm).css('display', 'block');
+            ctrlItems.push(item);
+          }
+        });
+        return ctrlItems;
+      },
+      renderNew: function () {
+        var self = this;
+        self.items().each(function (ctrl, index) {
+          var containerElm;
+          ctrl.parent(self);
+          if (!ctrl.state.get('rendered')) {
             containerElm = self.getEl('body');
-            scrollThumbElm = self.getEl('scroll' + axisName + 't');
-            containerSize = containerElm['client' + sizeName] - margin * 2;
-            containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;
-            scrollSize = containerElm['scroll' + sizeName];
-            ratio = containerSize / scrollSize;
-            rect = {};
-            rect[posNameLower] = containerElm['offset' + posName] + margin;
-            rect[sizeNameLower] = containerSize;
-            global$7(scrollBarElm).css(rect);
-            rect = {};
-            rect[posNameLower] = containerElm['scroll' + posName] * ratio;
-            rect[sizeNameLower] = containerSize * ratio;
-            global$7(scrollThumbElm).css(rect);
+            if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
+              global$7(containerElm.childNodes[index]).before(ctrl.renderHtml());
+            } else {
+              global$7(containerElm).append(ctrl.renderHtml());
+            }
+            ctrl.postRender();
+            ReflowQueue.add(ctrl);
           }
+        });
+        self._layout.applyClasses(self.items().filter(':visible'));
+        self._lastRect = null;
+        return self;
+      },
+      append: function (items) {
+        return this.add(items).renderNew();
+      },
+      prepend: function (items) {
+        var self = this;
+        self.items().set(self.create(items).concat(self.items().toArray()));
+        return self.renderNew();
+      },
+      insert: function (items, index, before) {
+        var self = this;
+        var curItems, beforeItems, afterItems;
+        items = self.create(items);
+        curItems = self.items();
+        if (!before && index < curItems.length - 1) {
+          index += 1;
         }
-        bodyElm = self.getEl('body');
-        hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
-        hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
-        repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');
-        repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');
-      }
-      function addScroll() {
-        function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
-          var scrollStart;
-          var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
-          global$7(self.getEl()).append('<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' + '<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' + '</div>');
-          self.draghelper = new DragHelper(axisId + 't', {
-            start: function () {
-              scrollStart = self.getEl('body')['scroll' + posName];
-              global$7('#' + axisId).addClass(prefix + 'active');
-            },
-            drag: function (e) {
-              var ratio, hasScrollH, hasScrollV, containerSize;
-              var layoutRect = self.layoutRect();
-              hasScrollH = layoutRect.contentW > layoutRect.innerW;
-              hasScrollV = layoutRect.contentH > layoutRect.innerH;
-              containerSize = self.getEl('body')['client' + sizeName] - margin * 2;
-              containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;
-              ratio = containerSize / self.getEl('body')['scroll' + sizeName];
-              self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;
-            },
-            stop: function () {
-              global$7('#' + axisId).removeClass(prefix + 'active');
-            }
+        if (index >= 0 && index < curItems.length) {
+          beforeItems = curItems.slice(0, index).toArray();
+          afterItems = curItems.slice(index).toArray();
+          curItems.set(beforeItems.concat(items, afterItems));
+        }
+        return self.renderNew();
+      },
+      fromJSON: function (data) {
+        var self = this;
+        for (var name in data) {
+          self.find('#' + name).value(data[name]);
+        }
+        return self;
+      },
+      toJSON: function () {
+        var self = this, data = {};
+        self.find('*').each(function (ctrl) {
+          var name = ctrl.name(), value = ctrl.value();
+          if (name && typeof value !== 'undefined') {
+            data[name] = value;
+          }
+        });
+        return data;
+      },
+      renderHtml: function () {
+        var self = this, layout = self._layout, role = this.settings.role;
+        self.preRender();
+        layout.preRender(self);
+        return '<div id="' + self._id + '" class="' + self.classes + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        var box;
+        self.items().exec('postRender');
+        self._super();
+        self._layout.postRender(self);
+        self.state.set('rendered', true);
+        if (self.settings.style) {
+          self.$el.css(self.settings.style);
+        }
+        if (self.settings.border) {
+          box = self.borderBox;
+          self.$el.css({
+            'border-top-width': box.top,
+            'border-right-width': box.right,
+            'border-bottom-width': box.bottom,
+            'border-left-width': box.left
           });
         }
-        self.classes.add('scroll');
-        addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');
-        addScrollAxis('h', 'Left', 'Width', 'X', 'Height');
+        if (!self.parent()) {
+          self.keyboardNav = KeyboardNavigation({ root: self });
+        }
+        return self;
+      },
+      initLayoutRect: function () {
+        var self = this, layoutRect = self._super();
+        self._layout.recalc(self);
+        return layoutRect;
+      },
+      recalc: function () {
+        var self = this;
+        var rect = self._layoutRect;
+        var lastRect = self._lastRect;
+        if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {
+          self._layout.recalc(self);
+          rect = self.layoutRect();
+          self._lastRect = {
+            x: rect.x,
+            y: rect.y,
+            w: rect.w,
+            h: rect.h
+          };
+          return true;
+        }
+      },
+      reflow: function () {
+        var i;
+        ReflowQueue.remove(this);
+        if (this.visible()) {
+          Control$1.repaintControls = [];
+          Control$1.repaintControls.map = {};
+          this.recalc();
+          i = Control$1.repaintControls.length;
+          while (i--) {
+            Control$1.repaintControls[i].repaint();
+          }
+          if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {
+            this.repaint();
+          }
+          Control$1.repaintControls = [];
+        }
+        return this;
       }
-      if (self.settings.autoScroll) {
-        if (!self._hasScroll) {
-          self._hasScroll = true;
-          addScroll();
-          self.on('wheel', function (e) {
-            var bodyEl = self.getEl('body');
-            bodyEl.scrollLeft += (e.deltaX || 0) * 10;
-            bodyEl.scrollTop += e.deltaY * 10;
-            repaintScroll();
-          });
-          global$7(self.getEl('body')).on('scroll', repaintScroll);
+    });
+
+    var Scrollable = {
+      init: function () {
+        var self = this;
+        self.on('repaint', self.renderScroll);
+      },
+      renderScroll: function () {
+        var self = this, margin = 2;
+        function repaintScroll() {
+          var hasScrollH, hasScrollV, bodyElm;
+          function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
+            var containerElm, scrollBarElm, scrollThumbElm;
+            var containerSize, scrollSize, ratio, rect;
+            var posNameLower, sizeNameLower;
+            scrollBarElm = self.getEl('scroll' + axisName);
+            if (scrollBarElm) {
+              posNameLower = posName.toLowerCase();
+              sizeNameLower = sizeName.toLowerCase();
+              global$7(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);
+              if (!hasScroll) {
+                global$7(scrollBarElm).css('display', 'none');
+                return;
+              }
+              global$7(scrollBarElm).css('display', 'block');
+              containerElm = self.getEl('body');
+              scrollThumbElm = self.getEl('scroll' + axisName + 't');
+              containerSize = containerElm['client' + sizeName] - margin * 2;
+              containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;
+              scrollSize = containerElm['scroll' + sizeName];
+              ratio = containerSize / scrollSize;
+              rect = {};
+              rect[posNameLower] = containerElm['offset' + posName] + margin;
+              rect[sizeNameLower] = containerSize;
+              global$7(scrollBarElm).css(rect);
+              rect = {};
+              rect[posNameLower] = containerElm['scroll' + posName] * ratio;
+              rect[sizeNameLower] = containerSize * ratio;
+              global$7(scrollThumbElm).css(rect);
+            }
+          }
+          bodyElm = self.getEl('body');
+          hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
+          hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
+          repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');
+          repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');
         }
-        repaintScroll();
+        function addScroll() {
+          function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
+            var scrollStart;
+            var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
+            global$7(self.getEl()).append('<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' + '<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' + '</div>');
+            self.draghelper = new DragHelper(axisId + 't', {
+              start: function () {
+                scrollStart = self.getEl('body')['scroll' + posName];
+                global$7('#' + axisId).addClass(prefix + 'active');
+              },
+              drag: function (e) {
+                var ratio, hasScrollH, hasScrollV, containerSize;
+                var layoutRect = self.layoutRect();
+                hasScrollH = layoutRect.contentW > layoutRect.innerW;
+                hasScrollV = layoutRect.contentH > layoutRect.innerH;
+                containerSize = self.getEl('body')['client' + sizeName] - margin * 2;
+                containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;
+                ratio = containerSize / self.getEl('body')['scroll' + sizeName];
+                self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;
+              },
+              stop: function () {
+                global$7('#' + axisId).removeClass(prefix + 'active');
+              }
+            });
+          }
+          self.classes.add('scroll');
+          addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');
+          addScrollAxis('h', 'Left', 'Width', 'X', 'Height');
+        }
+        if (self.settings.autoScroll) {
+          if (!self._hasScroll) {
+            self._hasScroll = true;
+            addScroll();
+            self.on('wheel', function (e) {
+              var bodyEl = self.getEl('body');
+              bodyEl.scrollLeft += (e.deltaX || 0) * 10;
+              bodyEl.scrollTop += e.deltaY * 10;
+              repaintScroll();
+            });
+            global$7(self.getEl('body')).on('scroll', repaintScroll);
+          }
+          repaintScroll();
+        }
       }
-    }
-  };
+    };
 
-  var Panel = Container.extend({
-    Defaults: {
-      layout: 'fit',
-      containerCls: 'panel'
-    },
-    Mixins: [$_8woeth19ajjgwek4b],
-    renderHtml: function () {
-      var self = this;
-      var layout = self._layout;
-      var innerHtml = self.settings.html;
-      self.preRender();
-      layout.preRender(self);
-      if (typeof innerHtml === 'undefined') {
-        innerHtml = '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>';
-      } else {
-        if (typeof innerHtml === 'function') {
-          innerHtml = innerHtml.call(self);
+    var Panel = Container.extend({
+      Defaults: {
+        layout: 'fit',
+        containerCls: 'panel'
+      },
+      Mixins: [Scrollable],
+      renderHtml: function () {
+        var self = this;
+        var layout = self._layout;
+        var innerHtml = self.settings.html;
+        self.preRender();
+        layout.preRender(self);
+        if (typeof innerHtml === 'undefined') {
+          innerHtml = '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>';
+        } else {
+          if (typeof innerHtml === 'function') {
+            innerHtml = innerHtml.call(self);
+          }
+          self._hasBody = false;
         }
-        self._hasBody = false;
+        return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1" role="group">' + (self._preBodyHtml || '') + innerHtml + '</div>';
       }
-      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1" role="group">' + (self._preBodyHtml || '') + innerHtml + '</div>';
-    }
-  });
+    });
 
-  var $_20hy1119bjjgwek4f = {
-    resizeToContent: function () {
-      this._layoutRect.autoResize = true;
-      this._lastRect = null;
-      this.reflow();
-    },
-    resizeTo: function (w, h) {
-      if (w <= 1 || h <= 1) {
-        var rect = funcs.getWindowSize();
-        w = w <= 1 ? w * rect.w : w;
-        h = h <= 1 ? h * rect.h : h;
+    var Resizable = {
+      resizeToContent: function () {
+        this._layoutRect.autoResize = true;
+        this._lastRect = null;
+        this.reflow();
+      },
+      resizeTo: function (w, h) {
+        if (w <= 1 || h <= 1) {
+          var rect = funcs.getWindowSize();
+          w = w <= 1 ? w * rect.w : w;
+          h = h <= 1 ? h * rect.h : h;
+        }
+        this._layoutRect.autoResize = false;
+        return this.layoutRect({
+          minW: w,
+          minH: h,
+          w: w,
+          h: h
+        }).reflow();
+      },
+      resizeBy: function (dw, dh) {
+        var self = this, rect = self.layoutRect();
+        return self.resizeTo(rect.w + dw, rect.h + dh);
       }
-      this._layoutRect.autoResize = false;
-      return this.layoutRect({
-        minW: w,
-        minH: h,
-        w: w,
-        h: h
-      }).reflow();
-    },
-    resizeBy: function (dw, dh) {
-      var self = this, rect = self.layoutRect();
-      return self.resizeTo(rect.w + dw, rect.h + dh);
-    }
-  };
+    };
 
-  var documentClickHandler;
-  var documentScrollHandler;
-  var windowResizeHandler;
-  var visiblePanels = [];
-  var zOrder = [];
-  var hasModal;
-  function isChildOf(ctrl, parent$$1) {
-    while (ctrl) {
-      if (ctrl === parent$$1) {
-        return true;
+    var documentClickHandler, documentScrollHandler, windowResizeHandler;
+    var visiblePanels = [];
+    var zOrder = [];
+    var hasModal;
+    function isChildOf(ctrl, parent$$1) {
+      while (ctrl) {
+        if (ctrl === parent$$1) {
+          return true;
+        }
+        ctrl = ctrl.parent();
       }
-      ctrl = ctrl.parent();
     }
-  }
-  function skipOrHidePanels(e) {
-    var i = visiblePanels.length;
-    while (i--) {
-      var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
-      if (panel.settings.autohide) {
-        if (clickCtrl) {
-          if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
-            continue;
+    function skipOrHidePanels(e) {
+      var i = visiblePanels.length;
+      while (i--) {
+        var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
+        if (panel.settings.autohide) {
+          if (clickCtrl) {
+            if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
+              continue;
+            }
           }
+          e = panel.fire('autohide', { target: e.target });
+          if (!e.isDefaultPrevented()) {
+            panel.hide();
+          }
         }
-        e = panel.fire('autohide', { target: e.target });
-        if (!e.isDefaultPrevented()) {
-          panel.hide();
-        }
       }
     }
-  }
-  function bindDocumentClickHandler() {
-    if (!documentClickHandler) {
-      documentClickHandler = function (e) {
-        if (e.button === 2) {
-          return;
-        }
-        skipOrHidePanels(e);
-      };
-      global$7(document).on('click touchstart', documentClickHandler);
+    function bindDocumentClickHandler() {
+      if (!documentClickHandler) {
+        documentClickHandler = function (e) {
+          if (e.button === 2) {
+            return;
+          }
+          skipOrHidePanels(e);
+        };
+        global$7(document).on('click touchstart', documentClickHandler);
+      }
     }
-  }
-  function bindDocumentScrollHandler() {
-    if (!documentScrollHandler) {
-      documentScrollHandler = function () {
-        var i;
-        i = visiblePanels.length;
-        while (i--) {
-          repositionPanel$1(visiblePanels[i]);
-        }
-      };
-      global$7(window).on('scroll', documentScrollHandler);
+    function bindDocumentScrollHandler() {
+      if (!documentScrollHandler) {
+        documentScrollHandler = function () {
+          var i;
+          i = visiblePanels.length;
+          while (i--) {
+            repositionPanel$1(visiblePanels[i]);
+          }
+        };
+        global$7(window).on('scroll', documentScrollHandler);
+      }
     }
-  }
-  function bindWindowResizeHandler() {
-    if (!windowResizeHandler) {
-      var docElm_1 = document.documentElement;
-      var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
-      windowResizeHandler = function () {
-        if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
-          clientWidth_1 = docElm_1.clientWidth;
-          clientHeight_1 = docElm_1.clientHeight;
-          FloatPanel.hideAll();
-        }
-      };
-      global$7(window).on('resize', windowResizeHandler);
+    function bindWindowResizeHandler() {
+      if (!windowResizeHandler) {
+        var docElm_1 = document.documentElement;
+        var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
+        windowResizeHandler = function () {
+          if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
+            clientWidth_1 = docElm_1.clientWidth;
+            clientHeight_1 = docElm_1.clientHeight;
+            FloatPanel.hideAll();
+          }
+        };
+        global$7(window).on('resize', windowResizeHandler);
+      }
     }
-  }
-  function repositionPanel$1(panel) {
-    var scrollY$$1 = funcs.getViewPort().y;
-    function toggleFixedChildPanels(fixed, deltaY) {
-      var parent$$1;
-      for (var i = 0; i < visiblePanels.length; i++) {
-        if (visiblePanels[i] !== panel) {
-          parent$$1 = visiblePanels[i].parent();
-          while (parent$$1 && (parent$$1 = parent$$1.parent())) {
-            if (parent$$1 === panel) {
-              visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+    function repositionPanel$1(panel) {
+      var scrollY$$1 = funcs.getViewPort().y;
+      function toggleFixedChildPanels(fixed, deltaY) {
+        var parent$$1;
+        for (var i = 0; i < visiblePanels.length; i++) {
+          if (visiblePanels[i] !== panel) {
+            parent$$1 = visiblePanels[i].parent();
+            while (parent$$1 && (parent$$1 = parent$$1.parent())) {
+              if (parent$$1 === panel) {
+                visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+              }
             }
           }
         }
       }
-    }
-    if (panel.settings.autofix) {
-      if (!panel.state.get('fixed')) {
-        panel._autoFixY = panel.layoutRect().y;
-        if (panel._autoFixY < scrollY$$1) {
-          panel.fixed(true).layoutRect({ y: 0 }).repaint();
-          toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);
+      if (panel.settings.autofix) {
+        if (!panel.state.get('fixed')) {
+          panel._autoFixY = panel.layoutRect().y;
+          if (panel._autoFixY < scrollY$$1) {
+            panel.fixed(true).layoutRect({ y: 0 }).repaint();
+            toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);
+          }
+        } else {
+          if (panel._autoFixY > scrollY$$1) {
+            panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
+            toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);
+          }
         }
-      } else {
-        if (panel._autoFixY > scrollY$$1) {
-          panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
-          toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);
-        }
       }
     }
-  }
-  function addRemove(add, ctrl) {
-    var i, zIndex = FloatPanel.zIndex || 65535, topModal;
-    if (add) {
-      zOrder.push(ctrl);
-    } else {
-      i = zOrder.length;
-      while (i--) {
-        if (zOrder[i] === ctrl) {
-          zOrder.splice(i, 1);
+    function addRemove(add, ctrl) {
+      var i, zIndex = FloatPanel.zIndex || 65535, topModal;
+      if (add) {
+        zOrder.push(ctrl);
+      } else {
+        i = zOrder.length;
+        while (i--) {
+          if (zOrder[i] === ctrl) {
+            zOrder.splice(i, 1);
+          }
         }
       }
-    }
-    if (zOrder.length) {
-      for (i = 0; i < zOrder.length; i++) {
-        if (zOrder[i].modal) {
+      if (zOrder.length) {
+        for (i = 0; i < zOrder.length; i++) {
+          if (zOrder[i].modal) {
+            zIndex++;
+            topModal = zOrder[i];
+          }
+          zOrder[i].getEl().style.zIndex = zIndex;
+          zOrder[i].zIndex = zIndex;
           zIndex++;
-          topModal = zOrder[i];
         }
-        zOrder[i].getEl().style.zIndex = zIndex;
-        zOrder[i].zIndex = zIndex;
-        zIndex++;
       }
+      var modalBlockEl = global$7('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];
+      if (topModal) {
+        global$7(modalBlockEl).css('z-index', topModal.zIndex - 1);
+      } else if (modalBlockEl) {
+        modalBlockEl.parentNode.removeChild(modalBlockEl);
+        hasModal = false;
+      }
+      FloatPanel.currentZIndex = zIndex;
     }
-    var modalBlockEl = global$7('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];
-    if (topModal) {
-      global$7(modalBlockEl).css('z-index', topModal.zIndex - 1);
-    } else if (modalBlockEl) {
-      modalBlockEl.parentNode.removeChild(modalBlockEl);
-      hasModal = false;
-    }
-    FloatPanel.currentZIndex = zIndex;
-  }
-  var FloatPanel = Panel.extend({
-    Mixins: [
-      $_8zu82i18yjjgwek2l,
-      $_20hy1119bjjgwek4f
-    ],
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      self$$1._eventsRoot = self$$1;
-      self$$1.classes.add('floatpanel');
-      if (settings.autohide) {
-        bindDocumentClickHandler();
-        bindWindowResizeHandler();
-        visiblePanels.push(self$$1);
-      }
-      if (settings.autofix) {
-        bindDocumentScrollHandler();
-        self$$1.on('move', function () {
-          repositionPanel$1(this);
+    var FloatPanel = Panel.extend({
+      Mixins: [
+        Movable,
+        Resizable
+      ],
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        self$$1._eventsRoot = self$$1;
+        self$$1.classes.add('floatpanel');
+        if (settings.autohide) {
+          bindDocumentClickHandler();
+          bindWindowResizeHandler();
+          visiblePanels.push(self$$1);
+        }
+        if (settings.autofix) {
+          bindDocumentScrollHandler();
+          self$$1.on('move', function () {
+            repositionPanel$1(this);
+          });
+        }
+        self$$1.on('postrender show', function (e) {
+          if (e.control === self$$1) {
+            var $modalBlockEl_1;
+            var prefix_1 = self$$1.classPrefix;
+            if (self$$1.modal && !hasModal) {
+              $modalBlockEl_1 = global$7('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());
+              if (!$modalBlockEl_1[0]) {
+                $modalBlockEl_1 = global$7('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self$$1.getContainerElm());
+              }
+              global$3.setTimeout(function () {
+                $modalBlockEl_1.addClass(prefix_1 + 'in');
+                global$7(self$$1.getEl()).addClass(prefix_1 + 'in');
+              });
+              hasModal = true;
+            }
+            addRemove(true, self$$1);
+          }
         });
-      }
-      self$$1.on('postrender show', function (e) {
-        if (e.control === self$$1) {
-          var $modalBlockEl_1;
-          var prefix_1 = self$$1.classPrefix;
-          if (self$$1.modal && !hasModal) {
-            $modalBlockEl_1 = global$7('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());
-            if (!$modalBlockEl_1[0]) {
-              $modalBlockEl_1 = global$7('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self$$1.getContainerElm());
+        self$$1.on('show', function () {
+          self$$1.parents().each(function (ctrl) {
+            if (ctrl.state.get('fixed')) {
+              self$$1.fixed(true);
+              return false;
             }
-            global$3.setTimeout(function () {
-              $modalBlockEl_1.addClass(prefix_1 + 'in');
-              global$7(self$$1.getEl()).addClass(prefix_1 + 'in');
-            });
-            hasModal = true;
+          });
+        });
+        if (settings.popover) {
+          self$$1._preBodyHtml = '<div class="' + self$$1.classPrefix + 'arrow"></div>';
+          self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');
+        }
+        self$$1.aria('label', settings.ariaLabel);
+        self$$1.aria('labelledby', self$$1._id);
+        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
+      },
+      fixed: function (state) {
+        var self$$1 = this;
+        if (self$$1.state.get('fixed') !== state) {
+          if (self$$1.state.get('rendered')) {
+            var viewport = funcs.getViewPort();
+            if (state) {
+              self$$1.layoutRect().y -= viewport.y;
+            } else {
+              self$$1.layoutRect().y += viewport.y;
+            }
           }
-          addRemove(true, self$$1);
+          self$$1.classes.toggle('fixed', state);
+          self$$1.state.set('fixed', state);
         }
-      });
-      self$$1.on('show', function () {
-        self$$1.parents().each(function (ctrl) {
-          if (ctrl.state.get('fixed')) {
-            self$$1.fixed(true);
-            return false;
+        return self$$1;
+      },
+      show: function () {
+        var self$$1 = this;
+        var i;
+        var state = self$$1._super();
+        i = visiblePanels.length;
+        while (i--) {
+          if (visiblePanels[i] === self$$1) {
+            break;
           }
-        });
-      });
-      if (settings.popover) {
-        self$$1._preBodyHtml = '<div class="' + self$$1.classPrefix + 'arrow"></div>';
-        self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');
+        }
+        if (i === -1) {
+          visiblePanels.push(self$$1);
+        }
+        return state;
+      },
+      hide: function () {
+        removeVisiblePanel(this);
+        addRemove(false, this);
+        return this._super();
+      },
+      hideAll: function () {
+        FloatPanel.hideAll();
+      },
+      close: function () {
+        var self$$1 = this;
+        if (!self$$1.fire('close').isDefaultPrevented()) {
+          self$$1.remove();
+          addRemove(false, self$$1);
+        }
+        return self$$1;
+      },
+      remove: function () {
+        removeVisiblePanel(this);
+        this._super();
+      },
+      postRender: function () {
+        var self$$1 = this;
+        if (self$$1.settings.bodyRole) {
+          this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);
+        }
+        return self$$1._super();
       }
-      self$$1.aria('label', settings.ariaLabel);
-      self$$1.aria('labelledby', self$$1._id);
-      self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
-    },
-    fixed: function (state) {
-      var self$$1 = this;
-      if (self$$1.state.get('fixed') !== state) {
-        if (self$$1.state.get('rendered')) {
-          var viewport = funcs.getViewPort();
-          if (state) {
-            self$$1.layoutRect().y -= viewport.y;
-          } else {
-            self$$1.layoutRect().y += viewport.y;
-          }
+    });
+    FloatPanel.hideAll = function () {
+      var i = visiblePanels.length;
+      while (i--) {
+        var panel = visiblePanels[i];
+        if (panel && panel.settings.autohide) {
+          panel.hide();
+          visiblePanels.splice(i, 1);
         }
-        self$$1.classes.toggle('fixed', state);
-        self$$1.state.set('fixed', state);
       }
-      return self$$1;
-    },
-    show: function () {
-      var self$$1 = this;
+    };
+    function removeVisiblePanel(panel) {
       var i;
-      var state = self$$1._super();
       i = visiblePanels.length;
       while (i--) {
-        if (visiblePanels[i] === self$$1) {
-          break;
+        if (visiblePanels[i] === panel) {
+          visiblePanels.splice(i, 1);
         }
       }
-      if (i === -1) {
-        visiblePanels.push(self$$1);
+      i = zOrder.length;
+      while (i--) {
+        if (zOrder[i] === panel) {
+          zOrder.splice(i, 1);
+        }
       }
-      return state;
-    },
-    hide: function () {
-      removeVisiblePanel(this);
-      addRemove(false, this);
-      return this._super();
-    },
-    hideAll: function () {
-      FloatPanel.hideAll();
-    },
-    close: function () {
-      var self$$1 = this;
-      if (!self$$1.fire('close').isDefaultPrevented()) {
-        self$$1.remove();
-        addRemove(false, self$$1);
+    }
+
+    var windows = [];
+    var oldMetaValue = '';
+    function toggleFullScreenState(state) {
+      var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';
+      var viewport = global$7('meta[name=viewport]')[0], contentValue;
+      if (global$1.overrideViewPort === false) {
+        return;
       }
-      return self$$1;
-    },
-    remove: function () {
-      removeVisiblePanel(this);
-      this._super();
-    },
-    postRender: function () {
-      var self$$1 = this;
-      if (self$$1.settings.bodyRole) {
-        this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);
+      if (!viewport) {
+        viewport = document.createElement('meta');
+        viewport.setAttribute('name', 'viewport');
+        document.getElementsByTagName('head')[0].appendChild(viewport);
       }
-      return self$$1._super();
-    }
-  });
-  FloatPanel.hideAll = function () {
-    var i = visiblePanels.length;
-    while (i--) {
-      var panel = visiblePanels[i];
-      if (panel && panel.settings.autohide) {
-        panel.hide();
-        visiblePanels.splice(i, 1);
+      contentValue = viewport.getAttribute('content');
+      if (contentValue && typeof oldMetaValue !== 'undefined') {
+        oldMetaValue = contentValue;
       }
+      viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);
     }
-  };
-  function removeVisiblePanel(panel) {
-    var i;
-    i = visiblePanels.length;
-    while (i--) {
-      if (visiblePanels[i] === panel) {
-        visiblePanels.splice(i, 1);
+    function toggleBodyFullScreenClasses(classPrefix, state) {
+      if (checkFullscreenWindows() && state === false) {
+        global$7([
+          document.documentElement,
+          document.body
+        ]).removeClass(classPrefix + 'fullscreen');
       }
     }
-    i = zOrder.length;
-    while (i--) {
-      if (zOrder[i] === panel) {
-        zOrder.splice(i, 1);
+    function checkFullscreenWindows() {
+      for (var i = 0; i < windows.length; i++) {
+        if (windows[i]._fullscreen) {
+          return true;
+        }
       }
+      return false;
     }
-  }
-
-  var windows = [];
-  var oldMetaValue = '';
-  function toggleFullScreenState(state) {
-    var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';
-    var viewport = global$7('meta[name=viewport]')[0], contentValue;
-    if (global$1.overrideViewPort === false) {
-      return;
-    }
-    if (!viewport) {
-      viewport = document.createElement('meta');
-      viewport.setAttribute('name', 'viewport');
-      document.getElementsByTagName('head')[0].appendChild(viewport);
-    }
-    contentValue = viewport.getAttribute('content');
-    if (contentValue && typeof oldMetaValue !== 'undefined') {
-      oldMetaValue = contentValue;
-    }
-    viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);
-  }
-  function toggleBodyFullScreenClasses(classPrefix, state) {
-    if (checkFullscreenWindows() && state === false) {
-      global$7([
-        document.documentElement,
-        document.body
-      ]).removeClass(classPrefix + 'fullscreen');
-    }
-  }
-  function checkFullscreenWindows() {
-    for (var i = 0; i < windows.length; i++) {
-      if (windows[i]._fullscreen) {
-        return true;
+    function handleWindowResize() {
+      if (!global$1.desktop) {
+        var lastSize_1 = {
+          w: window.innerWidth,
+          h: window.innerHeight
+        };
+        global$3.setInterval(function () {
+          var w = window.innerWidth, h = window.innerHeight;
+          if (lastSize_1.w !== w || lastSize_1.h !== h) {
+            lastSize_1 = {
+              w: w,
+              h: h
+            };
+            global$7(window).trigger('resize');
+          }
+        }, 100);
       }
-    }
-    return false;
-  }
-  function handleWindowResize() {
-    if (!global$1.desktop) {
-      var lastSize_1 = {
-        w: window.innerWidth,
-        h: window.innerHeight
-      };
-      global$3.setInterval(function () {
-        var w = window.innerWidth, h = window.innerHeight;
-        if (lastSize_1.w !== w || lastSize_1.h !== h) {
-          lastSize_1 = {
-            w: w,
-            h: h
-          };
-          global$7(window).trigger('resize');
+      function reposition() {
+        var i;
+        var rect = funcs.getWindowSize();
+        var layoutRect;
+        for (i = 0; i < windows.length; i++) {
+          layoutRect = windows[i].layoutRect();
+          windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));
         }
-      }, 100);
-    }
-    function reposition() {
-      var i;
-      var rect = funcs.getWindowSize();
-      var layoutRect;
-      for (i = 0; i < windows.length; i++) {
-        layoutRect = windows[i].layoutRect();
-        windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));
       }
+      global$7(window).on('resize', reposition);
     }
-    global$7(window).on('resize', reposition);
-  }
-  var Window$$1 = FloatPanel.extend({
-    modal: true,
-    Defaults: {
-      border: 1,
-      layout: 'flex',
-      containerCls: 'panel',
-      role: 'dialog',
-      callbacks: {
-        submit: function () {
-          this.fire('submit', { data: this.toJSON() });
-        },
-        close: function () {
-          this.close();
+    var Window$$1 = FloatPanel.extend({
+      modal: true,
+      Defaults: {
+        border: 1,
+        layout: 'flex',
+        containerCls: 'panel',
+        role: 'dialog',
+        callbacks: {
+          submit: function () {
+            this.fire('submit', { data: this.toJSON() });
+          },
+          close: function () {
+            this.close();
+          }
         }
-      }
-    },
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      if (self$$1.isRtl()) {
-        self$$1.classes.add('rtl');
-      }
-      self$$1.classes.add('window');
-      self$$1.bodyClasses.add('window-body');
-      self$$1.state.set('fixed', true);
-      if (settings.buttons) {
-        self$$1.statusbar = new Panel({
-          layout: 'flex',
-          border: '1 0 0 0',
-          spacing: 3,
-          padding: 10,
-          align: 'center',
-          pack: self$$1.isRtl() ? 'start' : 'end',
-          defaults: { type: 'button' },
-          items: settings.buttons
+      },
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        if (self$$1.isRtl()) {
+          self$$1.classes.add('rtl');
+        }
+        self$$1.classes.add('window');
+        self$$1.bodyClasses.add('window-body');
+        self$$1.state.set('fixed', true);
+        if (settings.buttons) {
+          self$$1.statusbar = new Panel({
+            layout: 'flex',
+            border: '1 0 0 0',
+            spacing: 3,
+            padding: 10,
+            align: 'center',
+            pack: self$$1.isRtl() ? 'start' : 'end',
+            defaults: { type: 'button' },
+            items: settings.buttons
+          });
+          self$$1.statusbar.classes.add('foot');
+          self$$1.statusbar.parent(self$$1);
+        }
+        self$$1.on('click', function (e) {
+          var closeClass = self$$1.classPrefix + 'close';
+          if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {
+            self$$1.close();
+          }
         });
-        self$$1.statusbar.classes.add('foot');
-        self$$1.statusbar.parent(self$$1);
-      }
-      self$$1.on('click', function (e) {
-        var closeClass = self$$1.classPrefix + 'close';
-        if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {
+        self$$1.on('cancel', function () {
           self$$1.close();
+        });
+        self$$1.on('move', function (e) {
+          if (e.control === self$$1) {
+            FloatPanel.hideAll();
+          }
+        });
+        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
+        self$$1.aria('label', settings.title);
+        self$$1._fullscreen = false;
+      },
+      recalc: function () {
+        var self$$1 = this;
+        var statusbar$$1 = self$$1.statusbar;
+        var layoutRect, width, x, needsRecalc;
+        if (self$$1._fullscreen) {
+          self$$1.layoutRect(funcs.getWindowSize());
+          self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;
         }
-      });
-      self$$1.on('cancel', function () {
-        self$$1.close();
-      });
-      self$$1.on('move', function (e) {
-        if (e.control === self$$1) {
-          FloatPanel.hideAll();
+        self$$1._super();
+        layoutRect = self$$1.layoutRect();
+        if (self$$1.settings.title && !self$$1._fullscreen) {
+          width = layoutRect.headerW;
+          if (width > layoutRect.w) {
+            x = layoutRect.x - Math.max(0, width / 2);
+            self$$1.layoutRect({
+              w: width,
+              x: x
+            });
+            needsRecalc = true;
+          }
         }
-      });
-      self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
-      self$$1.aria('label', settings.title);
-      self$$1._fullscreen = false;
-    },
-    recalc: function () {
-      var self$$1 = this;
-      var statusbar$$1 = self$$1.statusbar;
-      var layoutRect, width, x, needsRecalc;
-      if (self$$1._fullscreen) {
-        self$$1.layoutRect(funcs.getWindowSize());
-        self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;
-      }
-      self$$1._super();
-      layoutRect = self$$1.layoutRect();
-      if (self$$1.settings.title && !self$$1._fullscreen) {
-        width = layoutRect.headerW;
-        if (width > layoutRect.w) {
-          x = layoutRect.x - Math.max(0, width / 2);
-          self$$1.layoutRect({
-            w: width,
-            x: x
-          });
-          needsRecalc = true;
+        if (statusbar$$1) {
+          statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();
+          width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;
+          if (width > layoutRect.w) {
+            x = layoutRect.x - Math.max(0, width - layoutRect.w);
+            self$$1.layoutRect({
+              w: width,
+              x: x
+            });
+            needsRecalc = true;
+          }
         }
-      }
-      if (statusbar$$1) {
-        statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();
-        width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;
-        if (width > layoutRect.w) {
-          x = layoutRect.x - Math.max(0, width - layoutRect.w);
-          self$$1.layoutRect({
-            w: width,
-            x: x
-          });
-          needsRecalc = true;
+        if (needsRecalc) {
+          self$$1.recalc();
         }
-      }
-      if (needsRecalc) {
-        self$$1.recalc();
-      }
-    },
-    initLayoutRect: function () {
-      var self$$1 = this;
-      var layoutRect = self$$1._super();
-      var deltaH = 0, headEl;
-      if (self$$1.settings.title && !self$$1._fullscreen) {
-        headEl = self$$1.getEl('head');
-        var size = funcs.getSize(headEl);
-        layoutRect.headerW = size.width;
-        layoutRect.headerH = size.height;
-        deltaH += layoutRect.headerH;
-      }
-      if (self$$1.statusbar) {
-        deltaH += self$$1.statusbar.layoutRect().h;
-      }
-      layoutRect.deltaH += deltaH;
-      layoutRect.minH += deltaH;
-      layoutRect.h += deltaH;
-      var rect = funcs.getWindowSize();
-      layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
-      layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
-      return layoutRect;
-    },
-    renderHtml: function () {
-      var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;
-      var settings = self$$1.settings;
-      var headerHtml = '', footerHtml = '', html = settings.html;
-      self$$1.preRender();
-      layout.preRender(self$$1);
-      if (settings.title) {
-        headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self$$1.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
-      }
-      if (settings.url) {
-        html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
-      }
-      if (typeof html === 'undefined') {
-        html = layout.renderHtml(self$$1);
-      }
-      if (self$$1.statusbar) {
-        footerHtml = self$$1.statusbar.renderHtml();
-      }
-      return '<div id="' + id + '" class="' + self$$1.classes + '" hidefocus="1">' + '<div class="' + self$$1.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self$$1.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
-    },
-    fullscreen: function (state) {
-      var self$$1 = this;
-      var documentElement = document.documentElement;
-      var slowRendering;
-      var prefix = self$$1.classPrefix;
-      var layoutRect;
-      if (state !== self$$1._fullscreen) {
-        global$7(window).on('resize', function () {
-          var time;
-          if (self$$1._fullscreen) {
-            if (!slowRendering) {
-              time = new Date().getTime();
-              var rect = funcs.getWindowSize();
-              self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
-              if (new Date().getTime() - time > 50) {
-                slowRendering = true;
+      },
+      initLayoutRect: function () {
+        var self$$1 = this;
+        var layoutRect = self$$1._super();
+        var deltaH = 0, headEl;
+        if (self$$1.settings.title && !self$$1._fullscreen) {
+          headEl = self$$1.getEl('head');
+          var size = funcs.getSize(headEl);
+          layoutRect.headerW = size.width;
+          layoutRect.headerH = size.height;
+          deltaH += layoutRect.headerH;
+        }
+        if (self$$1.statusbar) {
+          deltaH += self$$1.statusbar.layoutRect().h;
+        }
+        layoutRect.deltaH += deltaH;
+        layoutRect.minH += deltaH;
+        layoutRect.h += deltaH;
+        var rect = funcs.getWindowSize();
+        layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
+        layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
+        return layoutRect;
+      },
+      renderHtml: function () {
+        var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;
+        var settings = self$$1.settings;
+        var headerHtml = '', footerHtml = '', html = settings.html;
+        self$$1.preRender();
+        layout.preRender(self$$1);
+        if (settings.title) {
+          headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self$$1.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
+        }
+        if (settings.url) {
+          html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
+        }
+        if (typeof html === 'undefined') {
+          html = layout.renderHtml(self$$1);
+        }
+        if (self$$1.statusbar) {
+          footerHtml = self$$1.statusbar.renderHtml();
+        }
+        return '<div id="' + id + '" class="' + self$$1.classes + '" hidefocus="1">' + '<div class="' + self$$1.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self$$1.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
+      },
+      fullscreen: function (state) {
+        var self$$1 = this;
+        var documentElement = document.documentElement;
+        var slowRendering;
+        var prefix = self$$1.classPrefix;
+        var layoutRect;
+        if (state !== self$$1._fullscreen) {
+          global$7(window).on('resize', function () {
+            var time;
+            if (self$$1._fullscreen) {
+              if (!slowRendering) {
+                time = new Date().getTime();
+                var rect = funcs.getWindowSize();
+                self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
+                if (new Date().getTime() - time > 50) {
+                  slowRendering = true;
+                }
+              } else {
+                if (!self$$1._timer) {
+                  self$$1._timer = global$3.setTimeout(function () {
+                    var rect = funcs.getWindowSize();
+                    self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
+                    self$$1._timer = 0;
+                  }, 50);
+                }
               }
-            } else {
-              if (!self$$1._timer) {
-                self$$1._timer = global$3.setTimeout(function () {
-                  var rect = funcs.getWindowSize();
-                  self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
-                  self$$1._timer = 0;
-                }, 50);
-              }
             }
+          });
+          layoutRect = self$$1.layoutRect();
+          self$$1._fullscreen = state;
+          if (!state) {
+            self$$1.borderBox = BoxUtils.parseBox(self$$1.settings.border);
+            self$$1.getEl('head').style.display = '';
+            layoutRect.deltaH += layoutRect.headerH;
+            global$7([
+              documentElement,
+              document.body
+            ]).removeClass(prefix + 'fullscreen');
+            self$$1.classes.remove('fullscreen');
+            self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);
+          } else {
+            self$$1._initial = {
+              x: layoutRect.x,
+              y: layoutRect.y,
+              w: layoutRect.w,
+              h: layoutRect.h
+            };
+            self$$1.borderBox = BoxUtils.parseBox('0');
+            self$$1.getEl('head').style.display = 'none';
+            layoutRect.deltaH -= layoutRect.headerH + 2;
+            global$7([
+              documentElement,
+              document.body
+            ]).addClass(prefix + 'fullscreen');
+            self$$1.classes.add('fullscreen');
+            var rect = funcs.getWindowSize();
+            self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
           }
-        });
-        layoutRect = self$$1.layoutRect();
-        self$$1._fullscreen = state;
-        if (!state) {
-          self$$1.borderBox = $_4kbuyt18pjjgwek1w.parseBox(self$$1.settings.border);
-          self$$1.getEl('head').style.display = '';
-          layoutRect.deltaH += layoutRect.headerH;
-          global$7([
-            documentElement,
-            document.body
-          ]).removeClass(prefix + 'fullscreen');
-          self$$1.classes.remove('fullscreen');
-          self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);
-        } else {
-          self$$1._initial = {
-            x: layoutRect.x,
-            y: layoutRect.y,
-            w: layoutRect.w,
-            h: layoutRect.h
-          };
-          self$$1.borderBox = $_4kbuyt18pjjgwek1w.parseBox('0');
-          self$$1.getEl('head').style.display = 'none';
-          layoutRect.deltaH -= layoutRect.headerH + 2;
-          global$7([
-            documentElement,
-            document.body
-          ]).addClass(prefix + 'fullscreen');
-          self$$1.classes.add('fullscreen');
-          var rect = funcs.getWindowSize();
-          self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
         }
-      }
-      return self$$1.reflow();
-    },
-    postRender: function () {
-      var self$$1 = this;
-      var startPos;
-      setTimeout(function () {
-        self$$1.classes.add('in');
-        self$$1.fire('open');
-      }, 0);
-      self$$1._super();
-      if (self$$1.statusbar) {
-        self$$1.statusbar.postRender();
-      }
-      self$$1.focus();
-      this.dragHelper = new DragHelper(self$$1._id + '-dragh', {
-        start: function () {
-          startPos = {
-            x: self$$1.layoutRect().x,
-            y: self$$1.layoutRect().y
-          };
-        },
-        drag: function (e) {
-          self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
+        return self$$1.reflow();
+      },
+      postRender: function () {
+        var self$$1 = this;
+        var startPos;
+        setTimeout(function () {
+          self$$1.classes.add('in');
+          self$$1.fire('open');
+        }, 0);
+        self$$1._super();
+        if (self$$1.statusbar) {
+          self$$1.statusbar.postRender();
         }
-      });
-      self$$1.on('submit', function (e) {
-        if (!e.isDefaultPrevented()) {
-          self$$1.close();
+        self$$1.focus();
+        this.dragHelper = new DragHelper(self$$1._id + '-dragh', {
+          start: function () {
+            startPos = {
+              x: self$$1.layoutRect().x,
+              y: self$$1.layoutRect().y
+            };
+          },
+          drag: function (e) {
+            self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
+          }
+        });
+        self$$1.on('submit', function (e) {
+          if (!e.isDefaultPrevented()) {
+            self$$1.close();
+          }
+        });
+        windows.push(self$$1);
+        toggleFullScreenState(true);
+      },
+      submit: function () {
+        return this.fire('submit', { data: this.toJSON() });
+      },
+      remove: function () {
+        var self$$1 = this;
+        var i;
+        self$$1.dragHelper.destroy();
+        self$$1._super();
+        if (self$$1.statusbar) {
+          this.statusbar.remove();
         }
-      });
-      windows.push(self$$1);
-      toggleFullScreenState(true);
-    },
-    submit: function () {
-      return this.fire('submit', { data: this.toJSON() });
-    },
-    remove: function () {
-      var self$$1 = this;
-      var i;
-      self$$1.dragHelper.destroy();
-      self$$1._super();
-      if (self$$1.statusbar) {
-        this.statusbar.remove();
-      }
-      toggleBodyFullScreenClasses(self$$1.classPrefix, false);
-      i = windows.length;
-      while (i--) {
-        if (windows[i] === self$$1) {
-          windows.splice(i, 1);
+        toggleBodyFullScreenClasses(self$$1.classPrefix, false);
+        i = windows.length;
+        while (i--) {
+          if (windows[i] === self$$1) {
+            windows.splice(i, 1);
+          }
         }
+        toggleFullScreenState(windows.length > 0);
+      },
+      getContentWindow: function () {
+        var ifr = this.getEl().getElementsByTagName('iframe')[0];
+        return ifr ? ifr.contentWindow : null;
       }
-      toggleFullScreenState(windows.length > 0);
-    },
-    getContentWindow: function () {
-      var ifr = this.getEl().getElementsByTagName('iframe')[0];
-      return ifr ? ifr.contentWindow : null;
-    }
-  });
-  handleWindowResize();
+    });
+    handleWindowResize();
 
-  var MessageBox = Window$$1.extend({
-    init: function (settings) {
-      settings = {
-        border: 1,
-        padding: 20,
-        layout: 'flex',
-        pack: 'center',
-        align: 'center',
-        containerCls: 'panel',
-        autoScroll: true,
-        buttons: {
-          type: 'button',
-          text: 'Ok',
-          action: 'ok'
-        },
-        items: {
-          type: 'label',
-          multiline: true,
-          maxWidth: 500,
-          maxHeight: 200
-        }
-      };
-      this._super(settings);
-    },
-    Statics: {
-      OK: 1,
-      OK_CANCEL: 2,
-      YES_NO: 3,
-      YES_NO_CANCEL: 4,
-      msgBox: function (settings) {
-        var buttons;
-        var callback = settings.callback || function () {
-        };
-        function createButton(text, status$$1, primary) {
-          return {
-            type: 'button',
-            text: text,
-            subtype: primary ? 'primary' : '',
-            onClick: function (e) {
-              e.control.parents()[1].close();
-              callback(status$$1);
-            }
-          };
-        }
-        switch (settings.buttons) {
-        case MessageBox.OK_CANCEL:
-          buttons = [
-            createButton('Ok', true, true),
-            createButton('Cancel', false)
-          ];
-          break;
-        case MessageBox.YES_NO:
-        case MessageBox.YES_NO_CANCEL:
-          buttons = [
-            createButton('Yes', 1, true),
-            createButton('No', 0)
-          ];
-          if (settings.buttons === MessageBox.YES_NO_CANCEL) {
-            buttons.push(createButton('Cancel', -1));
-          }
-          break;
-        default:
-          buttons = [createButton('Ok', true, true)];
-          break;
-        }
-        return new Window$$1({
+    var MessageBox = Window$$1.extend({
+      init: function (settings) {
+        settings = {
+          border: 1,
           padding: 20,
-          x: settings.x,
-          y: settings.y,
-          minWidth: 300,
-          minHeight: 100,
           layout: 'flex',
           pack: 'center',
           align: 'center',
-          buttons: buttons,
-          title: settings.title,
-          role: 'alertdialog',
+          containerCls: 'panel',
+          autoScroll: true,
+          buttons: {
+            type: 'button',
+            text: 'Ok',
+            action: 'ok'
+          },
           items: {
             type: 'label',
             multiline: true,
             maxWidth: 500,
-            maxHeight: 200,
-            text: settings.text
-          },
-          onPostRender: function () {
-            this.aria('describedby', this.items()[0]._id);
-          },
-          onClose: settings.onClose,
-          onCancel: function () {
-            callback(false);
+            maxHeight: 200
           }
-        }).renderTo(document.body).reflow();
+        };
+        this._super(settings);
       },
-      alert: function (settings, callback) {
-        if (typeof settings === 'string') {
-          settings = { text: settings };
-        }
-        settings.callback = callback;
-        return MessageBox.msgBox(settings);
-      },
-      confirm: function (settings, callback) {
-        if (typeof settings === 'string') {
-          settings = { text: settings };
-        }
-        settings.callback = callback;
-        settings.buttons = MessageBox.OK_CANCEL;
-        return MessageBox.msgBox(settings);
-      }
-    }
-  });
-
-  function WindowManagerImpl (editor) {
-    var open$$1 = function (args, params, closeCallback) {
-      var win;
-      args.title = args.title || ' ';
-      args.url = args.url || args.file;
-      if (args.url) {
-        args.width = parseInt(args.width || 320, 10);
-        args.height = parseInt(args.height || 240, 10);
-      }
-      if (args.body) {
-        args.items = {
-          defaults: args.defaults,
-          type: args.bodyType || 'form',
-          items: args.body,
-          data: args.data,
-          callbacks: args.commands
-        };
-      }
-      if (!args.url && !args.buttons) {
-        args.buttons = [
-          {
-            text: 'Ok',
-            subtype: 'primary',
-            onclick: function () {
-              win.find('form')[0].submit();
+      Statics: {
+        OK: 1,
+        OK_CANCEL: 2,
+        YES_NO: 3,
+        YES_NO_CANCEL: 4,
+        msgBox: function (settings) {
+          var buttons;
+          var callback = settings.callback || function () {
+          };
+          function createButton(text, status$$1, primary) {
+            return {
+              type: 'button',
+              text: text,
+              subtype: primary ? 'primary' : '',
+              onClick: function (e) {
+                e.control.parents()[1].close();
+                callback(status$$1);
+              }
+            };
+          }
+          switch (settings.buttons) {
+          case MessageBox.OK_CANCEL:
+            buttons = [
+              createButton('Ok', true, true),
+              createButton('Cancel', false)
+            ];
+            break;
+          case MessageBox.YES_NO:
+          case MessageBox.YES_NO_CANCEL:
+            buttons = [
+              createButton('Yes', 1, true),
+              createButton('No', 0)
+            ];
+            if (settings.buttons === MessageBox.YES_NO_CANCEL) {
+              buttons.push(createButton('Cancel', -1));
             }
-          },
-          {
-            text: 'Cancel',
-            onclick: function () {
-              win.close();
+            break;
+          default:
+            buttons = [createButton('Ok', true, true)];
+            break;
+          }
+          return new Window$$1({
+            padding: 20,
+            x: settings.x,
+            y: settings.y,
+            minWidth: 300,
+            minHeight: 100,
+            layout: 'flex',
+            pack: 'center',
+            align: 'center',
+            buttons: buttons,
+            title: settings.title,
+            role: 'alertdialog',
+            items: {
+              type: 'label',
+              multiline: true,
+              maxWidth: 500,
+              maxHeight: 200,
+              text: settings.text
+            },
+            onPostRender: function () {
+              this.aria('describedby', this.items()[0]._id);
+            },
+            onClose: settings.onClose,
+            onCancel: function () {
+              callback(false);
             }
+          }).renderTo(document.body).reflow();
+        },
+        alert: function (settings, callback) {
+          if (typeof settings === 'string') {
+            settings = { text: settings };
           }
-        ];
+          settings.callback = callback;
+          return MessageBox.msgBox(settings);
+        },
+        confirm: function (settings, callback) {
+          if (typeof settings === 'string') {
+            settings = { text: settings };
+          }
+          settings.callback = callback;
+          settings.buttons = MessageBox.OK_CANCEL;
+          return MessageBox.msgBox(settings);
+        }
       }
-      win = new Window$$1(args);
-      win.on('close', function () {
-        closeCallback(win);
-      });
-      if (args.data) {
-        win.on('postRender', function () {
-          this.find('*').each(function (ctrl) {
-            var name$$1 = ctrl.name();
-            if (name$$1 in args.data) {
-              ctrl.value(args.data[name$$1]);
+    });
+
+    function WindowManagerImpl (editor) {
+      var open$$1 = function (args, params, closeCallback) {
+        var win;
+        args.title = args.title || ' ';
+        args.url = args.url || args.file;
+        if (args.url) {
+          args.width = parseInt(args.width || 320, 10);
+          args.height = parseInt(args.height || 240, 10);
+        }
+        if (args.body) {
+          args.items = {
+            defaults: args.defaults,
+            type: args.bodyType || 'form',
+            items: args.body,
+            data: args.data,
+            callbacks: args.commands
+          };
+        }
+        if (!args.url && !args.buttons) {
+          args.buttons = [
+            {
+              text: 'Ok',
+              subtype: 'primary',
+              onclick: function () {
+                win.find('form')[0].submit();
+              }
+            },
+            {
+              text: 'Cancel',
+              onclick: function () {
+                win.close();
+              }
             }
+          ];
+        }
+        win = new Window$$1(args);
+        win.on('close', function () {
+          closeCallback(win);
+        });
+        if (args.data) {
+          win.on('postRender', function () {
+            this.find('*').each(function (ctrl) {
+              var name$$1 = ctrl.name();
+              if (name$$1 in args.data) {
+                ctrl.value(args.data[name$$1]);
+              }
+            });
           });
+        }
+        win.features = args || {};
+        win.params = params || {};
+        win = win.renderTo(document.body).reflow();
+        return win;
+      };
+      var alert$$1 = function (message, choiceCallback, closeCallback) {
+        var win;
+        win = MessageBox.alert(message, function () {
+          choiceCallback();
         });
-      }
-      win.features = args || {};
-      win.params = params || {};
-      win = win.renderTo(document.body).reflow();
-      return win;
+        win.on('close', function () {
+          closeCallback(win);
+        });
+        return win;
+      };
+      var confirm$$1 = function (message, choiceCallback, closeCallback) {
+        var win;
+        win = MessageBox.confirm(message, function (state) {
+          choiceCallback(state);
+        });
+        win.on('close', function () {
+          closeCallback(win);
+        });
+        return win;
+      };
+      var close$$1 = function (window$$1) {
+        window$$1.close();
+      };
+      var getParams = function (window$$1) {
+        return window$$1.params;
+      };
+      var setParams = function (window$$1, params) {
+        window$$1.params = params;
+      };
+      return {
+        open: open$$1,
+        alert: alert$$1,
+        confirm: confirm$$1,
+        close: close$$1,
+        getParams: getParams,
+        setParams: setParams
+      };
+    }
+
+    var get = function (editor, panel) {
+      var renderUI = function () {
+        return Render.renderUI(editor, panel);
+      };
+      return {
+        renderUI: renderUI,
+        getNotificationManagerImpl: function () {
+          return NotificationManagerImpl(editor);
+        },
+        getWindowManagerImpl: function () {
+          return WindowManagerImpl(editor);
+        }
+      };
     };
-    var alert$$1 = function (message, choiceCallback, closeCallback) {
-      var win;
-      win = MessageBox.alert(message, function () {
-        choiceCallback();
-      });
-      win.on('close', function () {
-        closeCallback(win);
-      });
-      return win;
+    var ThemeApi = { get: get };
+
+    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 confirm$$1 = function (message, choiceCallback, closeCallback) {
-      var win;
-      win = MessageBox.confirm(message, function (state) {
-        choiceCallback(state);
-      });
-      win.on('close', function () {
-        closeCallback(win);
-      });
-      return win;
+    var resolve = function (p, scope) {
+      var parts = p.split('.');
+      return path(parts, scope);
     };
-    var close$$1 = function (window$$1) {
-      window$$1.close();
-    };
-    var getParams = function (window$$1) {
-      return window$$1.params;
-    };
-    var setParams = function (window$$1, params) {
-      window$$1.params = params;
-    };
-    return {
-      open: open$$1,
-      alert: alert$$1,
-      confirm: confirm$$1,
-      close: close$$1,
-      getParams: getParams,
-      setParams: setParams
-    };
-  }
 
-  var get = function (editor, panel) {
-    var renderUI = function () {
-      return $_b0wxh217tjjgwejyx.renderUI(editor, panel);
+    var unsafe = function (name, scope) {
+      return resolve(name, scope);
     };
-    return {
-      renderUI: renderUI,
-      getNotificationManagerImpl: function () {
-        return NotificationManagerImpl(editor);
-      },
-      getWindowManagerImpl: function () {
-        return WindowManagerImpl(editor);
-      }
+    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 $_7y4x3k17sjjgwejyw = { get: get };
+    var Global$1 = { getOrDie: getOrDie };
 
-  var Global = typeof window !== 'undefined' ? window : Function('return this;')();
+    function FileReader () {
+      var f = Global$1.getOrDie('FileReader');
+      return new f();
+    }
 
-  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 global$c = tinymce.util.Tools.resolve('tinymce.util.Promise');
 
-  var unsafe = function (name, scope) {
-    return 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 $_8wnjhx19gjjgwek54 = { getOrDie: getOrDie };
+    var blobToBase64 = function (blob) {
+      return new global$c(function (resolve) {
+        var reader = FileReader();
+        reader.onloadend = function () {
+          resolve(reader.result.split(',')[1]);
+        };
+        reader.readAsDataURL(blob);
+      });
+    };
+    var Conversions = { blobToBase64: blobToBase64 };
 
-  function FileReader () {
-    var f = $_8wnjhx19gjjgwek54.getOrDie('FileReader');
-    return new f();
-  }
+    var pickFile = function () {
+      return new global$c(function (resolve) {
+        var fileInput;
+        fileInput = document.createElement('input');
+        fileInput.type = 'file';
+        fileInput.style.position = 'fixed';
+        fileInput.style.left = 0;
+        fileInput.style.top = 0;
+        fileInput.style.opacity = 0.001;
+        document.body.appendChild(fileInput);
+        fileInput.onchange = function (e) {
+          resolve(Array.prototype.slice.call(e.target.files));
+        };
+        fileInput.click();
+        fileInput.parentNode.removeChild(fileInput);
+      });
+    };
+    var Picker = { pickFile: pickFile };
 
-  var global$12 = tinymce.util.Tools.resolve('tinymce.util.Promise');
-
-  var blobToBase64 = function (blob) {
-    return new global$12(function (resolve) {
-      var reader = new FileReader();
-      reader.onloadend = function () {
-        resolve(reader.result.split(',')[1]);
+    var count$1 = 0;
+    var seed = function () {
+      var rnd = function () {
+        return Math.round(Math.random() * 4294967295).toString(36);
       };
-      reader.readAsDataURL(blob);
-    });
-  };
-  var $_c292419ejjgwek4z = { blobToBase64: blobToBase64 };
-
-  var pickFile = function () {
-    return new global$12(function (resolve) {
-      var fileInput;
-      fileInput = document.createElement('input');
-      fileInput.type = 'file';
-      fileInput.style.position = 'fixed';
-      fileInput.style.left = 0;
-      fileInput.style.top = 0;
-      fileInput.style.opacity = 0.001;
-      document.body.appendChild(fileInput);
-      fileInput.onchange = function (e) {
-        resolve(Array.prototype.slice.call(e.target.files));
-      };
-      fileInput.click();
-      fileInput.parentNode.removeChild(fileInput);
-    });
-  };
-  var $_edjfwb19kjjgwek5a = { pickFile: pickFile };
-
-  var count$1 = 0;
-  var seed = function () {
-    var rnd = function () {
-      return Math.round(Math.random() * 4294967295).toString(36);
+      return 's' + Date.now().toString(36) + rnd() + rnd() + rnd();
     };
-    return 's' + Date.now().toString(36) + rnd() + rnd() + rnd();
-  };
-  var uuid = function (prefix) {
-    return prefix + count$1++ + seed();
-  };
-  var $_49gxzf19mjjgwek5f = { uuid: uuid };
+    var uuid = function (prefix) {
+      return prefix + count$1++ + seed();
+    };
+    var Uuid = { uuid: uuid };
 
-  var create$1 = function (dom, rng) {
-    var bookmark = {};
-    function setupEndPoint(start) {
-      var offsetNode, container, offset;
-      container = rng[start ? 'startContainer' : 'endContainer'];
-      offset = rng[start ? 'startOffset' : 'endOffset'];
-      if (container.nodeType === 1) {
-        offsetNode = dom.create('span', { 'data-mce-type': 'bookmark' });
-        if (container.hasChildNodes()) {
-          offset = Math.min(offset, container.childNodes.length - 1);
-          if (start) {
-            container.insertBefore(offsetNode, container.childNodes[offset]);
+    var create$1 = function (dom, rng) {
+      var bookmark = {};
+      function setupEndPoint(start) {
+        var offsetNode, container, offset;
+        container = rng[start ? 'startContainer' : 'endContainer'];
+        offset = rng[start ? 'startOffset' : 'endOffset'];
+        if (container.nodeType === 1) {
+          offsetNode = dom.create('span', { 'data-mce-type': 'bookmark' });
+          if (container.hasChildNodes()) {
+            offset = Math.min(offset, container.childNodes.length - 1);
+            if (start) {
+              container.insertBefore(offsetNode, container.childNodes[offset]);
+            } else {
+              dom.insertAfter(offsetNode, container.childNodes[offset]);
+            }
           } else {
-            dom.insertAfter(offsetNode, container.childNodes[offset]);
+            container.appendChild(offsetNode);
           }
-        } else {
-          container.appendChild(offsetNode);
+          container = offsetNode;
+          offset = 0;
         }
-        container = offsetNode;
-        offset = 0;
+        bookmark[start ? 'startContainer' : 'endContainer'] = container;
+        bookmark[start ? 'startOffset' : 'endOffset'] = offset;
       }
-      bookmark[start ? 'startContainer' : 'endContainer'] = container;
-      bookmark[start ? 'startOffset' : 'endOffset'] = offset;
-    }
-    setupEndPoint(true);
-    if (!rng.collapsed) {
-      setupEndPoint();
-    }
-    return bookmark;
-  };
-  var resolve$1 = function (dom, bookmark) {
-    function restoreEndPoint(start) {
-      var container, offset, node;
-      function nodeIndex(container) {
-        var node = container.parentNode.firstChild, idx = 0;
-        while (node) {
-          if (node === container) {
-            return idx;
+      setupEndPoint(true);
+      if (!rng.collapsed) {
+        setupEndPoint();
+      }
+      return bookmark;
+    };
+    var resolve$1 = function (dom, bookmark) {
+      function restoreEndPoint(start) {
+        var container, offset, node;
+        function nodeIndex(container) {
+          var node = container.parentNode.firstChild, idx = 0;
+          while (node) {
+            if (node === container) {
+              return idx;
+            }
+            if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {
+              idx++;
+            }
+            node = node.nextSibling;
           }
-          if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {
-            idx++;
-          }
-          node = node.nextSibling;
+          return -1;
         }
-        return -1;
+        container = node = bookmark[start ? 'startContainer' : 'endContainer'];
+        offset = bookmark[start ? 'startOffset' : 'endOffset'];
+        if (!container) {
+          return;
+        }
+        if (container.nodeType === 1) {
+          offset = nodeIndex(container);
+          container = container.parentNode;
+          dom.remove(node);
+        }
+        bookmark[start ? 'startContainer' : 'endContainer'] = container;
+        bookmark[start ? 'startOffset' : 'endOffset'] = offset;
       }
-      container = node = bookmark[start ? 'startContainer' : 'endContainer'];
-      offset = bookmark[start ? 'startOffset' : 'endOffset'];
-      if (!container) {
-        return;
+      restoreEndPoint(true);
+      restoreEndPoint();
+      var rng = dom.createRng();
+      rng.setStart(bookmark.startContainer, bookmark.startOffset);
+      if (bookmark.endContainer) {
+        rng.setEnd(bookmark.endContainer, bookmark.endOffset);
       }
-      if (container.nodeType === 1) {
-        offset = nodeIndex(container);
-        container = container.parentNode;
-        dom.remove(node);
-      }
-      bookmark[start ? 'startContainer' : 'endContainer'] = container;
-      bookmark[start ? 'startOffset' : 'endOffset'] = offset;
-    }
-    restoreEndPoint(true);
-    restoreEndPoint();
-    var rng = dom.createRng();
-    rng.setStart(bookmark.startContainer, bookmark.startOffset);
-    if (bookmark.endContainer) {
-      rng.setEnd(bookmark.endContainer, bookmark.endOffset);
-    }
-    return rng;
-  };
-  var $_3b24e19ojjgwek5i = {
-    create: create$1,
-    resolve: resolve$1
-  };
+      return rng;
+    };
+    var Bookmark = {
+      create: create$1,
+      resolve: resolve$1
+    };
 
-  var global$13 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
+    var global$d = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
 
-  var global$14 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
+    var global$e = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
 
-  var getSelectedElements = function (rootElm, startNode, endNode) {
-    var walker, node;
-    var elms = [];
-    walker = new global$13(startNode, rootElm);
-    for (node = startNode; node; node = walker.next()) {
-      if (node.nodeType === 1) {
-        elms.push(node);
+    var getSelectedElements = function (rootElm, startNode, endNode) {
+      var walker, node;
+      var elms = [];
+      walker = new global$d(startNode, rootElm);
+      for (node = startNode; node; node = walker.next()) {
+        if (node.nodeType === 1) {
+          elms.push(node);
+        }
+        if (node === endNode) {
+          break;
+        }
       }
-      if (node === endNode) {
-        break;
-      }
-    }
-    return elms;
-  };
-  var unwrapElements = function (editor, elms) {
-    var bookmark, dom, selection;
-    dom = editor.dom;
-    selection = editor.selection;
-    bookmark = $_3b24e19ojjgwek5i.create(dom, selection.getRng());
-    global$4.each(elms, function (elm) {
-      editor.dom.remove(elm, true);
-    });
-    selection.setRng($_3b24e19ojjgwek5i.resolve(dom, bookmark));
-  };
-  var isLink = function (elm) {
-    return elm.nodeName === 'A' && elm.hasAttribute('href');
-  };
-  var getParentAnchorOrSelf = function (dom, elm) {
-    var anchorElm = dom.getParent(elm, isLink);
-    return anchorElm ? anchorElm : elm;
-  };
-  var getSelectedAnchors = function (editor) {
-    var startElm, endElm, rootElm, anchorElms, selection, dom, rng;
-    selection = editor.selection;
-    dom = editor.dom;
-    rng = selection.getRng();
-    startElm = getParentAnchorOrSelf(dom, global$14.getNode(rng.startContainer, rng.startOffset));
-    endElm = global$14.getNode(rng.endContainer, rng.endOffset);
-    rootElm = editor.getBody();
-    anchorElms = global$4.grep(getSelectedElements(rootElm, startElm, endElm), isLink);
-    return anchorElms;
-  };
-  var unlinkSelection = function (editor) {
-    unwrapElements(editor, getSelectedAnchors(editor));
-  };
-  var $_aunbnv19njjgwek5g = { unlinkSelection: unlinkSelection };
+      return elms;
+    };
+    var unwrapElements = function (editor, elms) {
+      var bookmark, dom, selection;
+      dom = editor.dom;
+      selection = editor.selection;
+      bookmark = Bookmark.create(dom, selection.getRng());
+      global$4.each(elms, function (elm) {
+        editor.dom.remove(elm, true);
+      });
+      selection.setRng(Bookmark.resolve(dom, bookmark));
+    };
+    var isLink = function (elm) {
+      return elm.nodeName === 'A' && elm.hasAttribute('href');
+    };
+    var getParentAnchorOrSelf = function (dom, elm) {
+      var anchorElm = dom.getParent(elm, isLink);
+      return anchorElm ? anchorElm : elm;
+    };
+    var getSelectedAnchors = function (editor) {
+      var startElm, endElm, rootElm, anchorElms, selection, dom, rng;
+      selection = editor.selection;
+      dom = editor.dom;
+      rng = selection.getRng();
+      startElm = getParentAnchorOrSelf(dom, global$e.getNode(rng.startContainer, rng.startOffset));
+      endElm = global$e.getNode(rng.endContainer, rng.endOffset);
+      rootElm = editor.getBody();
+      anchorElms = global$4.grep(getSelectedElements(rootElm, startElm, endElm), isLink);
+      return anchorElms;
+    };
+    var unlinkSelection = function (editor) {
+      unwrapElements(editor, getSelectedAnchors(editor));
+    };
+    var Unlink = { unlinkSelection: unlinkSelection };
 
-  var createTableHtml = function (cols, rows) {
-    var x, y, html;
-    html = '<table data-mce-id="mce" style="width: 100%">';
-    html += '<tbody>';
-    for (y = 0; y < rows; y++) {
-      html += '<tr>';
-      for (x = 0; x < cols; x++) {
-        html += '<td><br></td>';
+    var createTableHtml = function (cols, rows) {
+      var x, y, html;
+      html = '<table data-mce-id="mce" style="width: 100%">';
+      html += '<tbody>';
+      for (y = 0; y < rows; y++) {
+        html += '<tr>';
+        for (x = 0; x < cols; x++) {
+          html += '<td><br></td>';
+        }
+        html += '</tr>';
       }
-      html += '</tr>';
-    }
-    html += '</tbody>';
-    html += '</table>';
-    return html;
-  };
-  var getInsertedElement = function (editor) {
-    var elms = editor.dom.select('*[data-mce-id]');
-    return elms[0];
-  };
-  var insertTableHtml = function (editor, cols, rows) {
-    editor.undoManager.transact(function () {
-      var tableElm, cellElm;
-      editor.insertContent(createTableHtml(cols, rows));
-      tableElm = getInsertedElement(editor);
-      tableElm.removeAttribute('data-mce-id');
-      cellElm = editor.dom.select('td,th', tableElm);
-      editor.selection.setCursorLocation(cellElm[0], 0);
-    });
-  };
-  var insertTable = function (editor, cols, rows) {
-    editor.plugins.table ? editor.plugins.table.insertTable(cols, rows) : insertTableHtml(editor, cols, rows);
-  };
-  var formatBlock = function (editor, formatName) {
-    editor.execCommand('FormatBlock', false, formatName);
-  };
-  var insertBlob = function (editor, base64, blob) {
-    var blobCache, blobInfo;
-    blobCache = editor.editorUpload.blobCache;
-    blobInfo = blobCache.create($_49gxzf19mjjgwek5f.uuid('mceu'), blob, base64);
-    blobCache.add(blobInfo);
-    editor.insertContent(editor.dom.createHTML('img', { src: blobInfo.blobUri() }));
-  };
-  var collapseSelectionToEnd = function (editor) {
-    editor.selection.collapse(false);
-  };
-  var unlink = function (editor) {
-    editor.focus();
-    $_aunbnv19njjgwek5g.unlinkSelection(editor);
-    collapseSelectionToEnd(editor);
-  };
-  var changeHref = function (editor, elm, url) {
-    editor.focus();
-    editor.dom.setAttrib(elm, 'href', url);
-    collapseSelectionToEnd(editor);
-  };
-  var insertLink = function (editor, url) {
-    editor.execCommand('mceInsertLink', false, { href: url });
-    collapseSelectionToEnd(editor);
-  };
-  var updateOrInsertLink = function (editor, url) {
-    var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');
-    elm ? changeHref(editor, elm, url) : insertLink(editor, url);
-  };
-  var createLink = function (editor, url) {
-    url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url);
-  };
-  var $_elxm3u19ljjgwek5d = {
-    insertTable: insertTable,
-    formatBlock: formatBlock,
-    insertBlob: insertBlob,
-    createLink: createLink,
-    unlink: unlink
-  };
+      html += '</tbody>';
+      html += '</table>';
+      return html;
+    };
+    var getInsertedElement = function (editor) {
+      var elms = editor.dom.select('*[data-mce-id]');
+      return elms[0];
+    };
+    var insertTableHtml = function (editor, cols, rows) {
+      editor.undoManager.transact(function () {
+        var tableElm, cellElm;
+        editor.insertContent(createTableHtml(cols, rows));
+        tableElm = getInsertedElement(editor);
+        tableElm.removeAttribute('data-mce-id');
+        cellElm = editor.dom.select('td,th', tableElm);
+        editor.selection.setCursorLocation(cellElm[0], 0);
+      });
+    };
+    var insertTable = function (editor, cols, rows) {
+      editor.plugins.table ? editor.plugins.table.insertTable(cols, rows) : insertTableHtml(editor, cols, rows);
+    };
+    var formatBlock = function (editor, formatName) {
+      editor.execCommand('FormatBlock', false, formatName);
+    };
+    var insertBlob = function (editor, base64, blob) {
+      var blobCache, blobInfo;
+      blobCache = editor.editorUpload.blobCache;
+      blobInfo = blobCache.create(Uuid.uuid('mceu'), blob, base64);
+      blobCache.add(blobInfo);
+      editor.insertContent(editor.dom.createHTML('img', { src: blobInfo.blobUri() }));
+    };
+    var collapseSelectionToEnd = function (editor) {
+      editor.selection.collapse(false);
+    };
+    var unlink = function (editor) {
+      editor.focus();
+      Unlink.unlinkSelection(editor);
+      collapseSelectionToEnd(editor);
+    };
+    var changeHref = function (editor, elm, url) {
+      editor.focus();
+      editor.dom.setAttrib(elm, 'href', url);
+      collapseSelectionToEnd(editor);
+    };
+    var insertLink = function (editor, url) {
+      editor.execCommand('mceInsertLink', false, { href: url });
+      collapseSelectionToEnd(editor);
+    };
+    var updateOrInsertLink = function (editor, url) {
+      var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');
+      elm ? changeHref(editor, elm, url) : insertLink(editor, url);
+    };
+    var createLink = function (editor, url) {
+      url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url);
+    };
+    var Actions = {
+      insertTable: insertTable,
+      formatBlock: formatBlock,
+      insertBlob: insertBlob,
+      createLink: createLink,
+      unlink: unlink
+    };
 
-  var addHeaderButtons = function (editor) {
-    var formatBlock = function (name) {
-      return function () {
-        $_elxm3u19ljjgwek5d.formatBlock(editor, name);
+    var addHeaderButtons = function (editor) {
+      var formatBlock = function (name) {
+        return function () {
+          Actions.formatBlock(editor, name);
+        };
       };
+      for (var i = 1; i < 6; i++) {
+        var name = 'h' + i;
+        editor.addButton(name, {
+          text: name.toUpperCase(),
+          tooltip: 'Heading ' + i,
+          stateSelector: name,
+          onclick: formatBlock(name),
+          onPostRender: function () {
+            var span = this.getEl().firstChild.firstChild;
+            span.style.fontWeight = 'bold';
+          }
+        });
+      }
     };
-    for (var i = 1; i < 6; i++) {
-      var name = 'h' + i;
-      editor.addButton(name, {
-        text: name.toUpperCase(),
-        tooltip: 'Heading ' + i,
-        stateSelector: name,
-        onclick: formatBlock(name),
-        onPostRender: function () {
-          var span = this.getEl().firstChild.firstChild;
-          span.style.fontWeight = 'bold';
+    var addToEditor = function (editor, panel) {
+      editor.addButton('quicklink', {
+        icon: 'link',
+        tooltip: 'Insert/Edit link',
+        stateSelector: 'a[href]',
+        onclick: function () {
+          panel.showForm(editor, 'quicklink');
         }
       });
-    }
-  };
-  var addToEditor = function (editor, panel) {
-    editor.addButton('quicklink', {
-      icon: 'link',
-      tooltip: 'Insert/Edit link',
-      stateSelector: 'a[href]',
-      onclick: function () {
-        panel.showForm(editor, 'quicklink');
-      }
-    });
-    editor.addButton('quickimage', {
-      icon: 'image',
-      tooltip: 'Insert image',
-      onclick: function () {
-        $_edjfwb19kjjgwek5a.pickFile().then(function (files) {
-          var blob = files[0];
-          $_c292419ejjgwek4z.blobToBase64(blob).then(function (base64) {
-            $_elxm3u19ljjgwek5d.insertBlob(editor, base64, blob);
+      editor.addButton('quickimage', {
+        icon: 'image',
+        tooltip: 'Insert image',
+        onclick: function () {
+          Picker.pickFile().then(function (files) {
+            var blob = files[0];
+            Conversions.blobToBase64(blob).then(function (base64) {
+              Actions.insertBlob(editor, base64, blob);
+            });
           });
+        }
+      });
+      editor.addButton('quicktable', {
+        icon: 'table',
+        tooltip: 'Insert table',
+        onclick: function () {
+          panel.hide();
+          Actions.insertTable(editor, 2, 2);
+        }
+      });
+      addHeaderButtons(editor);
+    };
+    var Buttons = { addToEditor: addToEditor };
+
+    var getUiContainerDelta$1 = function () {
+      var uiContainer = global$1.container;
+      if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
+        var containerPos = global$2.DOM.getPos(uiContainer);
+        var dx = containerPos.x - uiContainer.scrollLeft;
+        var dy = containerPos.y - uiContainer.scrollTop;
+        return Option.some({
+          x: dx,
+          y: dy
         });
+      } else {
+        return Option.none();
       }
-    });
-    editor.addButton('quicktable', {
-      icon: 'table',
-      tooltip: 'Insert table',
-      onclick: function () {
-        panel.hide();
-        $_elxm3u19ljjgwek5d.insertTable(editor, 2, 2);
-      }
-    });
-    addHeaderButtons(editor);
-  };
-  var $_epdxt419djjgwek4l = { addToEditor: addToEditor };
+    };
+    var UiContainer$1 = { getUiContainerDelta: getUiContainerDelta$1 };
 
-  var getUiContainerDelta$1 = function () {
-    var uiContainer = global$1.container;
-    if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
-      var containerPos = global$2.DOM.getPos(uiContainer);
-      var dx = containerPos.x - uiContainer.scrollLeft;
-      var dy = containerPos.y - uiContainer.scrollTop;
-      return Option.some({
-        x: dx,
-        y: dy
-      });
-    } else {
-      return Option.none();
-    }
-  };
-  var $_9hbv4x19sjjgwek5q = { getUiContainerDelta: getUiContainerDelta$1 };
+    var isDomainLike = function (href) {
+      return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim());
+    };
+    var isAbsolute = function (href) {
+      return /^https?:\/\//.test(href.trim());
+    };
+    var UrlType = {
+      isDomainLike: isDomainLike,
+      isAbsolute: isAbsolute
+    };
 
-  var isDomainLike = function (href) {
-    return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim());
-  };
-  var isAbsolute = function (href) {
-    return /^https?:\/\//.test(href.trim());
-  };
-  var $_5y05uk19ujjgwek5w = {
-    isDomainLike: isDomainLike,
-    isAbsolute: isAbsolute
-  };
-
-  var focusFirstTextBox = function (form) {
-    form.find('textbox').eq(0).each(function (ctrl) {
-      ctrl.focus();
-    });
-  };
-  var createForm = function (name, spec) {
-    var form = global$11.create(global$4.extend({
-      type: 'form',
-      layout: 'flex',
-      direction: 'row',
-      padding: 5,
-      name: name,
-      spacing: 3
-    }, spec));
-    form.on('show', function () {
-      focusFirstTextBox(form);
-    });
-    return form;
-  };
-  var toggleVisibility = function (ctrl, state) {
-    return state ? ctrl.show() : ctrl.hide();
-  };
-  var askAboutPrefix = function (editor, href) {
-    return new global$12(function (resolve) {
-      editor.windowManager.confirm('The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (result) {
-        var output = result === true ? 'http://' + href : href;
-        resolve(output);
+    var focusFirstTextBox = function (form) {
+      form.find('textbox').eq(0).each(function (ctrl) {
+        ctrl.focus();
       });
-    });
-  };
-  var convertLinkToAbsolute = function (editor, href) {
-    return !$_5y05uk19ujjgwek5w.isAbsolute(href) && $_5y05uk19ujjgwek5w.isDomainLike(href) ? askAboutPrefix(editor, href) : global$12.resolve(href);
-  };
-  var createQuickLinkForm = function (editor, hide) {
-    var attachState = {};
-    var unlink = function () {
-      editor.focus();
-      $_elxm3u19ljjgwek5d.unlink(editor);
-      hide();
     };
-    var onChangeHandler = function (e) {
-      var meta = e.meta;
-      if (meta && meta.attach) {
-        attachState = {
-          href: this.value(),
-          attach: meta.attach
-        };
-      }
+    var createForm = function (name, spec) {
+      var form = global$b.create(global$4.extend({
+        type: 'form',
+        layout: 'flex',
+        direction: 'row',
+        padding: 5,
+        name: name,
+        spacing: 3
+      }, spec));
+      form.on('show', function () {
+        focusFirstTextBox(form);
+      });
+      return form;
     };
-    var onShowHandler = function (e) {
-      if (e.control === this) {
-        var elm = void 0, linkurl = '';
-        elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');
-        if (elm) {
-          linkurl = editor.dom.getAttrib(elm, 'href');
-        }
-        this.fromJSON({ linkurl: linkurl });
-        toggleVisibility(this.find('#unlink'), elm);
-        this.find('#linkurl')[0].focus();
-      }
+    var toggleVisibility = function (ctrl, state) {
+      return state ? ctrl.show() : ctrl.hide();
     };
-    return createForm('quicklink', {
-      items: [
-        {
-          type: 'button',
-          name: 'unlink',
-          icon: 'unlink',
-          onclick: unlink,
-          tooltip: 'Remove link'
-        },
-        {
-          type: 'filepicker',
-          name: 'linkurl',
-          placeholder: 'Paste or type a link',
-          filetype: 'file',
-          onchange: onChangeHandler
-        },
-        {
-          type: 'button',
-          icon: 'checkmark',
-          subtype: 'primary',
-          tooltip: 'Ok',
-          onclick: 'submit'
-        }
-      ],
-      onshow: onShowHandler,
-      onsubmit: function (e) {
-        convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) {
-          editor.undoManager.transact(function () {
-            if (url === attachState.href) {
-              attachState.attach();
-              attachState = {};
-            }
-            $_elxm3u19ljjgwek5d.createLink(editor, url);
-          });
-          hide();
+    var askAboutPrefix = function (editor, href) {
+      return new global$c(function (resolve) {
+        editor.windowManager.confirm('The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (result) {
+          var output = result === true ? 'http://' + href : href;
+          resolve(output);
         });
-      }
-    });
-  };
-  var $_amewps19tjjgwek5t = { createQuickLinkForm: createQuickLinkForm };
-
-  var getSelectorStateResult = function (itemName, item) {
-    var result = function (selector, handler) {
-      return {
-        selector: selector,
-        handler: handler
-      };
+      });
     };
-    var activeHandler = function (state) {
-      item.active(state);
+    var convertLinkToAbsolute = function (editor, href) {
+      return !UrlType.isAbsolute(href) && UrlType.isDomainLike(href) ? askAboutPrefix(editor, href) : global$c.resolve(href);
     };
-    var disabledHandler = function (state) {
-      item.disabled(state);
-    };
-    if (item.settings.stateSelector) {
-      return result(item.settings.stateSelector, activeHandler);
-    }
-    if (item.settings.disabledStateSelector) {
-      return result(item.settings.disabledStateSelector, disabledHandler);
-    }
-    return null;
-  };
-  var bindSelectorChanged = function (editor, itemName, item) {
-    return function () {
-      var result = getSelectorStateResult(itemName, item);
-      if (result !== null) {
-        editor.selection.selectorChanged(result.selector, result.handler);
-      }
-    };
-  };
-  var itemsToArray$1 = function (items) {
-    if ($_e4npq318ajjgwejzo.isArray(items)) {
-      return items;
-    } else if ($_e4npq318ajjgwejzo.isString(items)) {
-      return items.split(/[ ,]/);
-    }
-    return [];
-  };
-  var create$2 = function (editor, name, items) {
-    var toolbarItems = [];
-    var buttonGroup;
-    if (!items) {
-      return;
-    }
-    global$4.each(itemsToArray$1(items), function (item) {
-      if (item === '|') {
-        buttonGroup = null;
-      } else {
-        if (editor.buttons[item]) {
-          if (!buttonGroup) {
-            buttonGroup = {
-              type: 'buttongroup',
-              items: []
-            };
-            toolbarItems.push(buttonGroup);
+    var createQuickLinkForm = function (editor, hide) {
+      var attachState = {};
+      var unlink = function () {
+        editor.focus();
+        Actions.unlink(editor);
+        hide();
+      };
+      var onChangeHandler = function (e) {
+        var meta = e.meta;
+        if (meta && meta.attach) {
+          attachState = {
+            href: this.value(),
+            attach: meta.attach
+          };
+        }
+      };
+      var onShowHandler = function (e) {
+        if (e.control === this) {
+          var elm = void 0, linkurl = '';
+          elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');
+          if (elm) {
+            linkurl = editor.dom.getAttrib(elm, 'href');
           }
-          var button = editor.buttons[item];
-          if ($_e4npq318ajjgwejzo.isFunction(button)) {
-            button = button();
+          this.fromJSON({ linkurl: linkurl });
+          toggleVisibility(this.find('#unlink'), elm);
+          this.find('#linkurl')[0].focus();
+        }
+      };
+      return createForm('quicklink', {
+        items: [
+          {
+            type: 'button',
+            name: 'unlink',
+            icon: 'unlink',
+            onclick: unlink,
+            tooltip: 'Remove link'
+          },
+          {
+            type: 'filepicker',
+            name: 'linkurl',
+            placeholder: 'Paste or type a link',
+            filetype: 'file',
+            onchange: onChangeHandler
+          },
+          {
+            type: 'button',
+            icon: 'checkmark',
+            subtype: 'primary',
+            tooltip: 'Ok',
+            onclick: 'submit'
           }
-          button.type = button.type || 'button';
-          button = global$11.create(button);
-          button.on('postRender', bindSelectorChanged(editor, item, button));
-          buttonGroup.items.push(button);
+        ],
+        onshow: onShowHandler,
+        onsubmit: function (e) {
+          convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) {
+            editor.undoManager.transact(function () {
+              if (url === attachState.href) {
+                attachState.attach();
+                attachState = {};
+              }
+              Actions.createLink(editor, url);
+            });
+            hide();
+          });
         }
-      }
-    });
-    return global$11.create({
-      type: 'toolbar',
-      layout: 'flow',
-      name: name,
-      items: toolbarItems
-    });
-  };
-  var $_797pa819vjjgwek5x = { create: create$2 };
-
-  var create$3 = function () {
-    var panel, currentRect;
-    var createToolbars = function (editor, toolbars) {
-      return global$4.map(toolbars, function (toolbar) {
-        return $_797pa819vjjgwek5x.create(editor, toolbar.id, toolbar.items);
       });
     };
-    var hasToolbarItems = function (toolbar) {
-      return toolbar.items().length > 0;
+    var Forms = { createQuickLinkForm: createQuickLinkForm };
+
+    var getSelectorStateResult = function (itemName, item) {
+      var result = function (selector, handler) {
+        return {
+          selector: selector,
+          handler: handler
+        };
+      };
+      var activeHandler = function (state) {
+        item.active(state);
+      };
+      var disabledHandler = function (state) {
+        item.disabled(state);
+      };
+      if (item.settings.stateSelector) {
+        return result(item.settings.stateSelector, activeHandler);
+      }
+      if (item.settings.disabledStateSelector) {
+        return result(item.settings.disabledStateSelector, disabledHandler);
+      }
+      return null;
     };
-    var create = function (editor, toolbars) {
-      var items = createToolbars(editor, toolbars).concat([
-        $_797pa819vjjgwek5x.create(editor, 'text', $_4j2h42187jjgwejzk.getTextSelectionToolbarItems(editor)),
-        $_797pa819vjjgwek5x.create(editor, 'insert', $_4j2h42187jjgwejzk.getInsertToolbarItems(editor)),
-        $_amewps19tjjgwek5t.createQuickLinkForm(editor, hide)
-      ]);
-      return global$11.create({
-        type: 'floatpanel',
-        role: 'dialog',
-        classes: 'tinymce tinymce-inline arrow',
-        ariaLabel: 'Inline toolbar',
-        layout: 'flex',
-        direction: 'column',
-        align: 'stretch',
-        autohide: false,
-        autofix: true,
-        fixed: true,
-        border: 1,
-        items: global$4.grep(items, hasToolbarItems),
-        oncancel: function () {
-          editor.focus();
+    var bindSelectorChanged = function (editor, itemName, item) {
+      return function () {
+        var result = getSelectorStateResult(itemName, item);
+        if (result !== null) {
+          editor.selection.selectorChanged(result.selector, result.handler);
         }
-      });
+      };
     };
-    var showPanel = function (panel) {
-      if (panel) {
-        panel.show();
+    var itemsToArray$1 = function (items) {
+      if (Type.isArray(items)) {
+        return items;
+      } else if (Type.isString(items)) {
+        return items.split(/[ ,]/);
       }
+      return [];
     };
-    var movePanelTo = function (panel, pos) {
-      panel.moveTo(pos.x, pos.y);
+    var create$2 = function (editor, name, items) {
+      var toolbarItems = [];
+      var buttonGroup;
+      if (!items) {
+        return;
+      }
+      global$4.each(itemsToArray$1(items), function (item) {
+        if (item === '|') {
+          buttonGroup = null;
+        } else {
+          if (editor.buttons[item]) {
+            if (!buttonGroup) {
+              buttonGroup = {
+                type: 'buttongroup',
+                items: []
+              };
+              toolbarItems.push(buttonGroup);
+            }
+            var button = editor.buttons[item];
+            if (Type.isFunction(button)) {
+              button = button();
+            }
+            button.type = button.type || 'button';
+            button = global$b.create(button);
+            button.on('postRender', bindSelectorChanged(editor, item, button));
+            buttonGroup.items.push(button);
+          }
+        }
+      });
+      return global$b.create({
+        type: 'toolbar',
+        layout: 'flow',
+        name: name,
+        items: toolbarItems
+      });
     };
-    var togglePositionClass = function (panel, relPos) {
-      relPos = relPos ? relPos.substr(0, 2) : '';
-      global$4.each({
-        t: 'down',
-        b: 'up',
-        c: 'center'
-      }, function (cls, pos) {
-        panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1));
-      });
-      if (relPos === 'cr') {
-        panel.classes.toggle('arrow-left', true);
-        panel.classes.toggle('arrow-right', false);
-      } else if (relPos === 'cl') {
-        panel.classes.toggle('arrow-left', true);
-        panel.classes.toggle('arrow-right', true);
-      } else {
+    var Toolbar = { create: create$2 };
+
+    var create$3 = function () {
+      var panel, currentRect;
+      var createToolbars = function (editor, toolbars) {
+        return global$4.map(toolbars, function (toolbar) {
+          return Toolbar.create(editor, toolbar.id, toolbar.items);
+        });
+      };
+      var hasToolbarItems = function (toolbar) {
+        return toolbar.items().length > 0;
+      };
+      var create = function (editor, toolbars) {
+        var items = createToolbars(editor, toolbars).concat([
+          Toolbar.create(editor, 'text', Settings.getTextSelectionToolbarItems(editor)),
+          Toolbar.create(editor, 'insert', Settings.getInsertToolbarItems(editor)),
+          Forms.createQuickLinkForm(editor, hide)
+        ]);
+        return global$b.create({
+          type: 'floatpanel',
+          role: 'dialog',
+          classes: 'tinymce tinymce-inline arrow',
+          ariaLabel: 'Inline toolbar',
+          layout: 'flex',
+          direction: 'column',
+          align: 'stretch',
+          autohide: false,
+          autofix: true,
+          fixed: true,
+          border: 1,
+          items: global$4.grep(items, hasToolbarItems),
+          oncancel: function () {
+            editor.focus();
+          }
+        });
+      };
+      var showPanel = function (panel) {
+        if (panel) {
+          panel.show();
+        }
+      };
+      var movePanelTo = function (panel, pos) {
+        panel.moveTo(pos.x, pos.y);
+      };
+      var togglePositionClass = function (panel, relPos) {
+        relPos = relPos ? relPos.substr(0, 2) : '';
         global$4.each({
-          l: 'left',
-          r: 'right'
+          t: 'down',
+          b: 'up',
+          c: 'center'
         }, function (cls, pos) {
-          panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1));
+          panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1));
         });
-      }
-    };
-    var showToolbar = function (panel, id) {
-      var toolbars = panel.items().filter('#' + id);
-      if (toolbars.length > 0) {
-        toolbars[0].show();
-        panel.reflow();
-        return true;
-      }
-      return false;
-    };
-    var repositionPanelAt = function (panel, id, editor, targetRect) {
-      var contentAreaRect, panelRect, result, userConstainHandler;
-      userConstainHandler = $_4j2h42187jjgwejzk.getPositionHandler(editor);
-      contentAreaRect = $_51qgo2180jjgwejzb.getContentAreaRect(editor);
-      panelRect = global$2.DOM.getRect(panel.getEl());
-      if (id === 'insert') {
-        result = $_gir42l18bjjgwejzq.calcInsert(targetRect, contentAreaRect, panelRect);
-      } else {
-        result = $_gir42l18bjjgwejzq.calc(targetRect, contentAreaRect, panelRect);
-      }
-      if (result) {
-        var delta = $_9hbv4x19sjjgwek5q.getUiContainerDelta().getOr({
-          x: 0,
-          y: 0
-        });
-        var transposedPanelRect = {
-          x: result.rect.x - delta.x,
-          y: result.rect.y - delta.y,
-          w: result.rect.w,
-          h: result.rect.h
-        };
-        currentRect = targetRect;
-        movePanelTo(panel, $_gir42l18bjjgwejzq.userConstrain(userConstainHandler, targetRect, contentAreaRect, transposedPanelRect));
-        togglePositionClass(panel, result.position);
-        return true;
-      } else {
+        if (relPos === 'cr') {
+          panel.classes.toggle('arrow-left', true);
+          panel.classes.toggle('arrow-right', false);
+        } else if (relPos === 'cl') {
+          panel.classes.toggle('arrow-left', false);
+          panel.classes.toggle('arrow-right', true);
+        } else {
+          global$4.each({
+            l: 'left',
+            r: 'right'
+          }, function (cls, pos) {
+            panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1));
+          });
+        }
+      };
+      var showToolbar = function (panel, id) {
+        var toolbars = panel.items().filter('#' + id);
+        if (toolbars.length > 0) {
+          toolbars[0].show();
+          panel.reflow();
+          return true;
+        }
         return false;
-      }
-    };
-    var showPanelAt = function (panel, id, editor, targetRect) {
-      showPanel(panel);
-      panel.items().hide();
-      if (!showToolbar(panel, id)) {
-        hide();
-        return;
-      }
-      if (repositionPanelAt(panel, id, editor, targetRect) === false) {
-        hide();
-      }
-    };
-    var hasFormVisible = function () {
-      return panel.items().filter('form:visible').length > 0;
-    };
-    var showForm = function (editor, id) {
-      if (panel) {
+      };
+      var repositionPanelAt = function (panel, id, editor, targetRect) {
+        var contentAreaRect, panelRect, result, userConstainHandler;
+        userConstainHandler = Settings.getPositionHandler(editor);
+        contentAreaRect = Measure.getContentAreaRect(editor);
+        panelRect = global$2.DOM.getRect(panel.getEl());
+        if (id === 'insert') {
+          result = Layout.calcInsert(targetRect, contentAreaRect, panelRect);
+        } else {
+          result = Layout.calc(targetRect, contentAreaRect, panelRect);
+        }
+        if (result) {
+          var delta = UiContainer$1.getUiContainerDelta().getOr({
+            x: 0,
+            y: 0
+          });
+          var transposedPanelRect = {
+            x: result.rect.x - delta.x,
+            y: result.rect.y - delta.y,
+            w: result.rect.w,
+            h: result.rect.h
+          };
+          currentRect = targetRect;
+          movePanelTo(panel, Layout.userConstrain(userConstainHandler, targetRect, contentAreaRect, transposedPanelRect));
+          togglePositionClass(panel, result.position);
+          return true;
+        } else {
+          return false;
+        }
+      };
+      var showPanelAt = function (panel, id, editor, targetRect) {
+        showPanel(panel);
         panel.items().hide();
         if (!showToolbar(panel, id)) {
           hide();
           return;
         }
-        var contentAreaRect = void 0, panelRect = void 0, result = void 0, userConstainHandler = void 0;
-        showPanel(panel);
-        panel.items().hide();
-        showToolbar(panel, id);
-        userConstainHandler = $_4j2h42187jjgwejzk.getPositionHandler(editor);
-        contentAreaRect = $_51qgo2180jjgwejzb.getContentAreaRect(editor);
-        panelRect = global$2.DOM.getRect(panel.getEl());
-        result = $_gir42l18bjjgwejzq.calc(currentRect, contentAreaRect, panelRect);
-        if (result) {
-          panelRect = result.rect;
-          movePanelTo(panel, $_gir42l18bjjgwejzq.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect));
-          togglePositionClass(panel, result.position);
+        if (repositionPanelAt(panel, id, editor, targetRect) === false) {
+          hide();
         }
-      }
+      };
+      var hasFormVisible = function () {
+        return panel.items().filter('form:visible').length > 0;
+      };
+      var showForm = function (editor, id) {
+        if (panel) {
+          panel.items().hide();
+          if (!showToolbar(panel, id)) {
+            hide();
+            return;
+          }
+          var contentAreaRect = void 0, panelRect = void 0, result = void 0, userConstainHandler = void 0;
+          showPanel(panel);
+          panel.items().hide();
+          showToolbar(panel, id);
+          userConstainHandler = Settings.getPositionHandler(editor);
+          contentAreaRect = Measure.getContentAreaRect(editor);
+          panelRect = global$2.DOM.getRect(panel.getEl());
+          result = Layout.calc(currentRect, contentAreaRect, panelRect);
+          if (result) {
+            panelRect = result.rect;
+            movePanelTo(panel, Layout.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect));
+            togglePositionClass(panel, result.position);
+          }
+        }
+      };
+      var show = function (editor, id, targetRect, toolbars) {
+        if (!panel) {
+          Events.fireBeforeRenderUI(editor);
+          panel = create(editor, toolbars);
+          panel.renderTo().reflow().moveTo(targetRect.x, targetRect.y);
+          editor.nodeChanged();
+        }
+        showPanelAt(panel, id, editor, targetRect);
+      };
+      var reposition = function (editor, id, targetRect) {
+        if (panel) {
+          repositionPanelAt(panel, id, editor, targetRect);
+        }
+      };
+      var hide = function () {
+        if (panel) {
+          panel.hide();
+        }
+      };
+      var focus = function () {
+        if (panel) {
+          panel.find('toolbar:visible').eq(0).each(function (item) {
+            item.focus(true);
+          });
+        }
+      };
+      var remove = function () {
+        if (panel) {
+          panel.remove();
+          panel = null;
+        }
+      };
+      var inForm = function () {
+        return panel && panel.visible() && hasFormVisible();
+      };
+      return {
+        show: show,
+        showForm: showForm,
+        reposition: reposition,
+        inForm: inForm,
+        hide: hide,
+        focus: focus,
+        remove: remove
+      };
     };
-    var show = function (editor, id, targetRect, toolbars) {
-      if (!panel) {
-        $_77u64d186jjgwejzi.fireBeforeRenderUI(editor);
-        panel = create(editor, toolbars);
-        panel.renderTo().reflow().moveTo(targetRect.x, targetRect.y);
-        editor.nodeChanged();
-      }
-      showPanelAt(panel, id, editor, targetRect);
-    };
-    var reposition = function (editor, id, targetRect) {
-      if (panel) {
-        repositionPanelAt(panel, id, editor, targetRect);
-      }
-    };
-    var hide = function () {
-      if (panel) {
-        panel.hide();
-      }
-    };
-    var focus = function () {
-      if (panel) {
-        panel.find('toolbar:visible').eq(0).each(function (item) {
-          item.focus(true);
+
+    var Layout$1 = global$8.extend({
+      Defaults: {
+        firstControlClass: 'first',
+        lastControlClass: 'last'
+      },
+      init: function (settings) {
+        this.settings = global$4.extend({}, this.Defaults, settings);
+      },
+      preRender: function (container) {
+        container.bodyClasses.add(this.settings.containerClass);
+      },
+      applyClasses: function (items) {
+        var self = this;
+        var settings = self.settings;
+        var firstClass, lastClass, firstItem, lastItem;
+        firstClass = settings.firstControlClass;
+        lastClass = settings.lastControlClass;
+        items.each(function (item) {
+          item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);
+          if (item.visible()) {
+            if (!firstItem) {
+              firstItem = item;
+            }
+            lastItem = item;
+          }
         });
+        if (firstItem) {
+          firstItem.classes.add(firstClass);
+        }
+        if (lastItem) {
+          lastItem.classes.add(lastClass);
+        }
+      },
+      renderHtml: function (container) {
+        var self = this;
+        var html = '';
+        self.applyClasses(container.items());
+        container.items().each(function (item) {
+          html += item.renderHtml();
+        });
+        return html;
+      },
+      recalc: function () {
+      },
+      postRender: function () {
+      },
+      isNative: function () {
+        return false;
       }
-    };
-    var remove = function () {
-      if (panel) {
-        panel.remove();
-        panel = null;
-      }
-    };
-    var inForm = function () {
-      return panel && panel.visible() && hasFormVisible();
-    };
-    return {
-      show: show,
-      showForm: showForm,
-      reposition: reposition,
-      inForm: inForm,
-      hide: hide,
-      focus: focus,
-      remove: remove
-    };
-  };
+    });
 
-  var Layout$1 = global$8.extend({
-    Defaults: {
-      firstControlClass: 'first',
-      lastControlClass: 'last'
-    },
-    init: function (settings) {
-      this.settings = global$4.extend({}, this.Defaults, settings);
-    },
-    preRender: function (container) {
-      container.bodyClasses.add(this.settings.containerClass);
-    },
-    applyClasses: function (items) {
-      var self = this;
-      var settings = self.settings;
-      var firstClass, lastClass, firstItem, lastItem;
-      firstClass = settings.firstControlClass;
-      lastClass = settings.lastControlClass;
-      items.each(function (item) {
-        item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);
-        if (item.visible()) {
-          if (!firstItem) {
-            firstItem = item;
+    var AbsoluteLayout = Layout$1.extend({
+      Defaults: {
+        containerClass: 'abs-layout',
+        controlClass: 'abs-layout-item'
+      },
+      recalc: function (container) {
+        container.items().filter(':visible').each(function (ctrl) {
+          var settings = ctrl.settings;
+          ctrl.layoutRect({
+            x: settings.x,
+            y: settings.y,
+            w: settings.w,
+            h: settings.h
+          });
+          if (ctrl.recalc) {
+            ctrl.recalc();
           }
-          lastItem = item;
-        }
-      });
-      if (firstItem) {
-        firstItem.classes.add(firstClass);
+        });
+      },
+      renderHtml: function (container) {
+        return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
       }
-      if (lastItem) {
-        lastItem.classes.add(lastClass);
-      }
-    },
-    renderHtml: function (container) {
-      var self = this;
-      var html = '';
-      self.applyClasses(container.items());
-      container.items().each(function (item) {
-        html += item.renderHtml();
-      });
-      return html;
-    },
-    recalc: function () {
-    },
-    postRender: function () {
-    },
-    isNative: function () {
-      return false;
-    }
-  });
+    });
 
-  var AbsoluteLayout = Layout$1.extend({
-    Defaults: {
-      containerClass: 'abs-layout',
-      controlClass: 'abs-layout-item'
-    },
-    recalc: function (container) {
-      container.items().filter(':visible').each(function (ctrl) {
-        var settings = ctrl.settings;
-        ctrl.layoutRect({
-          x: settings.x,
-          y: settings.y,
-          w: settings.w,
-          h: settings.h
+    var Button = Widget.extend({
+      Defaults: {
+        classes: 'widget btn',
+        role: 'button'
+      },
+      init: function (settings) {
+        var self$$1 = this;
+        var size;
+        self$$1._super(settings);
+        settings = self$$1.settings;
+        size = self$$1.settings.size;
+        self$$1.on('click mousedown', function (e) {
+          e.preventDefault();
         });
-        if (ctrl.recalc) {
-          ctrl.recalc();
+        self$$1.on('touchstart', function (e) {
+          self$$1.fire('click', e);
+          e.preventDefault();
+        });
+        if (settings.subtype) {
+          self$$1.classes.add(settings.subtype);
         }
-      });
-    },
-    renderHtml: function (container) {
-      return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
-    }
-  });
-
-  var Button = Widget.extend({
-    Defaults: {
-      classes: 'widget btn',
-      role: 'button'
-    },
-    init: function (settings) {
-      var self$$1 = this;
-      var size;
-      self$$1._super(settings);
-      settings = self$$1.settings;
-      size = self$$1.settings.size;
-      self$$1.on('click mousedown', function (e) {
-        e.preventDefault();
-      });
-      self$$1.on('touchstart', function (e) {
-        self$$1.fire('click', e);
-        e.preventDefault();
-      });
-      if (settings.subtype) {
-        self$$1.classes.add(settings.subtype);
-      }
-      if (size) {
-        self$$1.classes.add('btn-' + size);
-      }
-      if (settings.icon) {
-        self$$1.icon(settings.icon);
-      }
-    },
-    icon: function (icon) {
-      if (!arguments.length) {
-        return this.state.get('icon');
-      }
-      this.state.set('icon', icon);
-      return this;
-    },
-    repaint: function () {
-      var btnElm = this.getEl().firstChild;
-      var btnStyle;
-      if (btnElm) {
-        btnStyle = btnElm.style;
-        btnStyle.width = btnStyle.height = '100%';
-      }
-      this._super();
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-      var icon = self$$1.state.get('icon'), image;
-      var text = self$$1.state.get('text');
-      var textHtml = '';
-      var ariaPressed;
-      var settings = self$$1.settings;
-      image = settings.image;
-      if (image) {
-        icon = 'none';
-        if (typeof image !== 'string') {
-          image = window.getSelection ? image[0] : image[1];
+        if (size) {
+          self$$1.classes.add('btn-' + size);
         }
-        image = ' style="background-image: url(\'' + image + '\')"';
-      } else {
-        image = '';
-      }
-      if (text) {
-        self$$1.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
-      }
-      icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
-      return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
-    },
-    bindStates: function () {
-      var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';
-      function setButtonText(text) {
-        var $span = $('span.' + textCls, self$$1.getEl());
-        if (text) {
-          if (!$span[0]) {
-            $('button:first', self$$1.getEl()).append('<span class="' + textCls + '"></span>');
-            $span = $('span.' + textCls, self$$1.getEl());
+        if (settings.icon) {
+          self$$1.icon(settings.icon);
+        }
+      },
+      icon: function (icon) {
+        if (!arguments.length) {
+          return this.state.get('icon');
+        }
+        this.state.set('icon', icon);
+        return this;
+      },
+      repaint: function () {
+        var btnElm = this.getEl().firstChild;
+        var btnStyle;
+        if (btnElm) {
+          btnStyle = btnElm.style;
+          btnStyle.width = btnStyle.height = '100%';
+        }
+        this._super();
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
+        var icon = self$$1.state.get('icon'), image;
+        var text = self$$1.state.get('text');
+        var textHtml = '';
+        var ariaPressed;
+        var settings = self$$1.settings;
+        image = settings.image;
+        if (image) {
+          icon = 'none';
+          if (typeof image !== 'string') {
+            image = window.getSelection ? image[0] : image[1];
           }
-          $span.html(self$$1.encode(text));
+          image = ' style="background-image: url(\'' + image + '\')"';
         } else {
-          $span.remove();
+          image = '';
         }
-        self$$1.classes.toggle('btn-has-text', !!text);
-      }
-      self$$1.state.on('change:text', function (e) {
-        setButtonText(e.value);
-      });
-      self$$1.state.on('change:icon', function (e) {
-        var icon = e.value;
-        var prefix = self$$1.classPrefix;
-        self$$1.settings.icon = icon;
-        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-        var btnElm = self$$1.getEl().firstChild;
-        var iconElm = btnElm.getElementsByTagName('i')[0];
-        if (icon) {
-          if (!iconElm || iconElm !== btnElm.firstChild) {
-            iconElm = document.createElement('i');
-            btnElm.insertBefore(iconElm, btnElm.firstChild);
-          }
-          iconElm.className = icon;
-        } else if (iconElm) {
-          btnElm.removeChild(iconElm);
+        if (text) {
+          self$$1.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
         }
-        setButtonText(self$$1.state.get('text'));
-      });
-      return self$$1._super();
-    }
-  });
-
-  var BrowseButton = Button.extend({
-    init: function (settings) {
-      var self = this;
-      settings = global$4.extend({
-        text: 'Browse...',
-        multiple: false,
-        accept: null
-      }, settings);
-      self._super(settings);
-      self.classes.add('browsebutton');
-      if (settings.multiple) {
-        self.classes.add('multiple');
-      }
-    },
-    postRender: function () {
-      var self = this;
-      var input = funcs.create('input', {
-        type: 'file',
-        id: self._id + '-browse',
-        accept: self.settings.accept
-      });
-      self._super();
-      global$7(input).on('change', function (e) {
-        var files = e.target.files;
-        self.value = function () {
-          if (!files.length) {
-            return null;
-          } else if (self.settings.multiple) {
-            return files;
+        icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
+        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
+      },
+      bindStates: function () {
+        var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';
+        function setButtonText(text) {
+          var $span = $('span.' + textCls, self$$1.getEl());
+          if (text) {
+            if (!$span[0]) {
+              $('button:first', self$$1.getEl()).append('<span class="' + textCls + '"></span>');
+              $span = $('span.' + textCls, self$$1.getEl());
+            }
+            $span.html(self$$1.encode(text));
           } else {
-            return files[0];
+            $span.remove();
           }
-        };
-        e.preventDefault();
-        if (files.length) {
-          self.fire('change', e);
+          self$$1.classes.toggle('btn-has-text', !!text);
         }
-      });
-      global$7(input).on('click', function (e) {
-        e.stopPropagation();
-      });
-      global$7(self.getEl('button')).on('click', function (e) {
-        e.stopPropagation();
-        input.click();
-      });
-      self.getEl().appendChild(input);
-    },
-    remove: function () {
-      global$7(this.getEl('button')).off();
-      global$7(this.getEl('input')).off();
-      this._super();
-    }
-  });
+        self$$1.state.on('change:text', function (e) {
+          setButtonText(e.value);
+        });
+        self$$1.state.on('change:icon', function (e) {
+          var icon = e.value;
+          var prefix = self$$1.classPrefix;
+          self$$1.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
+          var btnElm = self$$1.getEl().firstChild;
+          var iconElm = btnElm.getElementsByTagName('i')[0];
+          if (icon) {
+            if (!iconElm || iconElm !== btnElm.firstChild) {
+              iconElm = document.createElement('i');
+              btnElm.insertBefore(iconElm, btnElm.firstChild);
+            }
+            iconElm.className = icon;
+          } else if (iconElm) {
+            btnElm.removeChild(iconElm);
+          }
+          setButtonText(self$$1.state.get('text'));
+        });
+        return self$$1._super();
+      }
+    });
 
-  var ButtonGroup = Container.extend({
-    Defaults: {
-      defaultType: 'button',
-      role: 'group'
-    },
-    renderHtml: function () {
-      var self = this, layout = self._layout;
-      self.classes.add('btn-group');
-      self.preRender();
-      layout.preRender(self);
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
-    }
-  });
-
-  var Checkbox = Widget.extend({
-    Defaults: {
-      classes: 'checkbox',
-      role: 'checkbox',
-      checked: false
-    },
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      self$$1.on('click mousedown', function (e) {
-        e.preventDefault();
-      });
-      self$$1.on('click', function (e) {
-        e.preventDefault();
-        if (!self$$1.disabled()) {
-          self$$1.checked(!self$$1.checked());
+    var BrowseButton = Button.extend({
+      init: function (settings) {
+        var self = this;
+        settings = global$4.extend({
+          text: 'Browse...',
+          multiple: false,
+          accept: null
+        }, settings);
+        self._super(settings);
+        self.classes.add('browsebutton');
+        if (settings.multiple) {
+          self.classes.add('multiple');
         }
-      });
-      self$$1.checked(self$$1.settings.checked);
-    },
-    checked: function (state) {
-      if (!arguments.length) {
-        return this.state.get('checked');
+      },
+      postRender: function () {
+        var self = this;
+        var input = funcs.create('input', {
+          type: 'file',
+          id: self._id + '-browse',
+          accept: self.settings.accept
+        });
+        self._super();
+        global$7(input).on('change', function (e) {
+          var files = e.target.files;
+          self.value = function () {
+            if (!files.length) {
+              return null;
+            } else if (self.settings.multiple) {
+              return files;
+            } else {
+              return files[0];
+            }
+          };
+          e.preventDefault();
+          if (files.length) {
+            self.fire('change', e);
+          }
+        });
+        global$7(input).on('click', function (e) {
+          e.stopPropagation();
+        });
+        global$7(self.getEl('button')).on('click', function (e) {
+          e.stopPropagation();
+          input.click();
+        });
+        self.getEl().appendChild(input);
+      },
+      remove: function () {
+        global$7(this.getEl('button')).off();
+        global$7(this.getEl('input')).off();
+        this._super();
       }
-      this.state.set('checked', state);
-      return this;
-    },
-    value: function (state) {
-      if (!arguments.length) {
-        return this.checked();
+    });
+
+    var ButtonGroup = Container.extend({
+      Defaults: {
+        defaultType: 'button',
+        role: 'group'
+      },
+      renderHtml: function () {
+        var self = this, layout = self._layout;
+        self.classes.add('btn-group');
+        self.preRender();
+        layout.preRender(self);
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
       }
-      return this.checked(state);
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-      return '<div id="' + id + '" class="' + self$$1.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      function checked(state) {
-        self$$1.classes.toggle('checked', state);
-        self$$1.aria('checked', state);
-      }
-      self$$1.state.on('change:text', function (e) {
-        self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);
-      });
-      self$$1.state.on('change:checked change:value', function (e) {
-        self$$1.fire('change');
-        checked(e.value);
-      });
-      self$$1.state.on('change:icon', function (e) {
-        var icon = e.value;
-        var prefix = self$$1.classPrefix;
-        if (typeof icon === 'undefined') {
-          return self$$1.settings.icon;
+    });
+
+    var Checkbox = Widget.extend({
+      Defaults: {
+        classes: 'checkbox',
+        role: 'checkbox',
+        checked: false
+      },
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        self$$1.on('click mousedown', function (e) {
+          e.preventDefault();
+        });
+        self$$1.on('click', function (e) {
+          e.preventDefault();
+          if (!self$$1.disabled()) {
+            self$$1.checked(!self$$1.checked());
+          }
+        });
+        self$$1.checked(self$$1.settings.checked);
+      },
+      checked: function (state) {
+        if (!arguments.length) {
+          return this.state.get('checked');
         }
-        self$$1.settings.icon = icon;
-        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-        var btnElm = self$$1.getEl().firstChild;
-        var iconElm = btnElm.getElementsByTagName('i')[0];
-        if (icon) {
-          if (!iconElm || iconElm !== btnElm.firstChild) {
-            iconElm = document.createElement('i');
-            btnElm.insertBefore(iconElm, btnElm.firstChild);
+        this.state.set('checked', state);
+        return this;
+      },
+      value: function (state) {
+        if (!arguments.length) {
+          return this.checked();
+        }
+        return this.checked(state);
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
+        return '<div id="' + id + '" class="' + self$$1.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        function checked(state) {
+          self$$1.classes.toggle('checked', state);
+          self$$1.aria('checked', state);
+        }
+        self$$1.state.on('change:text', function (e) {
+          self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);
+        });
+        self$$1.state.on('change:checked change:value', function (e) {
+          self$$1.fire('change');
+          checked(e.value);
+        });
+        self$$1.state.on('change:icon', function (e) {
+          var icon = e.value;
+          var prefix = self$$1.classPrefix;
+          if (typeof icon === 'undefined') {
+            return self$$1.settings.icon;
           }
-          iconElm.className = icon;
-        } else if (iconElm) {
-          btnElm.removeChild(iconElm);
+          self$$1.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
+          var btnElm = self$$1.getEl().firstChild;
+          var iconElm = btnElm.getElementsByTagName('i')[0];
+          if (icon) {
+            if (!iconElm || iconElm !== btnElm.firstChild) {
+              iconElm = document.createElement('i');
+              btnElm.insertBefore(iconElm, btnElm.firstChild);
+            }
+            iconElm.className = icon;
+          } else if (iconElm) {
+            btnElm.removeChild(iconElm);
+          }
+        });
+        if (self$$1.state.get('checked')) {
+          checked(true);
         }
-      });
-      if (self$$1.state.get('checked')) {
-        checked(true);
+        return self$$1._super();
       }
-      return self$$1._super();
-    }
-  });
+    });
 
-  var global$15 = tinymce.util.Tools.resolve('tinymce.util.VK');
+    var global$f = tinymce.util.Tools.resolve('tinymce.util.VK');
 
-  var ComboBox = Widget.extend({
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      settings = self$$1.settings;
-      self$$1.classes.add('combobox');
-      self$$1.subinput = true;
-      self$$1.ariaTarget = 'inp';
-      settings.menu = settings.menu || settings.values;
-      if (settings.menu) {
-        settings.icon = 'caret';
-      }
-      self$$1.on('click', function (e) {
-        var elm = e.target;
-        var root = self$$1.getEl();
-        if (!global$7.contains(root, elm) && elm !== root) {
-          return;
+    var ComboBox = Widget.extend({
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        settings = self$$1.settings;
+        self$$1.classes.add('combobox');
+        self$$1.subinput = true;
+        self$$1.ariaTarget = 'inp';
+        settings.menu = settings.menu || settings.values;
+        if (settings.menu) {
+          settings.icon = 'caret';
         }
-        while (elm && elm !== root) {
-          if (elm.id && elm.id.indexOf('-open') !== -1) {
-            self$$1.fire('action');
-            if (settings.menu) {
-              self$$1.showMenu();
-              if (e.aria) {
-                self$$1.menu.items()[0].focus();
+        self$$1.on('click', function (e) {
+          var elm = e.target;
+          var root = self$$1.getEl();
+          if (!global$7.contains(root, elm) && elm !== root) {
+            return;
+          }
+          while (elm && elm !== root) {
+            if (elm.id && elm.id.indexOf('-open') !== -1) {
+              self$$1.fire('action');
+              if (settings.menu) {
+                self$$1.showMenu();
+                if (e.aria) {
+                  self$$1.menu.items()[0].focus();
+                }
               }
             }
+            elm = elm.parentNode;
           }
-          elm = elm.parentNode;
+        });
+        self$$1.on('keydown', function (e) {
+          var rootControl;
+          if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {
+            e.preventDefault();
+            self$$1.parents().reverse().each(function (ctrl) {
+              if (ctrl.toJSON) {
+                rootControl = ctrl;
+                return false;
+              }
+            });
+            self$$1.fire('submit', { data: rootControl.toJSON() });
+          }
+        });
+        self$$1.on('keyup', function (e) {
+          if (e.target.nodeName === 'INPUT') {
+            var oldValue = self$$1.state.get('value');
+            var newValue = e.target.value;
+            if (newValue !== oldValue) {
+              self$$1.state.set('value', newValue);
+              self$$1.fire('autocomplete', e);
+            }
+          }
+        });
+        self$$1.on('mouseover', function (e) {
+          var tooltip = self$$1.tooltip().moveTo(-65535);
+          if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {
+            var statusMessage = self$$1.statusMessage() || 'Ok';
+            var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [
+              'bc-tc',
+              'bc-tl',
+              'bc-tr'
+            ]);
+            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
+            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
+            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
+            tooltip.moveRel(e.target, rel);
+          }
+        });
+      },
+      statusLevel: function (value) {
+        if (arguments.length > 0) {
+          this.state.set('statusLevel', value);
         }
-      });
-      self$$1.on('keydown', function (e) {
-        var rootControl;
-        if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {
-          e.preventDefault();
-          self$$1.parents().reverse().each(function (ctrl) {
-            if (ctrl.toJSON) {
-              rootControl = ctrl;
-              return false;
+        return this.state.get('statusLevel');
+      },
+      statusMessage: function (value) {
+        if (arguments.length > 0) {
+          this.state.set('statusMessage', value);
+        }
+        return this.state.get('statusMessage');
+      },
+      showMenu: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var menu;
+        if (!self$$1.menu) {
+          menu = settings.menu || [];
+          if (menu.length) {
+            menu = {
+              type: 'menu',
+              items: menu
+            };
+          } else {
+            menu.type = menu.type || 'menu';
+          }
+          self$$1.menu = global$b.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());
+          self$$1.fire('createmenu');
+          self$$1.menu.reflow();
+          self$$1.menu.on('cancel', function (e) {
+            if (e.control === self$$1.menu) {
+              self$$1.focus();
             }
           });
-          self$$1.fire('submit', { data: rootControl.toJSON() });
+          self$$1.menu.on('show hide', function (e) {
+            e.control.items().each(function (ctrl) {
+              ctrl.active(ctrl.value() === self$$1.value());
+            });
+          }).fire('show');
+          self$$1.menu.on('select', function (e) {
+            self$$1.value(e.control.value());
+          });
+          self$$1.on('focusin', function (e) {
+            if (e.target.tagName.toUpperCase() === 'INPUT') {
+              self$$1.menu.hide();
+            }
+          });
+          self$$1.aria('expanded', true);
         }
-      });
-      self$$1.on('keyup', function (e) {
-        if (e.target.nodeName === 'INPUT') {
-          var oldValue = self$$1.state.get('value');
-          var newValue = e.target.value;
-          if (newValue !== oldValue) {
-            self$$1.state.set('value', newValue);
-            self$$1.fire('autocomplete', e);
-          }
+        self$$1.menu.show();
+        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
+        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
+          'br-tr',
+          'tr-br'
+        ] : [
+          'bl-tl',
+          'tl-bl'
+        ]);
+      },
+      focus: function () {
+        this.getEl('inp').focus();
+      },
+      repaint: function () {
+        var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();
+        var width, lineHeight, innerPadding = 0;
+        var inputElm = elm.firstChild;
+        if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {
+          innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);
         }
-      });
-      self$$1.on('mouseover', function (e) {
-        var tooltip = self$$1.tooltip().moveTo(-65535);
-        if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {
-          var statusMessage = self$$1.statusMessage() || 'Ok';
-          var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [
-            'bc-tc',
-            'bc-tl',
-            'bc-tr'
-          ]);
-          tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
-          tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
-          tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
-          tooltip.moveRel(e.target, rel);
+        if (openElm) {
+          width = rect.w - funcs.getSize(openElm).width - 10;
+        } else {
+          width = rect.w - 10;
         }
-      });
-    },
-    statusLevel: function (value) {
-      if (arguments.length > 0) {
-        this.state.set('statusLevel', value);
-      }
-      return this.state.get('statusLevel');
-    },
-    statusMessage: function (value) {
-      if (arguments.length > 0) {
-        this.state.set('statusMessage', value);
-      }
-      return this.state.get('statusMessage');
-    },
-    showMenu: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var menu;
-      if (!self$$1.menu) {
-        menu = settings.menu || [];
-        if (menu.length) {
-          menu = {
-            type: 'menu',
-            items: menu
+        var doc = document;
+        if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+          lineHeight = self$$1.layoutRect().h - 2 + 'px';
+        }
+        global$7(inputElm).css({
+          width: width - innerPadding,
+          lineHeight: lineHeight
+        });
+        self$$1._super();
+        return self$$1;
+      },
+      postRender: function () {
+        var self$$1 = this;
+        global$7(this.getEl('inp')).on('change', function (e) {
+          self$$1.state.set('value', e.target.value);
+          self$$1.fire('change', e);
+        });
+        return self$$1._super();
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;
+        var value = self$$1.state.get('value') || '';
+        var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';
+        if ('spellcheck' in settings) {
+          extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+        }
+        if (settings.maxLength) {
+          extraAttrs += ' maxlength="' + settings.maxLength + '"';
+        }
+        if (settings.size) {
+          extraAttrs += ' size="' + settings.size + '"';
+        }
+        if (settings.subtype) {
+          extraAttrs += ' type="' + settings.subtype + '"';
+        }
+        statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';
+        if (self$$1.disabled()) {
+          extraAttrs += ' disabled="disabled"';
+        }
+        icon = settings.icon;
+        if (icon && icon !== 'caret') {
+          icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
+        }
+        text = self$$1.state.get('text');
+        if (icon || text) {
+          openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';
+          self$$1.classes.add('has-open');
+        }
+        return '<div id="' + id + '" class="' + self$$1.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self$$1.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self$$1.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
+      },
+      value: function (value) {
+        if (arguments.length) {
+          this.state.set('value', value);
+          return this;
+        }
+        if (this.state.get('rendered')) {
+          this.state.set('value', this.getEl('inp').value);
+        }
+        return this.state.get('value');
+      },
+      showAutoComplete: function (items, term) {
+        var self$$1 = this;
+        if (items.length === 0) {
+          self$$1.hideMenu();
+          return;
+        }
+        var insert = function (value, title) {
+          return function () {
+            self$$1.fire('selectitem', {
+              title: title,
+              value: value
+            });
           };
+        };
+        if (self$$1.menu) {
+          self$$1.menu.items().remove();
         } else {
-          menu.type = menu.type || 'menu';
+          self$$1.menu = global$b.create({
+            type: 'menu',
+            classes: 'combobox-menu',
+            layout: 'flow'
+          }).parent(self$$1).renderTo();
         }
-        self$$1.menu = global$11.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());
-        self$$1.fire('createmenu');
-        self$$1.menu.reflow();
+        global$4.each(items, function (item) {
+          self$$1.menu.add({
+            text: item.title,
+            url: item.previewUrl,
+            match: term,
+            classes: 'menu-item-ellipsis',
+            onclick: insert(item.value, item.title)
+          });
+        });
+        self$$1.menu.renderNew();
+        self$$1.hideMenu();
         self$$1.menu.on('cancel', function (e) {
-          if (e.control === self$$1.menu) {
+          if (e.control.parent() === self$$1.menu) {
+            e.stopPropagation();
             self$$1.focus();
+            self$$1.hideMenu();
           }
         });
-        self$$1.menu.on('show hide', function (e) {
-          e.control.items().each(function (ctrl) {
-            ctrl.active(ctrl.value() === self$$1.value());
-          });
-        }).fire('show');
-        self$$1.menu.on('select', function (e) {
-          self$$1.value(e.control.value());
+        self$$1.menu.on('select', function () {
+          self$$1.focus();
         });
-        self$$1.on('focusin', function (e) {
-          if (e.target.tagName.toUpperCase() === 'INPUT') {
-            self$$1.menu.hide();
+        var maxW = self$$1.layoutRect().w;
+        self$$1.menu.layoutRect({
+          w: maxW,
+          minW: 0,
+          maxW: maxW
+        });
+        self$$1.menu.repaint();
+        self$$1.menu.reflow();
+        self$$1.menu.show();
+        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
+          'br-tr',
+          'tr-br'
+        ] : [
+          'bl-tl',
+          'tl-bl'
+        ]);
+      },
+      hideMenu: function () {
+        if (this.menu) {
+          this.menu.hide();
+        }
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        self$$1.state.on('change:value', function (e) {
+          if (self$$1.getEl('inp').value !== e.value) {
+            self$$1.getEl('inp').value = e.value;
           }
         });
-        self$$1.aria('expanded', true);
-      }
-      self$$1.menu.show();
-      self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-      self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
-        'br-tr',
-        'tr-br'
-      ] : [
-        'bl-tl',
-        'tl-bl'
-      ]);
-    },
-    focus: function () {
-      this.getEl('inp').focus();
-    },
-    repaint: function () {
-      var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();
-      var width, lineHeight, innerPadding = 0;
-      var inputElm = elm.firstChild;
-      if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {
-        innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);
-      }
-      if (openElm) {
-        width = rect.w - funcs.getSize(openElm).width - 10;
-      } else {
-        width = rect.w - 10;
-      }
-      var doc = document;
-      if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
-        lineHeight = self$$1.layoutRect().h - 2 + 'px';
-      }
-      global$7(inputElm).css({
-        width: width - innerPadding,
-        lineHeight: lineHeight
-      });
-      self$$1._super();
-      return self$$1;
-    },
-    postRender: function () {
-      var self$$1 = this;
-      global$7(this.getEl('inp')).on('change', function (e) {
-        self$$1.state.set('value', e.target.value);
-        self$$1.fire('change', e);
-      });
-      return self$$1._super();
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;
-      var value = self$$1.state.get('value') || '';
-      var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';
-      if ('spellcheck' in settings) {
-        extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
-      }
-      if (settings.maxLength) {
-        extraAttrs += ' maxlength="' + settings.maxLength + '"';
-      }
-      if (settings.size) {
-        extraAttrs += ' size="' + settings.size + '"';
-      }
-      if (settings.subtype) {
-        extraAttrs += ' type="' + settings.subtype + '"';
-      }
-      statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';
-      if (self$$1.disabled()) {
-        extraAttrs += ' disabled="disabled"';
-      }
-      icon = settings.icon;
-      if (icon && icon !== 'caret') {
-        icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
-      }
-      text = self$$1.state.get('text');
-      if (icon || text) {
-        openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';
-        self$$1.classes.add('has-open');
-      }
-      return '<div id="' + id + '" class="' + self$$1.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self$$1.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self$$1.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
-    },
-    value: function (value) {
-      if (arguments.length) {
-        this.state.set('value', value);
-        return this;
-      }
-      if (this.state.get('rendered')) {
-        this.state.set('value', this.getEl('inp').value);
-      }
-      return this.state.get('value');
-    },
-    showAutoComplete: function (items, term) {
-      var self$$1 = this;
-      if (items.length === 0) {
-        self$$1.hideMenu();
-        return;
-      }
-      var insert = function (value, title) {
-        return function () {
-          self$$1.fire('selectitem', {
-            title: title,
-            value: value
-          });
+        self$$1.state.on('change:disabled', function (e) {
+          self$$1.getEl('inp').disabled = e.value;
+        });
+        self$$1.state.on('change:statusLevel', function (e) {
+          var statusIconElm = self$$1.getEl('status');
+          var prefix = self$$1.classPrefix, value = e.value;
+          funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');
+          funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');
+          funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');
+          funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');
+          self$$1.classes.toggle('has-status', value !== 'none');
+          self$$1.repaint();
+        });
+        funcs.on(self$$1.getEl('status'), 'mouseleave', function () {
+          self$$1.tooltip().hide();
+        });
+        self$$1.on('cancel', function (e) {
+          if (self$$1.menu && self$$1.menu.visible()) {
+            e.stopPropagation();
+            self$$1.hideMenu();
+          }
+        });
+        var focusIdx = function (idx, menu) {
+          if (menu && menu.items().length > 0) {
+            menu.items().eq(idx)[0].focus();
+          }
         };
-      };
-      if (self$$1.menu) {
-        self$$1.menu.items().remove();
-      } else {
-        self$$1.menu = global$11.create({
-          type: 'menu',
-          classes: 'combobox-menu',
-          layout: 'flow'
-        }).parent(self$$1).renderTo();
+        self$$1.on('keydown', function (e) {
+          var keyCode = e.keyCode;
+          if (e.target.nodeName === 'INPUT') {
+            if (keyCode === global$f.DOWN) {
+              e.preventDefault();
+              self$$1.fire('autocomplete');
+              focusIdx(0, self$$1.menu);
+            } else if (keyCode === global$f.UP) {
+              e.preventDefault();
+              focusIdx(-1, self$$1.menu);
+            }
+          }
+        });
+        return self$$1._super();
+      },
+      remove: function () {
+        global$7(this.getEl('inp')).off();
+        if (this.menu) {
+          this.menu.remove();
+        }
+        this._super();
       }
-      global$4.each(items, function (item) {
-        self$$1.menu.add({
-          text: item.title,
-          url: item.previewUrl,
-          match: term,
-          classes: 'menu-item-ellipsis',
-          onclick: insert(item.value, item.title)
+    });
+
+    var ColorBox = ComboBox.extend({
+      init: function (settings) {
+        var self = this;
+        settings.spellcheck = false;
+        if (settings.onaction) {
+          settings.icon = 'none';
+        }
+        self._super(settings);
+        self.classes.add('colorbox');
+        self.on('change keyup postrender', function () {
+          self.repaintColor(self.value());
         });
-      });
-      self$$1.menu.renderNew();
-      self$$1.hideMenu();
-      self$$1.menu.on('cancel', function (e) {
-        if (e.control.parent() === self$$1.menu) {
-          e.stopPropagation();
-          self$$1.focus();
-          self$$1.hideMenu();
+      },
+      repaintColor: function (value) {
+        var openElm = this.getEl('open');
+        var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;
+        if (elm) {
+          try {
+            elm.style.background = value;
+          } catch (ex) {
+          }
         }
-      });
-      self$$1.menu.on('select', function () {
-        self$$1.focus();
-      });
-      var maxW = self$$1.layoutRect().w;
-      self$$1.menu.layoutRect({
-        w: maxW,
-        minW: 0,
-        maxW: maxW
-      });
-      self$$1.menu.repaint();
-      self$$1.menu.reflow();
-      self$$1.menu.show();
-      self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
-        'br-tr',
-        'tr-br'
-      ] : [
-        'bl-tl',
-        'tl-bl'
-      ]);
-    },
-    hideMenu: function () {
-      if (this.menu) {
-        this.menu.hide();
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:value', function (e) {
+          if (self.state.get('rendered')) {
+            self.repaintColor(e.value);
+          }
+        });
+        return self._super();
       }
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      self$$1.state.on('change:value', function (e) {
-        if (self$$1.getEl('inp').value !== e.value) {
-          self$$1.getEl('inp').value = e.value;
+    });
+
+    var PanelButton = Button.extend({
+      showPanel: function () {
+        var self = this, settings = self.settings;
+        self.classes.add('opened');
+        if (!self.panel) {
+          var panelSettings = settings.panel;
+          if (panelSettings.type) {
+            panelSettings = {
+              layout: 'grid',
+              items: panelSettings
+            };
+          }
+          panelSettings.role = panelSettings.role || 'dialog';
+          panelSettings.popover = true;
+          panelSettings.autohide = true;
+          panelSettings.ariaRoot = true;
+          self.panel = new FloatPanel(panelSettings).on('hide', function () {
+            self.classes.remove('opened');
+          }).on('cancel', function (e) {
+            e.stopPropagation();
+            self.focus();
+            self.hidePanel();
+          }).parent(self).renderTo(self.getContainerElm());
+          self.panel.fire('show');
+          self.panel.reflow();
+        } else {
+          self.panel.show();
         }
-      });
-      self$$1.state.on('change:disabled', function (e) {
-        self$$1.getEl('inp').disabled = e.value;
-      });
-      self$$1.state.on('change:statusLevel', function (e) {
-        var statusIconElm = self$$1.getEl('status');
-        var prefix = self$$1.classPrefix, value = e.value;
-        funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');
-        funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');
-        funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');
-        funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');
-        self$$1.classes.toggle('has-status', value !== 'none');
-        self$$1.repaint();
-      });
-      funcs.on(self$$1.getEl('status'), 'mouseleave', function () {
-        self$$1.tooltip().hide();
-      });
-      self$$1.on('cancel', function (e) {
-        if (self$$1.menu && self$$1.menu.visible()) {
-          e.stopPropagation();
-          self$$1.hideMenu();
+        var rtlRels = [
+          'bc-tc',
+          'bc-tl',
+          'bc-tr'
+        ];
+        var ltrRels = [
+          'bc-tc',
+          'bc-tr',
+          'bc-tl',
+          'tc-bc',
+          'tc-br',
+          'tc-bl'
+        ];
+        var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));
+        self.panel.classes.toggle('start', rel.substr(-1) === 'l');
+        self.panel.classes.toggle('end', rel.substr(-1) === 'r');
+        var isTop = rel.substr(0, 1) === 't';
+        self.panel.classes.toggle('bottom', !isTop);
+        self.panel.classes.toggle('top', isTop);
+        self.panel.moveRel(self.getEl(), rel);
+      },
+      hidePanel: function () {
+        var self = this;
+        if (self.panel) {
+          self.panel.hide();
         }
-      });
-      var focusIdx = function (idx, menu) {
-        if (menu && menu.items().length > 0) {
-          menu.items().eq(idx)[0].focus();
-        }
-      };
-      self$$1.on('keydown', function (e) {
-        var keyCode = e.keyCode;
-        if (e.target.nodeName === 'INPUT') {
-          if (keyCode === global$15.DOWN) {
-            e.preventDefault();
-            self$$1.fire('autocomplete');
-            focusIdx(0, self$$1.menu);
-          } else if (keyCode === global$15.UP) {
-            e.preventDefault();
-            focusIdx(-1, self$$1.menu);
+      },
+      postRender: function () {
+        var self = this;
+        self.aria('haspopup', true);
+        self.on('click', function (e) {
+          if (e.control === self) {
+            if (self.panel && self.panel.visible()) {
+              self.hidePanel();
+            } else {
+              self.showPanel();
+              self.panel.focus(!!e.aria);
+            }
           }
+        });
+        return self._super();
+      },
+      remove: function () {
+        if (this.panel) {
+          this.panel.remove();
+          this.panel = null;
         }
-      });
-      return self$$1._super();
-    },
-    remove: function () {
-      global$7(this.getEl('inp')).off();
-      if (this.menu) {
-        this.menu.remove();
+        return this._super();
       }
-      this._super();
-    }
-  });
+    });
 
-  var ColorBox = ComboBox.extend({
-    init: function (settings) {
-      var self = this;
-      settings.spellcheck = false;
-      if (settings.onaction) {
-        settings.icon = 'none';
-      }
-      self._super(settings);
-      self.classes.add('colorbox');
-      self.on('change keyup postrender', function () {
-        self.repaintColor(self.value());
-      });
-    },
-    repaintColor: function (value) {
-      var openElm = this.getEl('open');
-      var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;
-      if (elm) {
-        try {
-          elm.style.background = value;
-        } catch (ex) {
+    var DOM = global$2.DOM;
+    var ColorButton = PanelButton.extend({
+      init: function (settings) {
+        this._super(settings);
+        this.classes.add('splitbtn');
+        this.classes.add('colorbutton');
+      },
+      color: function (color) {
+        if (color) {
+          this._color = color;
+          this.getEl('preview').style.backgroundColor = color;
+          return this;
         }
+        return this._color;
+      },
+      resetColor: function () {
+        this._color = null;
+        this.getEl('preview').style.backgroundColor = null;
+        return this;
+      },
+      renderHtml: function () {
+        var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');
+        var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+        var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
+        var textHtml = '';
+        if (text) {
+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
+        }
+        return '<div id="' + id + '" class="' + self.classes + '" role="button" tabindex="-1" aria-haspopup="true">' + '<button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + '<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
+      },
+      postRender: function () {
+        var self = this, onClickHandler = self.settings.onclick;
+        self.on('click', function (e) {
+          if (e.aria && e.aria.key === 'down') {
+            return;
+          }
+          if (e.control === self && !DOM.getParent(e.target, '.' + self.classPrefix + 'open')) {
+            e.stopImmediatePropagation();
+            onClickHandler.call(self, e);
+          }
+        });
+        delete self.settings.onclick;
+        return self._super();
       }
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:value', function (e) {
-        if (self.state.get('rendered')) {
-          self.repaintColor(e.value);
-        }
-      });
-      return self._super();
-    }
-  });
+    });
 
-  var PanelButton = Button.extend({
-    showPanel: function () {
-      var self = this, settings = self.settings;
-      self.classes.add('opened');
-      if (!self.panel) {
-        var panelSettings = settings.panel;
-        if (panelSettings.type) {
-          panelSettings = {
-            layout: 'grid',
-            items: panelSettings
+    var global$g = tinymce.util.Tools.resolve('tinymce.util.Color');
+
+    var ColorPicker = Widget.extend({
+      Defaults: { classes: 'widget colorpicker' },
+      init: function (settings) {
+        this._super(settings);
+      },
+      postRender: function () {
+        var self = this;
+        var color = self.color();
+        var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
+        hueRootElm = self.getEl('h');
+        huePointElm = self.getEl('hp');
+        svRootElm = self.getEl('sv');
+        svPointElm = self.getEl('svp');
+        function getPos(elm, event) {
+          var pos = funcs.getPos(elm);
+          var x, y;
+          x = event.pageX - pos.x;
+          y = event.pageY - pos.y;
+          x = Math.max(0, Math.min(x / elm.clientWidth, 1));
+          y = Math.max(0, Math.min(y / elm.clientHeight, 1));
+          return {
+            x: x,
+            y: y
           };
         }
-        panelSettings.role = panelSettings.role || 'dialog';
-        panelSettings.popover = true;
-        panelSettings.autohide = true;
-        panelSettings.ariaRoot = true;
-        self.panel = new FloatPanel(panelSettings).on('hide', function () {
-          self.classes.remove('opened');
-        }).on('cancel', function (e) {
-          e.stopPropagation();
-          self.focus();
-          self.hidePanel();
-        }).parent(self).renderTo(self.getContainerElm());
-        self.panel.fire('show');
-        self.panel.reflow();
-      } else {
-        self.panel.show();
-      }
-      var rtlRels = [
-        'bc-tc',
-        'bc-tl',
-        'bc-tr'
-      ];
-      var ltrRels = [
-        'bc-tc',
-        'bc-tr',
-        'bc-tl',
-        'tc-bc',
-        'tc-br',
-        'tc-bl'
-      ];
-      var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));
-      self.panel.classes.toggle('start', rel.substr(-1) === 'l');
-      self.panel.classes.toggle('end', rel.substr(-1) === 'r');
-      var isTop = rel.substr(0, 1) === 't';
-      self.panel.classes.toggle('bottom', !isTop);
-      self.panel.classes.toggle('top', isTop);
-      self.panel.moveRel(self.getEl(), rel);
-    },
-    hidePanel: function () {
-      var self = this;
-      if (self.panel) {
-        self.panel.hide();
-      }
-    },
-    postRender: function () {
-      var self = this;
-      self.aria('haspopup', true);
-      self.on('click', function (e) {
-        if (e.control === self) {
-          if (self.panel && self.panel.visible()) {
-            self.hidePanel();
-          } else {
-            self.showPanel();
-            self.panel.focus(!!e.aria);
+        function updateColor(hsv, hueUpdate) {
+          var hue = (360 - hsv.h) / 360;
+          funcs.css(huePointElm, { top: hue * 100 + '%' });
+          if (!hueUpdate) {
+            funcs.css(svPointElm, {
+              left: hsv.s + '%',
+              top: 100 - hsv.v + '%'
+            });
           }
+          svRootElm.style.background = global$g({
+            s: 100,
+            v: 100,
+            h: hsv.h
+          }).toHex();
+          self.color().parse({
+            s: hsv.s,
+            v: hsv.v,
+            h: hsv.h
+          });
         }
-      });
-      return self._super();
-    },
-    remove: function () {
-      if (this.panel) {
-        this.panel.remove();
-        this.panel = null;
-      }
-      return this._super();
-    }
-  });
-
-  var DOM = global$2.DOM;
-  var ColorButton = PanelButton.extend({
-    init: function (settings) {
-      this._super(settings);
-      this.classes.add('splitbtn');
-      this.classes.add('colorbutton');
-    },
-    color: function (color) {
-      if (color) {
-        this._color = color;
-        this.getEl('preview').style.backgroundColor = color;
-        return this;
-      }
-      return this._color;
-    },
-    resetColor: function () {
-      this._color = null;
-      this.getEl('preview').style.backgroundColor = null;
-      return this;
-    },
-    renderHtml: function () {
-      var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');
-      var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
-      var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
-      var textHtml = '';
-      if (text) {
-        self.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
-      }
-      return '<div id="' + id + '" class="' + self.classes + '" role="button" tabindex="-1" aria-haspopup="true">' + '<button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + '<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
-    },
-    postRender: function () {
-      var self = this, onClickHandler = self.settings.onclick;
-      self.on('click', function (e) {
-        if (e.aria && e.aria.key === 'down') {
-          return;
+        function updateSaturationAndValue(e) {
+          var pos;
+          pos = getPos(svRootElm, e);
+          hsv.s = pos.x * 100;
+          hsv.v = (1 - pos.y) * 100;
+          updateColor(hsv);
+          self.fire('change');
         }
-        if (e.control === self && !DOM.getParent(e.target, '.' + self.classPrefix + 'open')) {
-          e.stopImmediatePropagation();
-          onClickHandler.call(self, e);
+        function updateHue(e) {
+          var pos;
+          pos = getPos(hueRootElm, e);
+          hsv = color.toHsv();
+          hsv.h = (1 - pos.y) * 360;
+          updateColor(hsv, true);
+          self.fire('change');
         }
-      });
-      delete self.settings.onclick;
-      return self._super();
-    }
-  });
-
-  var global$16 = tinymce.util.Tools.resolve('tinymce.util.Color');
-
-  var ColorPicker = Widget.extend({
-    Defaults: { classes: 'widget colorpicker' },
-    init: function (settings) {
-      this._super(settings);
-    },
-    postRender: function () {
-      var self = this;
-      var color = self.color();
-      var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
-      hueRootElm = self.getEl('h');
-      huePointElm = self.getEl('hp');
-      svRootElm = self.getEl('sv');
-      svPointElm = self.getEl('svp');
-      function getPos(elm, event) {
-        var pos = funcs.getPos(elm);
-        var x, y;
-        x = event.pageX - pos.x;
-        y = event.pageY - pos.y;
-        x = Math.max(0, Math.min(x / elm.clientWidth, 1));
-        y = Math.max(0, Math.min(y / elm.clientHeight, 1));
-        return {
-          x: x,
-          y: y
+        self._repaint = function () {
+          hsv = color.toHsv();
+          updateColor(hsv);
         };
-      }
-      function updateColor(hsv, hueUpdate) {
-        var hue = (360 - hsv.h) / 360;
-        funcs.css(huePointElm, { top: hue * 100 + '%' });
-        if (!hueUpdate) {
-          funcs.css(svPointElm, {
-            left: hsv.s + '%',
-            top: 100 - hsv.v + '%'
-          });
-        }
-        svRootElm.style.background = global$16({
-          s: 100,
-          v: 100,
-          h: hsv.h
-        }).toHex();
-        self.color().parse({
-          s: hsv.s,
-          v: hsv.v,
-          h: hsv.h
+        self._super();
+        self._svdraghelper = new DragHelper(self._id + '-sv', {
+          start: updateSaturationAndValue,
+          drag: updateSaturationAndValue
         });
-      }
-      function updateSaturationAndValue(e) {
-        var pos;
-        pos = getPos(svRootElm, e);
-        hsv.s = pos.x * 100;
-        hsv.v = (1 - pos.y) * 100;
-        updateColor(hsv);
-        self.fire('change');
-      }
-      function updateHue(e) {
-        var pos;
-        pos = getPos(hueRootElm, e);
-        hsv = color.toHsv();
-        hsv.h = (1 - pos.y) * 360;
-        updateColor(hsv, true);
-        self.fire('change');
-      }
-      self._repaint = function () {
-        hsv = color.toHsv();
-        updateColor(hsv);
-      };
-      self._super();
-      self._svdraghelper = new DragHelper(self._id + '-sv', {
-        start: updateSaturationAndValue,
-        drag: updateSaturationAndValue
-      });
-      self._hdraghelper = new DragHelper(self._id + '-h', {
-        start: updateHue,
-        drag: updateHue
-      });
-      self._repaint();
-    },
-    rgb: function () {
-      return this.color().toRgb();
-    },
-    value: function (value) {
-      var self = this;
-      if (arguments.length) {
-        self.color().parse(value);
-        if (self._rendered) {
-          self._repaint();
+        self._hdraghelper = new DragHelper(self._id + '-h', {
+          start: updateHue,
+          drag: updateHue
+        });
+        self._repaint();
+      },
+      rgb: function () {
+        return this.color().toRgb();
+      },
+      value: function (value) {
+        var self = this;
+        if (arguments.length) {
+          self.color().parse(value);
+          if (self._rendered) {
+            self._repaint();
+          }
+        } else {
+          return self.color().toHex();
         }
-      } else {
-        return self.color().toHex();
-      }
-    },
-    color: function () {
-      if (!this._color) {
-        this._color = global$16();
-      }
-      return this._color;
-    },
-    renderHtml: function () {
-      var self = this;
-      var id = self._id;
-      var prefix = self.classPrefix;
-      var hueHtml;
-      var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
-      function getOldIeFallbackHtml() {
-        var i, l, html = '', gradientPrefix, stopsList;
-        gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
-        stopsList = stops.split(',');
-        for (i = 0, l = stopsList.length - 1; i < l; i++) {
-          html += '<div class="' + prefix + 'colorpicker-h-chunk" style="' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '"></div>';
+      },
+      color: function () {
+        if (!this._color) {
+          this._color = global$g();
         }
-        return html;
+        return this._color;
+      },
+      renderHtml: function () {
+        var self = this;
+        var id = self._id;
+        var prefix = self.classPrefix;
+        var hueHtml;
+        var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
+        function getOldIeFallbackHtml() {
+          var i, l, html = '', gradientPrefix, stopsList;
+          gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
+          stopsList = stops.split(',');
+          for (i = 0, l = stopsList.length - 1; i < l; i++) {
+            html += '<div class="' + prefix + 'colorpicker-h-chunk" style="' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '"></div>';
+          }
+          return html;
+        }
+        var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';
+        hueHtml = '<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' + getOldIeFallbackHtml() + '<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' + '</div>';
+        return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' + '<div class="' + prefix + 'colorpicker-overlay1">' + '<div class="' + prefix + 'colorpicker-overlay2">' + '<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' + '<div class="' + prefix + 'colorpicker-selector2"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';
       }
-      var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';
-      hueHtml = '<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' + getOldIeFallbackHtml() + '<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' + '</div>';
-      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' + '<div class="' + prefix + 'colorpicker-overlay1">' + '<div class="' + prefix + 'colorpicker-overlay2">' + '<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' + '<div class="' + prefix + 'colorpicker-selector2"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';
-    }
-  });
+    });
 
-  var DropZone = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      settings = global$4.extend({
-        height: 100,
-        text: 'Drop an image here',
-        multiple: false,
-        accept: null
-      }, settings);
-      self._super(settings);
-      self.classes.add('dropzone');
-      if (settings.multiple) {
-        self.classes.add('multiple');
-      }
-    },
-    renderHtml: function () {
-      var self = this;
-      var attrs, elm;
-      var cfg = self.settings;
-      attrs = {
-        id: self._id,
-        hidefocus: '1'
-      };
-      elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');
-      if (cfg.height) {
-        funcs.css(elm, 'height', cfg.height + 'px');
-      }
-      if (cfg.width) {
-        funcs.css(elm, 'width', cfg.width + 'px');
-      }
-      elm.className = self.classes;
-      return elm.outerHTML;
-    },
-    postRender: function () {
-      var self = this;
-      var toggleDragClass = function (e) {
-        e.preventDefault();
-        self.classes.toggle('dragenter');
-        self.getEl().className = self.classes;
-      };
-      var filter = function (files) {
-        var accept = self.settings.accept;
-        if (typeof accept !== 'string') {
-          return files;
+    var DropZone = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        settings = global$4.extend({
+          height: 100,
+          text: 'Drop an image here',
+          multiple: false,
+          accept: null
+        }, settings);
+        self._super(settings);
+        self.classes.add('dropzone');
+        if (settings.multiple) {
+          self.classes.add('multiple');
         }
-        var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');
-        return global$4.grep(files, function (file) {
-          return re.test(file.name);
-        });
-      };
-      self._super();
-      self.$el.on('dragover', function (e) {
-        e.preventDefault();
-      });
-      self.$el.on('dragenter', toggleDragClass);
-      self.$el.on('dragleave', toggleDragClass);
-      self.$el.on('drop', function (e) {
-        e.preventDefault();
-        if (self.state.get('disabled')) {
-          return;
+      },
+      renderHtml: function () {
+        var self = this;
+        var attrs, elm;
+        var cfg = self.settings;
+        attrs = {
+          id: self._id,
+          hidefocus: '1'
+        };
+        elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');
+        if (cfg.height) {
+          funcs.css(elm, 'height', cfg.height + 'px');
         }
-        var files = filter(e.dataTransfer.files);
-        self.value = function () {
-          if (!files.length) {
-            return null;
-          } else if (self.settings.multiple) {
+        if (cfg.width) {
+          funcs.css(elm, 'width', cfg.width + 'px');
+        }
+        elm.className = self.classes;
+        return elm.outerHTML;
+      },
+      postRender: function () {
+        var self = this;
+        var toggleDragClass = function (e) {
+          e.preventDefault();
+          self.classes.toggle('dragenter');
+          self.getEl().className = self.classes;
+        };
+        var filter = function (files) {
+          var accept = self.settings.accept;
+          if (typeof accept !== 'string') {
             return files;
-          } else {
-            return files[0];
           }
+          var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');
+          return global$4.grep(files, function (file) {
+            return re.test(file.name);
+          });
         };
-        if (files.length) {
-          self.fire('change', e);
-        }
-      });
-    },
-    remove: function () {
-      this.$el.off();
-      this._super();
-    }
-  });
+        self._super();
+        self.$el.on('dragover', function (e) {
+          e.preventDefault();
+        });
+        self.$el.on('dragenter', toggleDragClass);
+        self.$el.on('dragleave', toggleDragClass);
+        self.$el.on('drop', function (e) {
+          e.preventDefault();
+          if (self.state.get('disabled')) {
+            return;
+          }
+          var files = filter(e.dataTransfer.files);
+          self.value = function () {
+            if (!files.length) {
+              return null;
+            } else if (self.settings.multiple) {
+              return files;
+            } else {
+              return files[0];
+            }
+          };
+          if (files.length) {
+            self.fire('change', e);
+          }
+        });
+      },
+      remove: function () {
+        this.$el.off();
+        this._super();
+      }
+    });
 
-  var Path = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      if (!settings.delimiter) {
-        settings.delimiter = '\xBB';
-      }
-      self._super(settings);
-      self.classes.add('path');
-      self.canFocus = true;
-      self.on('click', function (e) {
-        var index;
-        var target = e.target;
-        if (index = target.getAttribute('data-index')) {
-          self.fire('select', {
-            value: self.row()[index],
-            index: index
-          });
+    var Path = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        if (!settings.delimiter) {
+          settings.delimiter = '\xBB';
         }
-      });
-      self.row(self.settings.row);
-    },
-    focus: function () {
-      var self = this;
-      self.getEl().firstChild.focus();
-      return self;
-    },
-    row: function (row) {
-      if (!arguments.length) {
-        return this.state.get('row');
+        self._super(settings);
+        self.classes.add('path');
+        self.canFocus = true;
+        self.on('click', function (e) {
+          var index;
+          var target = e.target;
+          if (index = target.getAttribute('data-index')) {
+            self.fire('select', {
+              value: self.row()[index],
+              index: index
+            });
+          }
+        });
+        self.row(self.settings.row);
+      },
+      focus: function () {
+        var self = this;
+        self.getEl().firstChild.focus();
+        return self;
+      },
+      row: function (row) {
+        if (!arguments.length) {
+          return this.state.get('row');
+        }
+        this.state.set('row', row);
+        return this;
+      },
+      renderHtml: function () {
+        var self = this;
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + self._getDataPathHtml(self.state.get('row')) + '</div>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:row', function (e) {
+          self.innerHtml(self._getDataPathHtml(e.value));
+        });
+        return self._super();
+      },
+      _getDataPathHtml: function (data) {
+        var self = this;
+        var parts = data || [];
+        var i, l, html = '';
+        var prefix = self.classPrefix;
+        for (i = 0, l = parts.length; i < l; i++) {
+          html += (i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') + '<div role="button" class="' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' + i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + (i + 1) + '">' + parts[i].name + '</div>';
+        }
+        if (!html) {
+          html = '<div class="' + prefix + 'path-item">\xA0</div>';
+        }
+        return html;
       }
-      this.state.set('row', row);
-      return this;
-    },
-    renderHtml: function () {
-      var self = this;
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + self._getDataPathHtml(self.state.get('row')) + '</div>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:row', function (e) {
-        self.innerHtml(self._getDataPathHtml(e.value));
-      });
-      return self._super();
-    },
-    _getDataPathHtml: function (data) {
-      var self = this;
-      var parts = data || [];
-      var i, l, html = '';
-      var prefix = self.classPrefix;
-      for (i = 0, l = parts.length; i < l; i++) {
-        html += (i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') + '<div role="button" class="' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' + i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + (i + 1) + '">' + parts[i].name + '</div>';
-      }
-      if (!html) {
-        html = '<div class="' + prefix + 'path-item">\xA0</div>';
-      }
-      return html;
-    }
-  });
+    });
 
-  var ElementPath = Path.extend({
-    postRender: function () {
-      var self = this, editor = self.settings.editor;
-      function isHidden(elm) {
-        if (elm.nodeType === 1) {
-          if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {
-            return true;
+    var ElementPath = Path.extend({
+      postRender: function () {
+        var self = this, editor = self.settings.editor;
+        function isHidden(elm) {
+          if (elm.nodeType === 1) {
+            if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {
+              return true;
+            }
+            if (elm.getAttribute('data-mce-type') === 'bookmark') {
+              return true;
+            }
           }
-          if (elm.getAttribute('data-mce-type') === 'bookmark') {
-            return true;
-          }
+          return false;
         }
-        return false;
-      }
-      if (editor.settings.elementpath !== false) {
-        self.on('select', function (e) {
-          editor.focus();
-          editor.selection.select(this.row()[e.index].element);
-          editor.nodeChanged();
-        });
-        editor.on('nodeChange', function (e) {
-          var outParents = [];
-          var parents = e.parents;
-          var i = parents.length;
-          while (i--) {
-            if (parents[i].nodeType === 1 && !isHidden(parents[i])) {
-              var args = editor.fire('ResolveName', {
-                name: parents[i].nodeName.toLowerCase(),
-                target: parents[i]
-              });
-              if (!args.isDefaultPrevented()) {
-                outParents.push({
-                  name: args.name,
-                  element: parents[i]
+        if (editor.settings.elementpath !== false) {
+          self.on('select', function (e) {
+            editor.focus();
+            editor.selection.select(this.row()[e.index].element);
+            editor.nodeChanged();
+          });
+          editor.on('nodeChange', function (e) {
+            var outParents = [];
+            var parents = e.parents;
+            var i = parents.length;
+            while (i--) {
+              if (parents[i].nodeType === 1 && !isHidden(parents[i])) {
+                var args = editor.fire('ResolveName', {
+                  name: parents[i].nodeName.toLowerCase(),
+                  target: parents[i]
                 });
+                if (!args.isDefaultPrevented()) {
+                  outParents.push({
+                    name: args.name,
+                    element: parents[i]
+                  });
+                }
+                if (args.isPropagationStopped()) {
+                  break;
+                }
               }
-              if (args.isPropagationStopped()) {
-                break;
-              }
             }
-          }
-          self.row(outParents);
-        });
+            self.row(outParents);
+          });
+        }
+        return self._super();
       }
-      return self._super();
-    }
-  });
+    });
 
-  var FormItem = Container.extend({
-    Defaults: {
-      layout: 'flex',
-      align: 'center',
-      defaults: { flex: 1 }
-    },
-    renderHtml: function () {
-      var self = this, layout = self._layout, prefix = self.classPrefix;
-      self.classes.add('formitem');
-      layout.preRender(self);
-      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<div id="' + self._id + '-title" class="' + prefix + 'title">' + self.settings.title + '</div>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
-    }
-  });
+    var FormItem = Container.extend({
+      Defaults: {
+        layout: 'flex',
+        align: 'center',
+        defaults: { flex: 1 }
+      },
+      renderHtml: function () {
+        var self = this, layout = self._layout, prefix = self.classPrefix;
+        self.classes.add('formitem');
+        layout.preRender(self);
+        return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<div id="' + self._id + '-title" class="' + prefix + 'title">' + self.settings.title + '</div>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
+      }
+    });
 
-  var Form = Container.extend({
-    Defaults: {
-      containerCls: 'form',
-      layout: 'flex',
-      direction: 'column',
-      align: 'stretch',
-      flex: 1,
-      padding: 15,
-      labelGap: 30,
-      spacing: 10,
-      callbacks: {
-        submit: function () {
-          this.submit();
+    var Form = Container.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 self = this, items = self.items();
-      if (!self.settings.formItemDefaults) {
-        self.settings.formItemDefaults = {
-          layout: 'flex',
-          autoResize: 'overflow',
-          defaults: { flex: 1 }
-        };
-      }
-      items.each(function (ctrl) {
-        var formItem;
-        var label = ctrl.settings.label;
-        if (label) {
-          formItem = new FormItem(global$4.extend({
-            items: {
-              type: 'label',
-              id: ctrl._id + '-l',
-              text: label,
-              flex: 0,
-              forId: ctrl._id,
-              disabled: ctrl.disabled()
+      },
+      preRender: function () {
+        var self = this, items = self.items();
+        if (!self.settings.formItemDefaults) {
+          self.settings.formItemDefaults = {
+            layout: 'flex',
+            autoResize: 'overflow',
+            defaults: { flex: 1 }
+          };
+        }
+        items.each(function (ctrl) {
+          var formItem;
+          var label = ctrl.settings.label;
+          if (label) {
+            formItem = new FormItem(global$4.extend({
+              items: {
+                type: 'label',
+                id: ctrl._id + '-l',
+                text: label,
+                flex: 0,
+                forId: ctrl._id,
+                disabled: ctrl.disabled()
+              }
+            }, self.settings.formItemDefaults));
+            formItem.type = 'formitem';
+            ctrl.aria('labelledby', ctrl._id + '-l');
+            if (typeof ctrl.settings.flex === 'undefined') {
+              ctrl.settings.flex = 1;
             }
-          }, self.settings.formItemDefaults));
-          formItem.type = 'formitem';
-          ctrl.aria('labelledby', ctrl._id + '-l');
-          if (typeof ctrl.settings.flex === 'undefined') {
-            ctrl.settings.flex = 1;
+            self.replace(ctrl, formItem);
+            formItem.add(ctrl);
           }
-          self.replace(ctrl, formItem);
-          formItem.add(ctrl);
-        }
-      });
-    },
-    submit: function () {
-      return this.fire('submit', { data: this.toJSON() });
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.fromJSON(self.settings.data);
-    },
-    bindStates: function () {
-      var self = this;
-      self._super();
-      function recalcLabels() {
-        var maxLabelWidth = 0;
-        var labels = [];
-        var i, labelGap, items;
-        if (self.settings.labelGapCalc === false) {
-          return;
-        }
-        if (self.settings.labelGapCalc === 'children') {
-          items = self.find('formitem');
-        } else {
-          items = self.items();
-        }
-        items.filter('formitem').each(function (item) {
-          var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
-          maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
-          labels.push(labelCtrl);
         });
-        labelGap = self.settings.labelGap || 0;
-        i = labels.length;
-        while (i--) {
-          labels[i].settings.minWidth = maxLabelWidth + labelGap;
+      },
+      submit: function () {
+        return this.fire('submit', { data: this.toJSON() });
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.fromJSON(self.settings.data);
+      },
+      bindStates: function () {
+        var self = this;
+        self._super();
+        function recalcLabels() {
+          var maxLabelWidth = 0;
+          var labels = [];
+          var i, labelGap, items;
+          if (self.settings.labelGapCalc === false) {
+            return;
+          }
+          if (self.settings.labelGapCalc === 'children') {
+            items = self.find('formitem');
+          } else {
+            items = self.items();
+          }
+          items.filter('formitem').each(function (item) {
+            var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
+            maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
+            labels.push(labelCtrl);
+          });
+          labelGap = self.settings.labelGap || 0;
+          i = labels.length;
+          while (i--) {
+            labels[i].settings.minWidth = maxLabelWidth + labelGap;
+          }
         }
+        self.on('show', recalcLabels);
+        recalcLabels();
       }
-      self.on('show', recalcLabels);
-      recalcLabels();
-    }
-  });
+    });
 
-  var FieldSet = Form.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 self = this, layout = self._layout, prefix = self.classPrefix;
-      self.preRender();
-      layout.preRender(self);
-      return '<fieldset id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' + self.settings.title + '</legend>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';
-    }
-  });
+    var FieldSet = Form.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 self = this, layout = self._layout, prefix = self.classPrefix;
+        self.preRender();
+        layout.preRender(self);
+        return '<fieldset id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' + self.settings.title + '</legend>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';
+      }
+    });
 
-  var unique$1 = 0;
-  var generate = function (prefix) {
-    var date = new Date();
-    var time = date.getTime();
-    var random = Math.floor(Math.random() * 1000000000);
-    unique$1++;
-    return prefix + '_' + random + unique$1 + String(time);
-  };
+    var unique$1 = 0;
+    var generate = function (prefix) {
+      var date = new Date();
+      var time = date.getTime();
+      var random = Math.floor(Math.random() * 1000000000);
+      unique$1++;
+      return prefix + '_' + random + unique$1 + String(time);
+    };
 
-  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: constant(node) };
-  };
-  var fromPoint = function (docElm, x, y) {
-    var doc = docElm.dom();
-    return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
-  };
-  var Element$$1 = {
-    fromHtml: fromHtml,
-    fromTag: fromTag,
-    fromText: fromText,
-    fromDom: fromDom,
-    fromPoint: fromPoint
-  };
-
-  var cached = function (f) {
-    var called = false;
-    var r;
-    return function () {
-      var args = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        args[_i] = arguments[_i];
+    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';
       }
-      if (!called) {
-        called = true;
-        r = f.apply(null, args);
-      }
-      return r;
+      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: constant(node) };
+    };
+    var fromPoint = function (docElm, x, y) {
+      var doc = docElm.dom();
+      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
+    };
+    var Element$$1 = {
+      fromHtml: fromHtml,
+      fromTag: fromTag,
+      fromText: fromText,
+      fromDom: fromDom,
+      fromPoint: fromPoint
+    };
 
-  var $_2jrgnk1apjjgwek8y = {
-    ATTRIBUTE: Node.ATTRIBUTE_NODE,
-    CDATA_SECTION: Node.CDATA_SECTION_NODE,
-    COMMENT: Node.COMMENT_NODE,
-    DOCUMENT: Node.DOCUMENT_NODE,
-    DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,
-    DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,
-    ELEMENT: Node.ELEMENT_NODE,
-    TEXT: Node.TEXT_NODE,
-    PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,
-    ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,
-    ENTITY: Node.ENTITY_NODE,
-    NOTATION: Node.NOTATION_NODE
-  };
-
-  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$2 = function (t) {
-    return function (element) {
-      return type(element) === t;
+    var cached = function (f) {
+      var called = false;
+      var r;
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        if (!called) {
+          called = true;
+          r = f.apply(null, args);
+        }
+        return r;
+      };
     };
-  };
-  var isComment = function (element) {
-    return type(element) === $_2jrgnk1apjjgwek8y.COMMENT || name(element) === '#comment';
-  };
-  var isElement = isType$2($_2jrgnk1apjjgwek8y.ELEMENT);
-  var isText = isType$2($_2jrgnk1apjjgwek8y.TEXT);
-  var isDocument = isType$2($_2jrgnk1apjjgwek8y.DOCUMENT);
-  var $_fv3as1aojjgwek8x = {
-    name: name,
-    type: type,
-    value: value,
-    isElement: isElement,
-    isText: isText,
-    isDocument: isDocument,
-    isComment: isComment
-  };
 
-  var inBody = function (element) {
-    var dom = $_fv3as1aojjgwek8x.isText(element) ? element.dom().parentNode : element.dom();
-    return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);
-  };
-  var body = cached(function () {
-    return getBody(Element$$1.fromDom(document));
-  });
-  var getBody = function (doc) {
-    var body = doc.dom().body;
-    if (body === null || body === undefined)
-      throw 'Body is not available yet';
-    return Element$$1.fromDom(body);
-  };
-  var $_d2glpe1amjjgwek8t = {
-    body: body,
-    getBody: getBody,
-    inBody: inBody
-  };
+    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
+    var COMMENT = Node.COMMENT_NODE;
+    var DOCUMENT = Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = Node.ELEMENT_NODE;
+    var TEXT = Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = Node.ENTITY_NODE;
+    var NOTATION = Node.NOTATION_NODE;
 
-  var Immutable = function () {
-    var fields = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-      fields[_i] = arguments[_i];
-    }
-    return function () {
-      var values = [];
+    var Immutable = function () {
+      var fields = [];
       for (var _i = 0; _i < arguments.length; _i++) {
-        values[_i] = arguments[_i];
+        fields[_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 = {};
-      each(fields, function (name, i) {
-        struct[name] = constant(values[i]);
-      });
-      return struct;
+      return function () {
+        var values = [];
+        for (var _i = 0; _i < arguments.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 = {};
+        each(fields, function (name, i) {
+          struct[name] = constant(values[i]);
+        });
+        return struct;
+      };
     };
-  };
 
-  var toArray = function (target, f) {
-    var r = [];
-    var recurse = function (e) {
-      r.push(e);
-      return f(e);
+    var node = function () {
+      var f = Global$1.getOrDie('Node');
+      return f;
     };
-    var cur = f(target);
-    do {
-      cur = cur.bind(recurse);
-    } while (cur.isSome());
-    return r;
-  };
-  var $_607sf01awjjgweka0 = { toArray: toArray };
+    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 Node$1 = {
+      documentPositionPreceding: documentPositionPreceding,
+      documentPositionContainedBy: documentPositionContainedBy
+    };
 
-  var node = function () {
-    var f = $_8wnjhx19gjjgwek54.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 $_d0o64o1ayjjgwekaa = {
-    documentPositionPreceding: documentPositionPreceding,
-    documentPositionContainedBy: documentPositionContainedBy
-  };
-
-  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)
+    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: 0,
-        minor: 0
+        major: major,
+        minor: minor
       };
-    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 Version = {
+      nu: nu,
+      detect: detect,
+      unknown: unknown
     };
-  };
-  var $_bhlk9t1b2jjgwekaq = {
-    nu: nu,
-    detect: detect,
-    unknown: unknown
-  };
 
-  var edge = 'Edge';
-  var chrome = 'Chrome';
-  var ie = 'IE';
-  var opera = 'Opera';
-  var firefox = 'Firefox';
-  var safari = 'Safari';
-  var isBrowser = function (name, current) {
-    return function () {
-      return current === name;
+    var edge = 'Edge';
+    var chrome = 'Chrome';
+    var ie = 'IE';
+    var opera = '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: $_bhlk9t1b2jjgwekaq.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, current),
-      isOpera: isBrowser(opera, current),
-      isFirefox: isBrowser(firefox, current),
-      isSafari: isBrowser(safari, current)
+    var unknown$1 = function () {
+      return nu$1({
+        current: undefined,
+        version: Version.unknown()
+      });
     };
-  };
-  var $_3j4jht1b1jjgwekal = {
-    unknown: unknown$1,
-    nu: nu$1,
-    edge: constant(edge),
-    chrome: constant(chrome),
-    ie: constant(ie),
-    opera: constant(opera),
-    firefox: constant(firefox),
-    safari: constant(safari)
-  };
-
-  var windows$1 = 'Windows';
-  var ios = 'iOS';
-  var android = 'Android';
-  var linux = 'Linux';
-  var osx = 'OSX';
-  var solaris = 'Solaris';
-  var freebsd = 'FreeBSD';
-  var isOS = function (name, current) {
-    return function () {
-      return current === name;
+    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, current),
+        isOpera: isBrowser(opera, current),
+        isFirefox: isBrowser(firefox, current),
+        isSafari: isBrowser(safari, current)
+      };
     };
-  };
-  var unknown$2 = function () {
-    return nu$2({
-      current: undefined,
-      version: $_bhlk9t1b2jjgwekaq.unknown()
-    });
-  };
-  var nu$2 = function (info) {
-    var current = info.current;
-    var version = info.version;
-    return {
-      current: current,
-      version: version,
-      isWindows: isOS(windows$1, current),
-      isiOS: isOS(ios, current),
-      isAndroid: isOS(android, current),
-      isOSX: isOS(osx, current),
-      isLinux: isOS(linux, current),
-      isSolaris: isOS(solaris, current),
-      isFreeBSD: isOS(freebsd, current)
+    var Browser = {
+      unknown: unknown$1,
+      nu: nu$1,
+      edge: constant(edge),
+      chrome: constant(chrome),
+      ie: constant(ie),
+      opera: constant(opera),
+      firefox: constant(firefox),
+      safari: constant(safari)
     };
-  };
-  var $_7je60a1b3jjgwekar = {
-    unknown: unknown$2,
-    nu: nu$2,
-    windows: constant(windows$1),
-    ios: constant(ios),
-    android: constant(android),
-    linux: constant(linux),
-    osx: constant(osx),
-    solaris: constant(solaris),
-    freebsd: 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: constant(isiPad),
-      isiPhone: constant(isiPhone),
-      isTablet: constant(isTablet),
-      isPhone: constant(isPhone),
-      isTouch: constant(isTouch),
-      isAndroid: os.isAndroid,
-      isiOS: os.isiOS,
-      isWebView: constant(iOSwebview)
+    var windows$1 = 'Windows';
+    var ios = 'iOS';
+    var android = 'Android';
+    var linux = 'Linux';
+    var osx = 'OSX';
+    var solaris = 'Solaris';
+    var freebsd = 'FreeBSD';
+    var isOS = function (name, current) {
+      return function () {
+        return current === name;
+      };
     };
-  }
-
-  var detect$1 = function (candidates, userAgent) {
-    var agent = String(userAgent).toLowerCase();
-    return find(candidates, function (candidate) {
-      return candidate.search(agent);
-    });
-  };
-  var detectBrowser = function (browsers, userAgent) {
-    return detect$1(browsers, userAgent).map(function (browser) {
-      var version = $_bhlk9t1b2jjgwekaq.detect(browser.versionRegexes, userAgent);
+    var unknown$2 = function () {
+      return nu$2({
+        current: undefined,
+        version: Version.unknown()
+      });
+    };
+    var nu$2 = function (info) {
+      var current = info.current;
+      var version = info.version;
       return {
-        current: browser.name,
-        version: version
+        current: current,
+        version: version,
+        isWindows: isOS(windows$1, current),
+        isiOS: isOS(ios, current),
+        isAndroid: isOS(android, current),
+        isOSX: isOS(osx, current),
+        isLinux: isOS(linux, current),
+        isSolaris: isOS(solaris, current),
+        isFreeBSD: isOS(freebsd, current)
       };
-    });
-  };
-  var detectOs = function (oses, userAgent) {
-    return detect$1(oses, userAgent).map(function (os) {
-      var version = $_bhlk9t1b2jjgwekaq.detect(os.versionRegexes, userAgent);
+    };
+    var OperatingSystem = {
+      unknown: unknown$2,
+      nu: nu$2,
+      windows: constant(windows$1),
+      ios: constant(ios),
+      android: constant(android),
+      linux: constant(linux),
+      osx: constant(osx),
+      solaris: constant(solaris),
+      freebsd: constant(freebsd)
+    };
+
+    var DeviceType = function (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 {
-        current: os.name,
-        version: version
+        isiPad: constant(isiPad),
+        isiPhone: constant(isiPhone),
+        isTablet: constant(isTablet),
+        isPhone: constant(isPhone),
+        isTouch: constant(isTouch),
+        isAndroid: os.isAndroid,
+        isiOS: os.isiOS,
+        isWebView: constant(iOSwebview)
       };
-    });
-  };
-  var $_1uo66k1b5jjgwekb9 = {
-    detectBrowser: detectBrowser,
-    detectOs: detectOs
-  };
+    };
 
-  var contains$1 = function (str, substr) {
-    return str.indexOf(substr) !== -1;
-  };
+    var detect$1 = function (candidates, userAgent) {
+      var agent = String(userAgent).toLowerCase();
+      return find(candidates, function (candidate) {
+        return candidate.search(agent);
+      });
+    };
+    var detectBrowser = function (browsers, userAgent) {
+      return detect$1(browsers, userAgent).map(function (browser) {
+        var version = Version.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 = Version.detect(os.versionRegexes, userAgent);
+        return {
+          current: os.name,
+          version: version
+        };
+      });
+    };
+    var UaString = {
+      detectBrowser: detectBrowser,
+      detectOs: detectOs
+    };
 
-  var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
-  var checkContains = function (target) {
-    return function (uastring) {
-      return contains$1(uastring, target);
+    var contains$1 = function (str, substr) {
+      return str.indexOf(substr) !== -1;
     };
-  };
-  var browsers = [
-    {
-      name: 'Edge',
-      versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
-      search: function (uastring) {
-        var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
-        return monstrosity;
+
+    var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
+    var checkContains = function (target) {
+      return function (uastring) {
+        return contains$1(uastring, target);
+      };
+    };
+    var browsers = [
+      {
+        name: 'Edge',
+        versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
+        search: function (uastring) {
+          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
+          return monstrosity;
+        }
+      },
+      {
+        name: 'Chrome',
+        versionRegexes: [
+          /.*?chrome\/([0-9]+)\.([0-9]+).*/,
+          normalVersionRegex
+        ],
+        search: function (uastring) {
+          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
+        }
+      },
+      {
+        name: 'IE',
+        versionRegexes: [
+          /.*?msie\ ?([0-9]+)\.([0-9]+).*/,
+          /.*?rv:([0-9]+)\.([0-9]+).*/
+        ],
+        search: function (uastring) {
+          return contains$1(uastring, 'msie') || contains$1(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 (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
+        }
       }
-    },
-    {
-      name: 'Chrome',
-      versionRegexes: [
-        /.*?chrome\/([0-9]+)\.([0-9]+).*/,
-        normalVersionRegex
-      ],
-      search: function (uastring) {
-        return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
+    ];
+    var oses = [
+      {
+        name: 'Windows',
+        search: checkContains('win'),
+        versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
+      },
+      {
+        name: 'iOS',
+        search: function (uastring) {
+          return contains$1(uastring, 'iphone') || contains$1(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: []
       }
-    },
-    {
-      name: 'IE',
-      versionRegexes: [
-        /.*?msie\ ?([0-9]+)\.([0-9]+).*/,
-        /.*?rv:([0-9]+)\.([0-9]+).*/
-      ],
-      search: function (uastring) {
-        return contains$1(uastring, 'msie') || contains$1(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 (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
-      }
-    }
-  ];
-  var oses = [
-    {
-      name: 'Windows',
-      search: checkContains('win'),
-      versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
-    },
-    {
-      name: 'iOS',
-      search: function (uastring) {
-        return contains$1(uastring, 'iphone') || contains$1(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 $_4f7v971b6jjgwekbd = {
-    browsers: constant(browsers),
-    oses: constant(oses)
-  };
+    ];
+    var PlatformInfo = {
+      browsers: constant(browsers),
+      oses: constant(oses)
+    };
 
-  var detect$2 = function (userAgent) {
-    var browsers = $_4f7v971b6jjgwekbd.browsers();
-    var oses = $_4f7v971b6jjgwekbd.oses();
-    var browser = $_1uo66k1b5jjgwekb9.detectBrowser(browsers, userAgent).fold($_3j4jht1b1jjgwekal.unknown, $_3j4jht1b1jjgwekal.nu);
-    var os = $_1uo66k1b5jjgwekb9.detectOs(oses, userAgent).fold($_7je60a1b3jjgwekar.unknown, $_7je60a1b3jjgwekar.nu);
-    var deviceType = DeviceType(os, browser, userAgent);
-    return {
-      browser: browser,
-      os: os,
-      deviceType: deviceType
+    var detect$2 = function (userAgent) {
+      var browsers = PlatformInfo.browsers();
+      var oses = PlatformInfo.oses();
+      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);
+      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
+      var deviceType = DeviceType(os, browser, userAgent);
+      return {
+        browser: browser,
+        os: os,
+        deviceType: deviceType
+      };
     };
-  };
-  var $_d71emz1b0jjgwekak = { detect: detect$2 };
+    var PlatformDetection = { detect: detect$2 };
 
-  var detect$3 = cached(function () {
-    var userAgent = navigator.userAgent;
-    return $_d71emz1b0jjgwekak.detect(userAgent);
-  });
-  var $_9xrxmy1azjjgwekac = { detect: detect$3 };
+    var detect$3 = cached(function () {
+      var userAgent = navigator.userAgent;
+      return PlatformDetection.detect(userAgent);
+    });
+    var PlatformDetection$1 = { detect: detect$3 };
 
-  var ELEMENT = $_2jrgnk1apjjgwek8y.ELEMENT;
-  var DOCUMENT = $_2jrgnk1apjjgwek8y.DOCUMENT;
-  var is = 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) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
-  };
-  var one = function (selector, scope) {
-    var base = scope === undefined ? document : scope.dom();
-    return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
-  };
-  var $_e63uk51bajjgwekbq = {
-    all: all,
-    is: is,
-    one: one
-  };
+    var ELEMENT$1 = ELEMENT;
+    var DOCUMENT$1 = DOCUMENT;
+    var bypassSelector = function (dom) {
+      return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
+    };
+    var all = function (selector, scope) {
+      var base = scope === undefined ? document : scope.dom();
+      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
+    };
+    var one = function (selector, scope) {
+      var base = scope === undefined ? document : scope.dom();
+      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
+    };
 
-  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 exists(elements, 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 $_d0o64o1ayjjgwekaa.documentPositionContainedBy(e1.dom(), e2.dom());
-  };
-  var browser = $_9xrxmy1azjjgwekac.detect().browser;
-  var contains$2 = browser.isIE() ? ieContains : regularContains;
-  var $_36s5ie1axjjgweka1 = {
-    eq: eq,
-    isEqualNode: isEqualNode,
-    member: member,
-    contains: contains$2,
-    is: $_e63uk51bajjgwekbq.is
-  };
-
-  var owner = function (element) {
-    return Element$$1.fromDom(element.dom().ownerDocument);
-  };
-  var documentElement = function (element) {
-    return Element$$1.fromDom(element.dom().ownerDocument.documentElement);
-  };
-  var defaultView = function (element) {
-    var el = element.dom();
-    var defaultView = el.ownerDocument.defaultView;
-    return Element$$1.fromDom(defaultView);
-  };
-  var parent$1 = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.parentNode).map(Element$$1.fromDom);
-  };
-  var findIndex$1 = function (element) {
-    return parent$1(element).bind(function (p) {
-      var kin = children(p);
-      return findIndex(kin, function (elem) {
-        return $_36s5ie1axjjgweka1.eq(element, elem);
-      });
-    });
-  };
-  var parents = function (element, isRoot) {
-    var stop = isFunction$1(isRoot) ? isRoot : constant(false);
-    var dom = element.dom();
-    var ret = [];
-    while (dom.parentNode !== null && dom.parentNode !== undefined) {
-      var rawParent = dom.parentNode;
-      var parent = Element$$1.fromDom(rawParent);
-      ret.push(parent);
-      if (stop(parent) === true)
-        break;
-      else
-        dom = rawParent;
-    }
-    return ret;
-  };
-  var siblings = function (element) {
-    var filterSelf = function (elements) {
-      return filter(elements, function (x) {
-        return !$_36s5ie1axjjgweka1.eq(element, x);
-      });
+    var regularContains = function (e1, e2) {
+      var d1 = e1.dom(), d2 = e2.dom();
+      return d1 === d2 ? false : d1.contains(d2);
     };
-    return parent$1(element).map(children).map(filterSelf).getOr([]);
-  };
-  var offsetParent = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.offsetParent).map(Element$$1.fromDom);
-  };
-  var prevSibling = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.previousSibling).map(Element$$1.fromDom);
-  };
-  var nextSibling = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.nextSibling).map(Element$$1.fromDom);
-  };
-  var prevSiblings = function (element) {
-    return reverse($_607sf01awjjgweka0.toArray(element, prevSibling));
-  };
-  var nextSiblings = function (element) {
-    return $_607sf01awjjgweka0.toArray(element, nextSibling);
-  };
-  var children = function (element) {
-    var dom = element.dom();
-    return map(dom.childNodes, Element$$1.fromDom);
-  };
-  var child = function (element, index) {
-    var children = element.dom().childNodes;
-    return Option.from(children[index]).map(Element$$1.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 = 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 $_fk3hdw1aqjjgwek91 = {
-    owner: owner,
-    defaultView: defaultView,
-    documentElement: documentElement,
-    parent: parent$1,
-    findIndex: findIndex$1,
-    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 ieContains = function (e1, e2) {
+      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
+    };
+    var browser = PlatformDetection$1.detect().browser;
+    var contains$2 = browser.isIE() ? ieContains : regularContains;
 
-  var all$1 = function (predicate) {
-    return descendants($_d2glpe1amjjgwek8t.body(), predicate);
-  };
-  var ancestors = function (scope, predicate, isRoot) {
-    return filter($_fk3hdw1aqjjgwek91.parents(scope, isRoot), predicate);
-  };
-  var siblings$1 = function (scope, predicate) {
-    return filter($_fk3hdw1aqjjgwek91.siblings(scope), predicate);
-  };
-  var children$1 = function (scope, predicate) {
-    return filter($_fk3hdw1aqjjgwek91.children(scope), predicate);
-  };
-  var descendants = function (scope, predicate) {
-    var result = [];
-    each($_fk3hdw1aqjjgwek91.children(scope), function (x) {
-      if (predicate(x)) {
-        result = result.concat([x]);
-      }
-      result = result.concat(descendants(x, predicate));
-    });
-    return result;
-  };
-  var $_4re57m1aljjgwek8p = {
-    all: all$1,
-    ancestors: ancestors,
-    siblings: siblings$1,
-    children: children$1,
-    descendants: descendants
-  };
+    var spot = Immutable('element', 'offset');
 
-  var all$2 = function (selector) {
-    return $_e63uk51bajjgwekbq.all(selector);
-  };
-  var ancestors$1 = function (scope, selector, isRoot) {
-    return $_4re57m1aljjgwek8p.ancestors(scope, function (e) {
-      return $_e63uk51bajjgwekbq.is(e, selector);
-    }, isRoot);
-  };
-  var siblings$2 = function (scope, selector) {
-    return $_4re57m1aljjgwek8p.siblings(scope, function (e) {
-      return $_e63uk51bajjgwekbq.is(e, selector);
-    });
-  };
-  var children$2 = function (scope, selector) {
-    return $_4re57m1aljjgwek8p.children(scope, function (e) {
-      return $_e63uk51bajjgwekbq.is(e, selector);
-    });
-  };
-  var descendants$1 = function (scope, selector) {
-    return $_e63uk51bajjgwekbq.all(selector, scope);
-  };
-  var $_1jc9su1akjjgwek8o = {
-    all: all$2,
-    ancestors: ancestors$1,
-    siblings: siblings$2,
-    children: children$2,
-    descendants: descendants$1
-  };
+    var descendants$1 = function (scope, selector) {
+      return all(selector, scope);
+    };
 
-  var trim$1 = global$4.trim;
-  var hasContentEditableState = function (value) {
-    return function (node) {
-      if (node && node.nodeType === 1) {
-        if (node.contentEditable === value) {
-          return true;
+    var trim$1 = global$4.trim;
+    var hasContentEditableState = function (value) {
+      return function (node) {
+        if (node && node.nodeType === 1) {
+          if (node.contentEditable === value) {
+            return true;
+          }
+          if (node.getAttribute('data-mce-contenteditable') === value) {
+            return true;
+          }
         }
-        if (node.getAttribute('data-mce-contenteditable') === value) {
-          return true;
+        return false;
+      };
+    };
+    var isContentEditableTrue = hasContentEditableState('true');
+    var isContentEditableFalse = hasContentEditableState('false');
+    var create$4 = function (type, title, url, level, attach) {
+      return {
+        type: type,
+        title: title,
+        url: url,
+        level: level,
+        attach: attach
+      };
+    };
+    var isChildOfContentEditableTrue = function (node) {
+      while (node = node.parentNode) {
+        var value = node.contentEditable;
+        if (value && value !== 'inherit') {
+          return isContentEditableTrue(node);
         }
       }
       return false;
     };
-  };
-  var isContentEditableTrue = hasContentEditableState('true');
-  var isContentEditableFalse = hasContentEditableState('false');
-  var create$4 = function (type, title, url, level, attach) {
-    return {
-      type: type,
-      title: title,
-      url: url,
-      level: level,
-      attach: attach
+    var select = function (selector, root) {
+      return map(descendants$1(Element$$1.fromDom(root), selector), function (element) {
+        return element.dom();
+      });
     };
-  };
-  var isChildOfContentEditableTrue = function (node) {
-    while (node = node.parentNode) {
-      var value = node.contentEditable;
-      if (value && value !== 'inherit') {
-        return isContentEditableTrue(node);
-      }
-    }
-    return false;
-  };
-  var select = function (selector, root) {
-    return map($_1jc9su1akjjgwek8o.descendants(Element$$1.fromDom(root), selector), function (element) {
-      return element.dom();
-    });
-  };
-  var getElementText = function (elm) {
-    return elm.innerText || elm.textContent;
-  };
-  var getOrGenerateId = function (elm) {
-    return elm.id ? elm.id : generate('h');
-  };
-  var isAnchor = function (elm) {
-    return elm && elm.nodeName === 'A' && (elm.id || elm.name);
-  };
-  var isValidAnchor = function (elm) {
-    return isAnchor(elm) && isEditable(elm);
-  };
-  var isHeader = function (elm) {
-    return elm && /^(H[1-6])$/.test(elm.nodeName);
-  };
-  var isEditable = function (elm) {
-    return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);
-  };
-  var isValidHeader = function (elm) {
-    return isHeader(elm) && isEditable(elm);
-  };
-  var getLevel = function (elm) {
-    return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;
-  };
-  var headerTarget = function (elm) {
-    var headerId = getOrGenerateId(elm);
-    var attach = function () {
-      elm.id = headerId;
+    var getElementText = function (elm) {
+      return elm.innerText || elm.textContent;
     };
-    return create$4('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);
-  };
-  var anchorTarget = function (elm) {
-    var anchorId = elm.id || elm.name;
-    var anchorText = getElementText(elm);
-    return create$4('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);
-  };
-  var getHeaderTargets = function (elms) {
-    return map(filter(elms, isValidHeader), headerTarget);
-  };
-  var getAnchorTargets = function (elms) {
-    return map(filter(elms, isValidAnchor), anchorTarget);
-  };
-  var getTargetElements = function (elm) {
-    var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);
-    return elms;
-  };
-  var hasTitle = function (target) {
-    return trim$1(target.title).length > 0;
-  };
-  var find$3 = function (elm) {
-    var elms = getTargetElements(elm);
-    return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);
-  };
-  var $_5ia43q1ahjjgwek7u = { find: find$3 };
+    var getOrGenerateId = function (elm) {
+      return elm.id ? elm.id : generate('h');
+    };
+    var isAnchor = function (elm) {
+      return elm && elm.nodeName === 'A' && (elm.id || elm.name);
+    };
+    var isValidAnchor = function (elm) {
+      return isAnchor(elm) && isEditable(elm);
+    };
+    var isHeader = function (elm) {
+      return elm && /^(H[1-6])$/.test(elm.nodeName);
+    };
+    var isEditable = function (elm) {
+      return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);
+    };
+    var isValidHeader = function (elm) {
+      return isHeader(elm) && isEditable(elm);
+    };
+    var getLevel = function (elm) {
+      return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;
+    };
+    var headerTarget = function (elm) {
+      var headerId = getOrGenerateId(elm);
+      var attach = function () {
+        elm.id = headerId;
+      };
+      return create$4('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);
+    };
+    var anchorTarget = function (elm) {
+      var anchorId = elm.id || elm.name;
+      var anchorText = getElementText(elm);
+      return create$4('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);
+    };
+    var getHeaderTargets = function (elms) {
+      return map(filter(elms, isValidHeader), headerTarget);
+    };
+    var getAnchorTargets = function (elms) {
+      return map(filter(elms, isValidAnchor), anchorTarget);
+    };
+    var getTargetElements = function (elm) {
+      var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);
+      return elms;
+    };
+    var hasTitle = function (target) {
+      return trim$1(target.title).length > 0;
+    };
+    var find$3 = function (elm) {
+      var elms = getTargetElements(elm);
+      return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);
+    };
+    var LinkTargets = { find: find$3 };
 
-  var getActiveEditor = function () {
-    return window.tinymce ? window.tinymce.activeEditor : global$5.activeEditor;
-  };
-  var history = {};
-  var HISTORY_LENGTH = 5;
-  var clearHistory = function () {
-    history = {};
-  };
-  var toMenuItem = function (target) {
-    return {
-      title: target.title,
-      value: {
-        title: { raw: target.title },
-        url: target.url,
-        attach: target.attach
-      }
+    var getActiveEditor = function () {
+      return window.tinymce ? window.tinymce.activeEditor : global$5.activeEditor;
     };
-  };
-  var toMenuItems = function (targets) {
-    return global$4.map(targets, toMenuItem);
-  };
-  var staticMenuItem = function (title, url) {
-    return {
-      title: title,
-      value: {
+    var history = {};
+    var HISTORY_LENGTH = 5;
+    var clearHistory = function () {
+      history = {};
+    };
+    var toMenuItem = function (target) {
+      return {
+        title: target.title,
+        value: {
+          title: { raw: target.title },
+          url: target.url,
+          attach: target.attach
+        }
+      };
+    };
+    var toMenuItems = function (targets) {
+      return global$4.map(targets, toMenuItem);
+    };
+    var staticMenuItem = function (title, url) {
+      return {
         title: title,
-        url: url,
-        attach: noop
-      }
+        value: {
+          title: title,
+          url: url,
+          attach: noop
+        }
+      };
     };
-  };
-  var isUniqueUrl = function (url, targets) {
-    var foundTarget = exists(targets, function (target) {
-      return target.url === url;
-    });
-    return !foundTarget;
-  };
-  var getSetting = function (editorSettings, name, defaultValue) {
-    var value = name in editorSettings ? editorSettings[name] : defaultValue;
-    return value === false ? null : value;
-  };
-  var createMenuItems = function (term, targets, fileType, editorSettings) {
-    var separator = { title: '-' };
-    var fromHistoryMenuItems = function (history) {
-      var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];
-      var uniqueHistory = filter(historyItems, function (url) {
-        return isUniqueUrl(url, targets);
+    var isUniqueUrl = function (url, targets) {
+      var foundTarget = exists(targets, function (target) {
+        return target.url === url;
       });
-      return global$4.map(uniqueHistory, function (url) {
-        return {
-          title: url,
-          value: {
-            title: url,
-            url: url,
-            attach: noop
-          }
-        };
-      });
+      return !foundTarget;
     };
-    var fromMenuItems = function (type) {
-      var filteredTargets = filter(targets, function (target) {
-        return target.type === type;
-      });
-      return toMenuItems(filteredTargets);
+    var getSetting = function (editorSettings, name, defaultValue) {
+      var value = name in editorSettings ? editorSettings[name] : defaultValue;
+      return value === false ? null : value;
     };
-    var anchorMenuItems = function () {
-      var anchorMenuItems = fromMenuItems('anchor');
-      var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');
-      var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');
-      if (topAnchor !== null) {
-        anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));
+    var createMenuItems = function (term, targets, fileType, editorSettings) {
+      var separator = { title: '-' };
+      var fromHistoryMenuItems = function (history) {
+        var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];
+        var uniqueHistory = filter(historyItems, function (url) {
+          return isUniqueUrl(url, targets);
+        });
+        return global$4.map(uniqueHistory, function (url) {
+          return {
+            title: url,
+            value: {
+              title: url,
+              url: url,
+              attach: noop
+            }
+          };
+        });
+      };
+      var fromMenuItems = function (type) {
+        var filteredTargets = filter(targets, function (target) {
+          return target.type === type;
+        });
+        return toMenuItems(filteredTargets);
+      };
+      var anchorMenuItems = function () {
+        var anchorMenuItems = fromMenuItems('anchor');
+        var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');
+        var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');
+        if (topAnchor !== null) {
+          anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));
+        }
+        if (bottomAchor !== null) {
+          anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));
+        }
+        return anchorMenuItems;
+      };
+      var join = function (items) {
+        return foldl(items, function (a, b) {
+          var bothEmpty = a.length === 0 || b.length === 0;
+          return bothEmpty ? a.concat(b) : a.concat(separator, b);
+        }, []);
+      };
+      if (editorSettings.typeahead_urls === false) {
+        return [];
       }
-      if (bottomAchor !== null) {
-        anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));
+      return fileType === 'file' ? join([
+        filterByQuery(term, fromHistoryMenuItems(history)),
+        filterByQuery(term, fromMenuItems('header')),
+        filterByQuery(term, anchorMenuItems())
+      ]) : filterByQuery(term, fromHistoryMenuItems(history));
+    };
+    var addToHistory = function (url, fileType) {
+      var items = history[fileType];
+      if (!/^https?/.test(url)) {
+        return;
       }
-      return anchorMenuItems;
+      if (items) {
+        if (indexOf(items, url).isNone()) {
+          history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);
+        }
+      } else {
+        history[fileType] = [url];
+      }
     };
-    var join = function (items) {
-      return foldl(items, function (a, b) {
-        var bothEmpty = a.length === 0 || b.length === 0;
-        return bothEmpty ? a.concat(b) : a.concat(separator, b);
-      }, []);
+    var filterByQuery = function (term, menuItems) {
+      var lowerCaseTerm = term.toLowerCase();
+      var result = global$4.grep(menuItems, function (item) {
+        return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;
+      });
+      return result.length === 1 && result[0].title === term ? [] : result;
     };
-    if (editorSettings.typeahead_urls === false) {
-      return [];
-    }
-    return fileType === 'file' ? join([
-      filterByQuery(term, fromHistoryMenuItems(history)),
-      filterByQuery(term, fromMenuItems('header')),
-      filterByQuery(term, anchorMenuItems())
-    ]) : filterByQuery(term, fromHistoryMenuItems(history));
-  };
-  var addToHistory = function (url, fileType) {
-    var items = history[fileType];
-    if (!/^https?/.test(url)) {
-      return;
-    }
-    if (items) {
-      if (indexOf(items, url).isNone()) {
-        history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);
-      }
-    } else {
-      history[fileType] = [url];
-    }
-  };
-  var filterByQuery = function (term, menuItems) {
-    var lowerCaseTerm = term.toLowerCase();
-    var result = global$4.grep(menuItems, function (item) {
-      return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;
-    });
-    return result.length === 1 && result[0].title === term ? [] : result;
-  };
-  var getTitle = function (linkDetails) {
-    var title = linkDetails.title;
-    return title.raw ? title.raw : title;
-  };
-  var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {
-    var autocomplete = function (term) {
-      var linkTargets = $_5ia43q1ahjjgwek7u.find(bodyElm);
-      var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);
-      ctrl.showAutoComplete(menuItems, term);
+    var getTitle = function (linkDetails) {
+      var title = linkDetails.title;
+      return title.raw ? title.raw : title;
     };
-    ctrl.on('autocomplete', function () {
-      autocomplete(ctrl.value());
-    });
-    ctrl.on('selectitem', function (e) {
-      var linkDetails = e.value;
-      ctrl.value(linkDetails.url);
-      var title = getTitle(linkDetails);
-      if (fileType === 'image') {
-        ctrl.fire('change', {
-          meta: {
-            alt: title,
-            attach: linkDetails.attach
+    var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {
+      var autocomplete = function (term) {
+        var linkTargets = LinkTargets.find(bodyElm);
+        var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);
+        ctrl.showAutoComplete(menuItems, term);
+      };
+      ctrl.on('autocomplete', function () {
+        autocomplete(ctrl.value());
+      });
+      ctrl.on('selectitem', function (e) {
+        var linkDetails = e.value;
+        ctrl.value(linkDetails.url);
+        var title = getTitle(linkDetails);
+        if (fileType === 'image') {
+          ctrl.fire('change', {
+            meta: {
+              alt: title,
+              attach: linkDetails.attach
+            }
+          });
+        } else {
+          ctrl.fire('change', {
+            meta: {
+              text: title,
+              attach: linkDetails.attach
+            }
+          });
+        }
+        ctrl.focus();
+      });
+      ctrl.on('click', function (e) {
+        if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {
+          autocomplete('');
+        }
+      });
+      ctrl.on('PostRender', function () {
+        ctrl.getRoot().on('submit', function (e) {
+          if (!e.isDefaultPrevented()) {
+            addToHistory(ctrl.value(), fileType);
           }
         });
+      });
+    };
+    var statusToUiState = function (result) {
+      var status = result.status, message = result.message;
+      if (status === 'valid') {
+        return {
+          status: 'ok',
+          message: message
+        };
+      } else if (status === 'unknown') {
+        return {
+          status: 'warn',
+          message: message
+        };
+      } else if (status === 'invalid') {
+        return {
+          status: 'warn',
+          message: message
+        };
       } else {
-        ctrl.fire('change', {
-          meta: {
-            text: title,
-            attach: linkDetails.attach
+        return {
+          status: 'none',
+          message: ''
+        };
+      }
+    };
+    var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {
+      var validatorHandler = editorSettings.filepicker_validator_handler;
+      if (validatorHandler) {
+        var validateUrl_1 = function (url) {
+          if (url.length === 0) {
+            ctrl.statusLevel('none');
+            return;
           }
+          validatorHandler({
+            url: url,
+            type: fileType
+          }, function (result) {
+            var uiState = statusToUiState(result);
+            ctrl.statusMessage(uiState.message);
+            ctrl.statusLevel(uiState.status);
+          });
+        };
+        ctrl.state.on('change:value', function (e) {
+          validateUrl_1(e.value);
         });
       }
-      ctrl.focus();
-    });
-    ctrl.on('click', function (e) {
-      if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {
-        autocomplete('');
-      }
-    });
-    ctrl.on('PostRender', function () {
-      ctrl.getRoot().on('submit', function (e) {
-        if (!e.isDefaultPrevented()) {
-          addToHistory(ctrl.value(), fileType);
+    };
+    var FilePicker = ComboBox.extend({
+      Statics: { clearHistory: clearHistory },
+      init: function (settings) {
+        var self = this, editor = getActiveEditor(), editorSettings = editor.settings;
+        var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
+        var fileType = settings.filetype;
+        settings.spellcheck = false;
+        fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
+        if (fileBrowserCallbackTypes) {
+          fileBrowserCallbackTypes = global$4.makeMap(fileBrowserCallbackTypes, /[, ]/);
         }
-      });
-    });
-  };
-  var statusToUiState = function (result) {
-    var status = result.status, message = result.message;
-    if (status === 'valid') {
-      return {
-        status: 'ok',
-        message: message
-      };
-    } else if (status === 'unknown') {
-      return {
-        status: 'warn',
-        message: message
-      };
-    } else if (status === 'invalid') {
-      return {
-        status: 'warn',
-        message: message
-      };
-    } else {
-      return {
-        status: 'none',
-        message: ''
-      };
-    }
-  };
-  var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {
-    var validatorHandler = editorSettings.filepicker_validator_handler;
-    if (validatorHandler) {
-      var validateUrl_1 = function (url) {
-        if (url.length === 0) {
-          ctrl.statusLevel('none');
-          return;
-        }
-        validatorHandler({
-          url: url,
-          type: fileType
-        }, function (result) {
-          var uiState = statusToUiState(result);
-          ctrl.statusMessage(uiState.message);
-          ctrl.statusLevel(uiState.status);
-        });
-      };
-      ctrl.state.on('change:value', function (e) {
-        validateUrl_1(e.value);
-      });
-    }
-  };
-  var FilePicker = ComboBox.extend({
-    Statics: { clearHistory: clearHistory },
-    init: function (settings) {
-      var self = this, editor = getActiveEditor(), editorSettings = editor.settings;
-      var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
-      var fileType = settings.filetype;
-      settings.spellcheck = false;
-      fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
-      if (fileBrowserCallbackTypes) {
-        fileBrowserCallbackTypes = global$4.makeMap(fileBrowserCallbackTypes, /[, ]/);
-      }
-      if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {
-        fileBrowserCallback = editorSettings.file_picker_callback;
-        if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
-          actionCallback = function () {
-            var meta = self.fire('beforecall').meta;
-            meta = global$4.extend({ filetype: fileType }, meta);
-            fileBrowserCallback.call(editor, function (value, meta) {
-              self.value(value).fire('change', { meta: meta });
-            }, self.value(), meta);
-          };
-        } else {
-          fileBrowserCallback = editorSettings.file_browser_callback;
+        if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {
+          fileBrowserCallback = editorSettings.file_picker_callback;
           if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
             actionCallback = function () {
-              fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);
+              var meta = self.fire('beforecall').meta;
+              meta = global$4.extend({ filetype: fileType }, meta);
+              fileBrowserCallback.call(editor, function (value, meta) {
+                self.value(value).fire('change', { meta: meta });
+              }, self.value(), meta);
             };
+          } else {
+            fileBrowserCallback = editorSettings.file_browser_callback;
+            if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
+              actionCallback = function () {
+                fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);
+              };
+            }
           }
         }
+        if (actionCallback) {
+          settings.icon = 'browse';
+          settings.onaction = actionCallback;
+        }
+        self._super(settings);
+        self.classes.add('filepicker');
+        setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);
+        setupLinkValidatorHandler(self, editorSettings, fileType);
       }
-      if (actionCallback) {
-        settings.icon = 'browse';
-        settings.onaction = actionCallback;
-      }
-      self._super(settings);
-      self.classes.add('filepicker');
-      setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);
-      setupLinkValidatorHandler(self, editorSettings, fileType);
-    }
-  });
+    });
 
-  var FitLayout = AbsoluteLayout.extend({
-    recalc: function (container) {
-      var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;
-      container.items().filter(':visible').each(function (ctrl) {
-        ctrl.layoutRect({
-          x: paddingBox.left,
-          y: paddingBox.top,
-          w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
-          h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+    var FitLayout = AbsoluteLayout.extend({
+      recalc: function (container) {
+        var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;
+        container.items().filter(':visible').each(function (ctrl) {
+          ctrl.layoutRect({
+            x: paddingBox.left,
+            y: paddingBox.top,
+            w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
+            h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+          });
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
         });
-        if (ctrl.recalc) {
-          ctrl.recalc();
-        }
-      });
-    }
-  });
+      }
+    });
 
-  var FlexLayout = AbsoluteLayout.extend({
-    recalc: function (container) {
-      var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
-      var ctrl, ctrlLayoutRect, ctrlSettings, flex;
-      var maxSizeItems = [];
-      var size, maxSize, ratio, rect, pos, maxAlignEndPos;
-      var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
-      var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
-      var alignDeltaSizeName, alignContentSizeName;
-      var max = Math.max, min = Math.min;
-      items = container.items().filter(':visible');
-      contLayoutRect = container.layoutRect();
-      contPaddingBox = container.paddingBox;
-      contSettings = container.settings;
-      direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;
-      align = contSettings.align;
-      pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;
-      spacing = contSettings.spacing || 0;
-      if (direction === 'row-reversed' || direction === 'column-reverse') {
-        items = items.set(items.toArray().reverse());
-        direction = direction.split('-')[0];
-      }
-      if (direction === 'column') {
-        posName = 'y';
-        sizeName = 'h';
-        minSizeName = 'minH';
-        maxSizeName = 'maxH';
-        innerSizeName = 'innerH';
-        beforeName = 'top';
-        deltaSizeName = 'deltaH';
-        contentSizeName = 'contentH';
-        alignBeforeName = 'left';
-        alignSizeName = 'w';
-        alignAxisName = 'x';
-        alignInnerSizeName = 'innerW';
-        alignMinSizeName = 'minW';
-        alignAfterName = 'right';
-        alignDeltaSizeName = 'deltaW';
-        alignContentSizeName = 'contentW';
-      } else {
-        posName = 'x';
-        sizeName = 'w';
-        minSizeName = 'minW';
-        maxSizeName = 'maxW';
-        innerSizeName = 'innerW';
-        beforeName = 'left';
-        deltaSizeName = 'deltaW';
-        contentSizeName = 'contentW';
-        alignBeforeName = 'top';
-        alignSizeName = 'h';
-        alignAxisName = 'y';
-        alignInnerSizeName = 'innerH';
-        alignMinSizeName = 'minH';
-        alignAfterName = 'bottom';
-        alignDeltaSizeName = 'deltaH';
-        alignContentSizeName = 'contentH';
-      }
-      availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
-      maxAlignEndPos = totalFlex = 0;
-      for (i = 0, l = items.length; i < l; i++) {
-        ctrl = items[i];
-        ctrlLayoutRect = ctrl.layoutRect();
-        ctrlSettings = ctrl.settings;
-        flex = ctrlSettings.flex;
-        availableSpace -= i < l - 1 ? spacing : 0;
-        if (flex > 0) {
-          totalFlex += flex;
-          if (ctrlLayoutRect[maxSizeName]) {
-            maxSizeItems.push(ctrl);
-          }
-          ctrlLayoutRect.flex = flex;
+    var FlexLayout = AbsoluteLayout.extend({
+      recalc: function (container) {
+        var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
+        var ctrl, ctrlLayoutRect, ctrlSettings, flex;
+        var maxSizeItems = [];
+        var size, maxSize, ratio, rect, pos, maxAlignEndPos;
+        var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
+        var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
+        var alignDeltaSizeName, alignContentSizeName;
+        var max = Math.max, min = Math.min;
+        items = container.items().filter(':visible');
+        contLayoutRect = container.layoutRect();
+        contPaddingBox = container.paddingBox;
+        contSettings = container.settings;
+        direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;
+        align = contSettings.align;
+        pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;
+        spacing = contSettings.spacing || 0;
+        if (direction === 'row-reversed' || direction === 'column-reverse') {
+          items = items.set(items.toArray().reverse());
+          direction = direction.split('-')[0];
         }
-        availableSpace -= ctrlLayoutRect[minSizeName];
-        size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
-        if (size > maxAlignEndPos) {
-          maxAlignEndPos = size;
+        if (direction === 'column') {
+          posName = 'y';
+          sizeName = 'h';
+          minSizeName = 'minH';
+          maxSizeName = 'maxH';
+          innerSizeName = 'innerH';
+          beforeName = 'top';
+          deltaSizeName = 'deltaH';
+          contentSizeName = 'contentH';
+          alignBeforeName = 'left';
+          alignSizeName = 'w';
+          alignAxisName = 'x';
+          alignInnerSizeName = 'innerW';
+          alignMinSizeName = 'minW';
+          alignAfterName = 'right';
+          alignDeltaSizeName = 'deltaW';
+          alignContentSizeName = 'contentW';
+        } else {
+          posName = 'x';
+          sizeName = 'w';
+          minSizeName = 'minW';
+          maxSizeName = 'maxW';
+          innerSizeName = 'innerW';
+          beforeName = 'left';
+          deltaSizeName = 'deltaW';
+          contentSizeName = 'contentW';
+          alignBeforeName = 'top';
+          alignSizeName = 'h';
+          alignAxisName = 'y';
+          alignInnerSizeName = 'innerH';
+          alignMinSizeName = 'minH';
+          alignAfterName = 'bottom';
+          alignDeltaSizeName = 'deltaH';
+          alignContentSizeName = 'contentH';
         }
-      }
-      rect = {};
-      if (availableSpace < 0) {
-        rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
-      } else {
-        rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
-      }
-      rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
-      rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
-      rect[alignContentSizeName] = maxAlignEndPos;
-      rect.minW = min(rect.minW, contLayoutRect.maxW);
-      rect.minH = min(rect.minH, contLayoutRect.maxH);
-      rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
-      rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
-      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
-        rect.w = rect.minW;
-        rect.h = rect.minH;
-        container.layoutRect(rect);
-        this.recalc(container);
-        if (container._lastRect === null) {
-          var parentCtrl = container.parent();
-          if (parentCtrl) {
-            parentCtrl._lastRect = null;
-            parentCtrl.recalc();
+        availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
+        maxAlignEndPos = totalFlex = 0;
+        for (i = 0, l = items.length; i < l; i++) {
+          ctrl = items[i];
+          ctrlLayoutRect = ctrl.layoutRect();
+          ctrlSettings = ctrl.settings;
+          flex = ctrlSettings.flex;
+          availableSpace -= i < l - 1 ? spacing : 0;
+          if (flex > 0) {
+            totalFlex += flex;
+            if (ctrlLayoutRect[maxSizeName]) {
+              maxSizeItems.push(ctrl);
+            }
+            ctrlLayoutRect.flex = flex;
           }
+          availableSpace -= ctrlLayoutRect[minSizeName];
+          size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
+          if (size > maxAlignEndPos) {
+            maxAlignEndPos = size;
+          }
         }
-        return;
-      }
-      ratio = availableSpace / totalFlex;
-      for (i = 0, l = maxSizeItems.length; i < l; i++) {
-        ctrl = maxSizeItems[i];
-        ctrlLayoutRect = ctrl.layoutRect();
-        maxSize = ctrlLayoutRect[maxSizeName];
-        size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
-        if (size > maxSize) {
-          availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];
-          totalFlex -= ctrlLayoutRect.flex;
-          ctrlLayoutRect.flex = 0;
-          ctrlLayoutRect.maxFlexSize = maxSize;
+        rect = {};
+        if (availableSpace < 0) {
+          rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
         } else {
-          ctrlLayoutRect.maxFlexSize = 0;
+          rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
         }
-      }
-      ratio = availableSpace / totalFlex;
-      pos = contPaddingBox[beforeName];
-      rect = {};
-      if (totalFlex === 0) {
-        if (pack === 'end') {
-          pos = availableSpace + contPaddingBox[beforeName];
-        } else if (pack === 'center') {
-          pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];
-          if (pos < 0) {
-            pos = contPaddingBox[beforeName];
+        rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
+        rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
+        rect[alignContentSizeName] = maxAlignEndPos;
+        rect.minW = min(rect.minW, contLayoutRect.maxW);
+        rect.minH = min(rect.minH, contLayoutRect.maxH);
+        rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
+        rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
+        if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
+          rect.w = rect.minW;
+          rect.h = rect.minH;
+          container.layoutRect(rect);
+          this.recalc(container);
+          if (container._lastRect === null) {
+            var parentCtrl = container.parent();
+            if (parentCtrl) {
+              parentCtrl._lastRect = null;
+              parentCtrl.recalc();
+            }
           }
-        } else if (pack === 'justify') {
-          pos = contPaddingBox[beforeName];
-          spacing = Math.floor(availableSpace / (items.length - 1));
+          return;
         }
-      }
-      rect[alignAxisName] = contPaddingBox[alignBeforeName];
-      for (i = 0, l = items.length; i < l; i++) {
-        ctrl = items[i];
-        ctrlLayoutRect = ctrl.layoutRect();
-        size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
-        if (align === 'center') {
-          rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);
-        } else if (align === 'stretch') {
-          rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);
-          rect[alignAxisName] = contPaddingBox[alignBeforeName];
-        } else if (align === 'end') {
-          rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+        ratio = availableSpace / totalFlex;
+        for (i = 0, l = maxSizeItems.length; i < l; i++) {
+          ctrl = maxSizeItems[i];
+          ctrlLayoutRect = ctrl.layoutRect();
+          maxSize = ctrlLayoutRect[maxSizeName];
+          size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
+          if (size > maxSize) {
+            availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];
+            totalFlex -= ctrlLayoutRect.flex;
+            ctrlLayoutRect.flex = 0;
+            ctrlLayoutRect.maxFlexSize = maxSize;
+          } else {
+            ctrlLayoutRect.maxFlexSize = 0;
+          }
         }
-        if (ctrlLayoutRect.flex > 0) {
-          size += ctrlLayoutRect.flex * ratio;
+        ratio = availableSpace / totalFlex;
+        pos = contPaddingBox[beforeName];
+        rect = {};
+        if (totalFlex === 0) {
+          if (pack === 'end') {
+            pos = availableSpace + contPaddingBox[beforeName];
+          } else if (pack === 'center') {
+            pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];
+            if (pos < 0) {
+              pos = contPaddingBox[beforeName];
+            }
+          } else if (pack === 'justify') {
+            pos = contPaddingBox[beforeName];
+            spacing = Math.floor(availableSpace / (items.length - 1));
+          }
         }
-        rect[sizeName] = size;
-        rect[posName] = pos;
-        ctrl.layoutRect(rect);
-        if (ctrl.recalc) {
-          ctrl.recalc();
+        rect[alignAxisName] = contPaddingBox[alignBeforeName];
+        for (i = 0, l = items.length; i < l; i++) {
+          ctrl = items[i];
+          ctrlLayoutRect = ctrl.layoutRect();
+          size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
+          if (align === 'center') {
+            rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);
+          } else if (align === 'stretch') {
+            rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);
+            rect[alignAxisName] = contPaddingBox[alignBeforeName];
+          } else if (align === 'end') {
+            rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+          }
+          if (ctrlLayoutRect.flex > 0) {
+            size += ctrlLayoutRect.flex * ratio;
+          }
+          rect[sizeName] = size;
+          rect[posName] = pos;
+          ctrl.layoutRect(rect);
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
+          pos += size + spacing;
         }
-        pos += size + spacing;
       }
-    }
-  });
+    });
 
-  var FlowLayout = Layout$1.extend({
-    Defaults: {
-      containerClass: 'flow-layout',
-      controlClass: 'flow-layout-item',
-      endClass: 'break'
-    },
-    recalc: function (container) {
-      container.items().filter(':visible').each(function (ctrl) {
-        if (ctrl.recalc) {
-          ctrl.recalc();
-        }
-      });
-    },
-    isNative: function () {
-      return true;
-    }
-  });
-
-  function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {
-    return is(scope, a) ? Option.some(scope) : isFunction$1(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);
-  }
-
-  var first$1 = function (predicate) {
-    return descendant($_d2glpe1amjjgwek8t.body(), predicate);
-  };
-  var ancestor = function (scope, predicate, isRoot) {
-    var element = scope.dom();
-    var stop = isFunction$1(isRoot) ? isRoot : constant(false);
-    while (element.parentNode) {
-      element = element.parentNode;
-      var el = Element$$1.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 = function (scope, predicate) {
-    var element = scope.dom();
-    if (!element.parentNode)
-      return Option.none();
-    return child$1(Element$$1.fromDom(element.parentNode), function (x) {
-      return !$_36s5ie1axjjgweka1.eq(scope, x) && predicate(x);
-    });
-  };
-  var child$1 = function (scope, predicate) {
-    var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));
-    return result.map(Element$$1.fromDom);
-  };
-  var descendant = function (scope, predicate) {
-    var descend = function (node) {
-      for (var i = 0; i < node.childNodes.length; i++) {
-        if (predicate(Element$$1.fromDom(node.childNodes[i])))
-          return Option.some(Element$$1.fromDom(node.childNodes[i]));
-        var res = descend(node.childNodes[i]);
-        if (res.isSome())
-          return res;
+    var FlowLayout = Layout$1.extend({
+      Defaults: {
+        containerClass: 'flow-layout',
+        controlClass: 'flow-layout-item',
+        endClass: 'break'
+      },
+      recalc: function (container) {
+        container.items().filter(':visible').each(function (ctrl) {
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
+        });
+      },
+      isNative: function () {
+        return true;
       }
-      return Option.none();
-    };
-    return descend(scope.dom());
-  };
-  var $_df9cwz1bgjjgwekcd = {
-    first: first$1,
-    ancestor: ancestor,
-    closest: closest,
-    sibling: sibling,
-    child: child$1,
-    descendant: descendant
-  };
-
-  var first$2 = function (selector) {
-    return $_e63uk51bajjgwekbq.one(selector);
-  };
-  var ancestor$1 = function (scope, selector, isRoot) {
-    return $_df9cwz1bgjjgwekcd.ancestor(scope, function (e) {
-      return $_e63uk51bajjgwekbq.is(e, selector);
-    }, isRoot);
-  };
-  var sibling$1 = function (scope, selector) {
-    return $_df9cwz1bgjjgwekcd.sibling(scope, function (e) {
-      return $_e63uk51bajjgwekbq.is(e, selector);
     });
-  };
-  var child$2 = function (scope, selector) {
-    return $_df9cwz1bgjjgwekcd.child(scope, function (e) {
-      return $_e63uk51bajjgwekbq.is(e, selector);
-    });
-  };
-  var descendant$1 = function (scope, selector) {
-    return $_e63uk51bajjgwekbq.one(selector, scope);
-  };
-  var closest$1 = function (scope, selector, isRoot) {
-    return ClosestOrAncestor($_e63uk51bajjgwekbq.is, ancestor$1, scope, selector, isRoot);
-  };
-  var $_6nlstg1bfjjgwekcb = {
-    first: first$2,
-    ancestor: ancestor$1,
-    sibling: sibling$1,
-    child: child$2,
-    descendant: descendant$1,
-    closest: closest$1
-  };
 
-  var toggleFormat = function (editor, fmt) {
-    return function () {
-      editor.execCommand('mceToggleFormat', false, fmt);
+    var descendant$1 = function (scope, selector) {
+      return one(selector, scope);
     };
-  };
-  var addFormatChangedListener = function (editor, name, changed) {
-    var handler = function (state) {
-      changed(state, name);
+
+    var toggleFormat = function (editor, fmt) {
+      return function () {
+        editor.execCommand('mceToggleFormat', false, fmt);
+      };
     };
-    if (editor.formatter) {
-      editor.formatter.formatChanged(name, handler);
-    } else {
-      editor.on('init', function () {
+    var addFormatChangedListener = function (editor, name, changed) {
+      var handler = function (state) {
+        changed(state, name);
+      };
+      if (editor.formatter) {
         editor.formatter.formatChanged(name, handler);
-      });
-    }
-  };
-  var postRenderFormatToggle = function (editor, name) {
-    return function (e) {
-      addFormatChangedListener(editor, name, function (state) {
-        e.control.active(state);
-      });
+      } else {
+        editor.on('init', function () {
+          editor.formatter.formatChanged(name, handler);
+        });
+      }
     };
-  };
+    var postRenderFormatToggle = function (editor, name) {
+      return function (e) {
+        addFormatChangedListener(editor, name, function (state) {
+          e.control.active(state);
+        });
+      };
+    };
 
-  var register = function (editor) {
-    var alignFormats = [
-      'alignleft',
-      'aligncenter',
-      'alignright',
-      'alignjustify'
-    ];
-    var defaultAlign = 'alignleft';
-    var alignMenuItems = [
-      {
-        text: 'Left',
-        icon: 'alignleft',
-        onclick: toggleFormat(editor, 'alignleft')
-      },
-      {
-        text: 'Center',
-        icon: 'aligncenter',
-        onclick: toggleFormat(editor, 'aligncenter')
-      },
-      {
-        text: 'Right',
-        icon: 'alignright',
-        onclick: toggleFormat(editor, 'alignright')
-      },
-      {
-        text: 'Justify',
-        icon: 'alignjustify',
-        onclick: toggleFormat(editor, 'alignjustify')
-      }
-    ];
-    editor.addMenuItem('align', {
-      text: 'Align',
-      menu: alignMenuItems
-    });
-    editor.addButton('align', {
-      type: 'menubutton',
-      icon: defaultAlign,
-      menu: alignMenuItems,
-      onShowMenu: function (e) {
-        var menu = e.control.menu;
-        global$4.each(alignFormats, function (formatName, idx) {
-          menu.items().eq(idx).each(function (item) {
-            return item.active(editor.formatter.match(formatName));
+    var register = function (editor) {
+      var alignFormats = [
+        'alignleft',
+        'aligncenter',
+        'alignright',
+        'alignjustify'
+      ];
+      var defaultAlign = 'alignleft';
+      var alignMenuItems = [
+        {
+          text: 'Left',
+          icon: 'alignleft',
+          onclick: toggleFormat(editor, 'alignleft')
+        },
+        {
+          text: 'Center',
+          icon: 'aligncenter',
+          onclick: toggleFormat(editor, 'aligncenter')
+        },
+        {
+          text: 'Right',
+          icon: 'alignright',
+          onclick: toggleFormat(editor, 'alignright')
+        },
+        {
+          text: 'Justify',
+          icon: 'alignjustify',
+          onclick: toggleFormat(editor, 'alignjustify')
+        }
+      ];
+      editor.addMenuItem('align', {
+        text: 'Align',
+        menu: alignMenuItems
+      });
+      editor.addButton('align', {
+        type: 'menubutton',
+        icon: defaultAlign,
+        menu: alignMenuItems,
+        onShowMenu: function (e) {
+          var menu = e.control.menu;
+          global$4.each(alignFormats, function (formatName, idx) {
+            menu.items().eq(idx).each(function (item) {
+              return item.active(editor.formatter.match(formatName));
+            });
           });
-        });
-      },
-      onPostRender: function (e) {
-        var ctrl = e.control;
-        global$4.each(alignFormats, function (formatName, idx) {
-          addFormatChangedListener(editor, formatName, function (state) {
-            ctrl.icon(defaultAlign);
-            if (state) {
-              ctrl.icon(formatName);
-            }
+        },
+        onPostRender: function (e) {
+          var ctrl = e.control;
+          global$4.each(alignFormats, function (formatName, idx) {
+            addFormatChangedListener(editor, formatName, function (state) {
+              ctrl.icon(defaultAlign);
+              if (state) {
+                ctrl.icon(formatName);
+              }
+            });
           });
+        }
+      });
+      global$4.each({
+        alignleft: [
+          'Align left',
+          'JustifyLeft'
+        ],
+        aligncenter: [
+          'Align center',
+          'JustifyCenter'
+        ],
+        alignright: [
+          'Align right',
+          'JustifyRight'
+        ],
+        alignjustify: [
+          'Justify',
+          'JustifyFull'
+        ],
+        alignnone: [
+          'No alignment',
+          'JustifyNone'
+        ]
+      }, function (item, name) {
+        editor.addButton(name, {
+          active: false,
+          tooltip: item[0],
+          cmd: item[1],
+          onPostRender: postRenderFormatToggle(editor, name)
         });
-      }
-    });
-    global$4.each({
-      alignleft: [
-        'Align left',
-        'JustifyLeft'
-      ],
-      aligncenter: [
-        'Align center',
-        'JustifyCenter'
-      ],
-      alignright: [
-        'Align right',
-        'JustifyRight'
-      ],
-      alignjustify: [
-        'Justify',
-        'JustifyFull'
-      ],
-      alignnone: [
-        'No alignment',
-        'JustifyNone'
-      ]
-    }, function (item, name) {
-      editor.addButton(name, {
-        active: false,
-        tooltip: item[0],
-        cmd: item[1],
-        onPostRender: postRenderFormatToggle(editor, name)
       });
-    });
-  };
-  var $_7uh4c31bijjgwekcw = { register: register };
+    };
+    var Align = { register: register };
 
-  var getFirstFont = function (fontFamily) {
-    return fontFamily ? fontFamily.split(',')[0] : '';
-  };
-  var findMatchingValue = function (items, fontFamily) {
-    var font = fontFamily ? fontFamily.toLowerCase() : '';
-    var value;
-    global$4.each(items, function (item) {
-      if (item.value.toLowerCase() === font) {
-        value = item.value;
-      }
-    });
-    global$4.each(items, function (item) {
-      if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {
-        value = item.value;
-      }
-    });
-    return value;
-  };
-  var createFontNameListBoxChangeHandler = function (editor, items) {
-    return function () {
-      var self = this;
-      self.state.set('value', null);
-      editor.on('init nodeChange', function (e) {
-        var fontFamily = editor.queryCommandValue('FontName');
-        var match = findMatchingValue(items, fontFamily);
-        self.value(match ? match : null);
-        if (!match && fontFamily) {
-          self.text(getFirstFont(fontFamily));
+    var getFirstFont = function (fontFamily) {
+      return fontFamily ? fontFamily.split(',')[0] : '';
+    };
+    var findMatchingValue = function (items, fontFamily) {
+      var font = fontFamily ? fontFamily.toLowerCase() : '';
+      var value;
+      global$4.each(items, function (item) {
+        if (item.value.toLowerCase() === font) {
+          value = item.value;
         }
       });
+      global$4.each(items, function (item) {
+        if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {
+          value = item.value;
+        }
+      });
+      return value;
     };
-  };
-  var createFormats = function (formats) {
-    formats = formats.replace(/;$/, '').split(';');
-    var i = formats.length;
-    while (i--) {
-      formats[i] = formats[i].split('=');
-    }
-    return formats;
-  };
-  var getFontItems = function (editor) {
-    var defaultFontsFormats = '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';
-    var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
-    return global$4.map(fonts, function (font) {
-      return {
-        text: { raw: font[0] },
-        value: font[1],
-        textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''
-      };
-    });
-  };
-  var registerButtons = function (editor) {
-    editor.addButton('fontselect', function () {
-      var items = getFontItems(editor);
-      return {
-        type: 'listbox',
-        text: 'Font Family',
-        tooltip: 'Font Family',
-        values: items,
-        fixedWidth: true,
-        onPostRender: createFontNameListBoxChangeHandler(editor, items),
-        onselect: function (e) {
-          if (e.control.settings.value) {
-            editor.execCommand('FontName', false, e.control.settings.value);
+    var createFontNameListBoxChangeHandler = function (editor, items) {
+      return function () {
+        var self = this;
+        self.state.set('value', null);
+        editor.on('init nodeChange', function (e) {
+          var fontFamily = editor.queryCommandValue('FontName');
+          var match = findMatchingValue(items, fontFamily);
+          self.value(match ? match : null);
+          if (!match && fontFamily) {
+            self.text(getFirstFont(fontFamily));
           }
-        }
+        });
       };
-    });
-  };
-  var register$1 = function (editor) {
-    registerButtons(editor);
-  };
-  var $_2g5ce1bkjjgwekcz = { register: register$1 };
-
-  var round = function (number, precision) {
-    var factor = Math.pow(10, precision);
-    return Math.round(number * factor) / factor;
-  };
-  var toPt = function (fontSize, precision) {
-    if (/[0-9.]+px$/.test(fontSize)) {
-      return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';
-    }
-    return fontSize;
-  };
-  var findMatchingValue$1 = function (items, pt, px) {
-    var value;
-    global$4.each(items, function (item) {
-      if (item.value === px) {
-        value = px;
-      } else if (item.value === pt) {
-        value = pt;
+    };
+    var createFormats = function (formats) {
+      formats = formats.replace(/;$/, '').split(';');
+      var i = formats.length;
+      while (i--) {
+        formats[i] = formats[i].split('=');
       }
-    });
-    return value;
-  };
-  var createFontSizeListBoxChangeHandler = function (editor, items) {
-    return function () {
-      var self = this;
-      editor.on('init nodeChange', function (e) {
-        var px, pt, precision, match;
-        px = editor.queryCommandValue('FontSize');
-        if (px) {
-          for (precision = 3; !match && precision >= 0; precision--) {
-            pt = toPt(px, precision);
-            match = findMatchingValue$1(items, pt, px);
+      return formats;
+    };
+    var getFontItems = function (editor) {
+      var defaultFontsFormats = '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';
+      var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
+      return global$4.map(fonts, function (font) {
+        return {
+          text: { raw: font[0] },
+          value: font[1],
+          textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''
+        };
+      });
+    };
+    var registerButtons = function (editor) {
+      editor.addButton('fontselect', function () {
+        var items = getFontItems(editor);
+        return {
+          type: 'listbox',
+          text: 'Font Family',
+          tooltip: 'Font Family',
+          values: items,
+          fixedWidth: true,
+          onPostRender: createFontNameListBoxChangeHandler(editor, items),
+          onselect: function (e) {
+            if (e.control.settings.value) {
+              editor.execCommand('FontName', false, e.control.settings.value);
+            }
           }
-        }
-        self.value(match ? match : null);
-        if (!match) {
-          self.text(pt);
-        }
+        };
       });
     };
-  };
-  var getFontSizeItems = function (editor) {
-    var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
-    var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;
-    return global$4.map(fontsizeFormats.split(' '), function (item) {
-      var text = item, value = item;
-      var values = item.split('=');
-      if (values.length > 1) {
-        text = values[0];
-        value = values[1];
+    var register$1 = function (editor) {
+      registerButtons(editor);
+    };
+    var FontSelect = { register: register$1 };
+
+    var round = function (number, precision) {
+      var factor = Math.pow(10, precision);
+      return Math.round(number * factor) / factor;
+    };
+    var toPt = function (fontSize, precision) {
+      if (/[0-9.]+px$/.test(fontSize)) {
+        return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';
       }
-      return {
-        text: text,
-        value: value
-      };
-    });
-  };
-  var registerButtons$1 = function (editor) {
-    editor.addButton('fontsizeselect', function () {
-      var items = getFontSizeItems(editor);
-      return {
-        type: 'listbox',
-        text: 'Font Sizes',
-        tooltip: 'Font Sizes',
-        values: items,
-        fixedWidth: true,
-        onPostRender: createFontSizeListBoxChangeHandler(editor, items),
-        onclick: function (e) {
-          if (e.control.settings.value) {
-            editor.execCommand('FontSize', false, e.control.settings.value);
-          }
+      return fontSize;
+    };
+    var findMatchingValue$1 = function (items, pt, px) {
+      var value;
+      global$4.each(items, function (item) {
+        if (item.value === px) {
+          value = px;
+        } else if (item.value === pt) {
+          value = pt;
         }
-      };
-    });
-  };
-  var register$2 = function (editor) {
-    registerButtons$1(editor);
-  };
-  var $_b15nsk1bljjgwekd9 = { register: register$2 };
-
-  var hideMenuObjects = function (editor, menu) {
-    var count = menu.length;
-    global$4.each(menu, function (item) {
-      if (item.menu) {
-        item.hidden = hideMenuObjects(editor, item.menu) === 0;
-      }
-      var formatName = item.format;
-      if (formatName) {
-        item.hidden = !editor.formatter.canApply(formatName);
-      }
-      if (item.hidden) {
-        count--;
-      }
-    });
-    return count;
-  };
-  var hideFormatMenuItems = function (editor, menu) {
-    var count = menu.items().length;
-    menu.items().each(function (item) {
-      if (item.menu) {
-        item.visible(hideFormatMenuItems(editor, item.menu) > 0);
-      }
-      if (!item.menu && item.settings.menu) {
-        item.visible(hideMenuObjects(editor, item.settings.menu) > 0);
-      }
-      var formatName = item.settings.format;
-      if (formatName) {
-        item.visible(editor.formatter.canApply(formatName));
-      }
-      if (!item.visible()) {
-        count--;
-      }
-    });
-    return count;
-  };
-  var createFormatMenu = function (editor) {
-    var count = 0;
-    var newFormats = [];
-    var defaultStyleFormats = [
-      {
-        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'
+      });
+      return value;
+    };
+    var createFontSizeListBoxChangeHandler = function (editor, items) {
+      return function () {
+        var self = this;
+        editor.on('init nodeChange', function (e) {
+          var px, pt, precision, match;
+          px = editor.queryCommandValue('FontSize');
+          if (px) {
+            for (precision = 3; !match && precision >= 0; precision--) {
+              pt = toPt(px, precision);
+              match = findMatchingValue$1(items, pt, px);
+            }
           }
-        ]
-      },
-      {
-        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'
+          self.value(match ? match : null);
+          if (!match) {
+            self.text(pt);
           }
-        ]
-      },
-      {
-        title: 'Blocks',
-        items: [
-          {
-            title: 'Paragraph',
-            format: 'p'
-          },
-          {
-            title: 'Blockquote',
-            format: 'blockquote'
-          },
-          {
-            title: 'Div',
-            format: 'div'
-          },
-          {
-            title: 'Pre',
-            format: 'pre'
+        });
+      };
+    };
+    var getFontSizeItems = function (editor) {
+      var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
+      var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;
+      return global$4.map(fontsizeFormats.split(' '), function (item) {
+        var text = item, value = item;
+        var values = item.split('=');
+        if (values.length > 1) {
+          text = values[0];
+          value = values[1];
+        }
+        return {
+          text: text,
+          value: value
+        };
+      });
+    };
+    var registerButtons$1 = function (editor) {
+      editor.addButton('fontsizeselect', function () {
+        var items = getFontSizeItems(editor);
+        return {
+          type: 'listbox',
+          text: 'Font Sizes',
+          tooltip: 'Font Sizes',
+          values: items,
+          fixedWidth: true,
+          onPostRender: createFontSizeListBoxChangeHandler(editor, items),
+          onclick: function (e) {
+            if (e.control.settings.value) {
+              editor.execCommand('FontSize', false, e.control.settings.value);
+            }
           }
-        ]
-      },
-      {
-        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'
-          }
-        ]
-      }
-    ];
-    var createMenu = function (formats) {
-      var menu = [];
-      if (!formats) {
-        return;
-      }
-      global$4.each(formats, function (format) {
-        var menuItem = {
-          text: format.title,
-          icon: format.icon
         };
-        if (format.items) {
-          menuItem.menu = createMenu(format.items);
-        } else {
-          var formatName = format.format || 'custom' + count++;
-          if (!format.format) {
-            format.name = formatName;
-            newFormats.push(format);
-          }
-          menuItem.format = formatName;
-          menuItem.cmd = format.cmd;
+      });
+    };
+    var register$2 = function (editor) {
+      registerButtons$1(editor);
+    };
+    var FontSizeSelect = { register: register$2 };
+
+    var hideMenuObjects = function (editor, menu) {
+      var count = menu.length;
+      global$4.each(menu, function (item) {
+        if (item.menu) {
+          item.hidden = hideMenuObjects(editor, item.menu) === 0;
         }
-        menu.push(menuItem);
+        var formatName = item.format;
+        if (formatName) {
+          item.hidden = !editor.formatter.canApply(formatName);
+        }
+        if (item.hidden) {
+          count--;
+        }
       });
-      return menu;
+      return count;
     };
-    var createStylesMenu = function () {
-      var menu;
-      if (editor.settings.style_formats_merge) {
-        if (editor.settings.style_formats) {
-          menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
-        } else {
-          menu = createMenu(defaultStyleFormats);
+    var hideFormatMenuItems = function (editor, menu) {
+      var count = menu.items().length;
+      menu.items().each(function (item) {
+        if (item.menu) {
+          item.visible(hideFormatMenuItems(editor, item.menu) > 0);
         }
-      } else {
-        menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
-      }
-      return menu;
+        if (!item.menu && item.settings.menu) {
+          item.visible(hideMenuObjects(editor, item.settings.menu) > 0);
+        }
+        var formatName = item.settings.format;
+        if (formatName) {
+          item.visible(editor.formatter.canApply(formatName));
+        }
+        if (!item.visible()) {
+          count--;
+        }
+      });
+      return count;
     };
-    editor.on('init', function () {
-      global$4.each(newFormats, function (format) {
-        editor.formatter.register(format.name, format);
-      });
-    });
-    return {
-      type: 'menu',
-      items: createStylesMenu(),
-      onPostRender: function (e) {
-        editor.fire('renderFormatsMenu', { control: e.control });
-      },
-      itemDefaults: {
-        preview: true,
-        textStyle: function () {
-          if (this.settings.format) {
-            return editor.formatter.getCssText(this.settings.format);
-          }
+    var createFormatMenu = function (editor) {
+      var count = 0;
+      var newFormats = [];
+      var defaultStyleFormats = [
+        {
+          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'
+            }
+          ]
         },
-        onPostRender: function () {
-          var self = this;
-          self.parent().on('show', function () {
-            var formatName, command;
-            formatName = self.settings.format;
-            if (formatName) {
-              self.disabled(!editor.formatter.canApply(formatName));
-              self.active(editor.formatter.match(formatName));
+        {
+          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'
             }
-            command = self.settings.cmd;
-            if (command) {
-              self.active(editor.queryCommandState(command));
+          ]
+        },
+        {
+          title: 'Blocks',
+          items: [
+            {
+              title: 'Paragraph',
+              format: 'p'
+            },
+            {
+              title: 'Blockquote',
+              format: 'blockquote'
+            },
+            {
+              title: 'Div',
+              format: 'div'
+            },
+            {
+              title: 'Pre',
+              format: 'pre'
             }
-          });
+          ]
         },
-        onclick: function () {
-          if (this.settings.format) {
-            toggleFormat(editor, this.settings.format)();
+        {
+          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'
+            }
+          ]
+        }
+      ];
+      var createMenu = function (formats) {
+        var menu = [];
+        if (!formats) {
+          return;
+        }
+        global$4.each(formats, function (format) {
+          var menuItem = {
+            text: format.title,
+            icon: format.icon
+          };
+          if (format.items) {
+            menuItem.menu = createMenu(format.items);
+          } else {
+            var formatName = format.format || 'custom' + count++;
+            if (!format.format) {
+              format.name = formatName;
+              newFormats.push(format);
+            }
+            menuItem.format = formatName;
+            menuItem.cmd = format.cmd;
           }
-          if (this.settings.cmd) {
-            editor.execCommand(this.settings.cmd);
+          menu.push(menuItem);
+        });
+        return menu;
+      };
+      var createStylesMenu = function () {
+        var menu;
+        if (editor.settings.style_formats_merge) {
+          if (editor.settings.style_formats) {
+            menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
+          } else {
+            menu = createMenu(defaultStyleFormats);
           }
+        } else {
+          menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
         }
-      }
+        return menu;
+      };
+      editor.on('init', function () {
+        global$4.each(newFormats, function (format) {
+          editor.formatter.register(format.name, format);
+        });
+      });
+      return {
+        type: 'menu',
+        items: createStylesMenu(),
+        onPostRender: function (e) {
+          editor.fire('renderFormatsMenu', { control: e.control });
+        },
+        itemDefaults: {
+          preview: true,
+          textStyle: function () {
+            if (this.settings.format) {
+              return editor.formatter.getCssText(this.settings.format);
+            }
+          },
+          onPostRender: function () {
+            var self = this;
+            self.parent().on('show', function () {
+              var formatName, command;
+              formatName = self.settings.format;
+              if (formatName) {
+                self.disabled(!editor.formatter.canApply(formatName));
+                self.active(editor.formatter.match(formatName));
+              }
+              command = self.settings.cmd;
+              if (command) {
+                self.active(editor.queryCommandState(command));
+              }
+            });
+          },
+          onclick: function () {
+            if (this.settings.format) {
+              toggleFormat(editor, this.settings.format)();
+            }
+            if (this.settings.cmd) {
+              editor.execCommand(this.settings.cmd);
+            }
+          }
+        }
+      };
     };
-  };
-  var registerMenuItems = function (editor, formatMenu) {
-    editor.addMenuItem('formats', {
-      text: 'Formats',
-      menu: formatMenu
-    });
-  };
-  var registerButtons$2 = function (editor, formatMenu) {
-    editor.addButton('styleselect', {
-      type: 'menubutton',
-      text: 'Formats',
-      menu: formatMenu,
-      onShowMenu: function () {
-        if (editor.settings.style_formats_autohide) {
-          hideFormatMenuItems(editor, this.menu);
+    var registerMenuItems = function (editor, formatMenu) {
+      editor.addMenuItem('formats', {
+        text: 'Formats',
+        menu: formatMenu
+      });
+    };
+    var registerButtons$2 = function (editor, formatMenu) {
+      editor.addButton('styleselect', {
+        type: 'menubutton',
+        text: 'Formats',
+        menu: formatMenu,
+        onShowMenu: function () {
+          if (editor.settings.style_formats_autohide) {
+            hideFormatMenuItems(editor, this.menu);
+          }
         }
+      });
+    };
+    var register$3 = function (editor) {
+      var formatMenu = createFormatMenu(editor);
+      registerMenuItems(editor, formatMenu);
+      registerButtons$2(editor, formatMenu);
+    };
+    var Formats = { register: register$3 };
+
+    var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';
+    var createFormats$1 = function (formats) {
+      formats = formats.replace(/;$/, '').split(';');
+      var i = formats.length;
+      while (i--) {
+        formats[i] = formats[i].split('=');
       }
-    });
-  };
-  var register$3 = function (editor) {
-    var formatMenu = createFormatMenu(editor);
-    registerMenuItems(editor, formatMenu);
-    registerButtons$2(editor, formatMenu);
-  };
-  var $_9qaa1r1bmjjgwekdc = { register: register$3 };
-
-  var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';
-  var createFormats$1 = function (formats) {
-    formats = formats.replace(/;$/, '').split(';');
-    var i = formats.length;
-    while (i--) {
-      formats[i] = formats[i].split('=');
-    }
-    return formats;
-  };
-  var createListBoxChangeHandler = function (editor, items, formatName) {
-    return function () {
-      var self = this;
-      editor.on('nodeChange', function (e) {
-        var formatter = editor.formatter;
-        var value = null;
-        global$4.each(e.parents, function (node) {
-          global$4.each(items, function (item) {
-            if (formatName) {
-              if (formatter.matchNode(node, formatName, { value: item.value })) {
-                value = item.value;
+      return formats;
+    };
+    var createListBoxChangeHandler = function (editor, items, formatName) {
+      return function () {
+        var self = this;
+        editor.on('nodeChange', function (e) {
+          var formatter = editor.formatter;
+          var value = null;
+          global$4.each(e.parents, function (node) {
+            global$4.each(items, function (item) {
+              if (formatName) {
+                if (formatter.matchNode(node, formatName, { value: item.value })) {
+                  value = item.value;
+                }
+              } else {
+                if (formatter.matchNode(node, item.value)) {
+                  value = item.value;
+                }
               }
-            } else {
-              if (formatter.matchNode(node, item.value)) {
-                value = item.value;
+              if (value) {
+                return false;
               }
-            }
+            });
             if (value) {
               return false;
             }
           });
-          if (value) {
-            return false;
-          }
+          self.value(value);
         });
-        self.value(value);
-      });
+      };
     };
-  };
-  var lazyFormatSelectBoxItems = function (editor, blocks) {
-    return function () {
-      var items = [];
-      global$4.each(blocks, function (block) {
-        items.push({
+    var lazyFormatSelectBoxItems = function (editor, blocks) {
+      return function () {
+        var items = [];
+        global$4.each(blocks, function (block) {
+          items.push({
+            text: block[0],
+            value: block[1],
+            textStyle: function () {
+              return editor.formatter.getCssText(block[1]);
+            }
+          });
+        });
+        return {
+          type: 'listbox',
+          text: blocks[0][0],
+          values: items,
+          fixedWidth: true,
+          onselect: function (e) {
+            if (e.control) {
+              var fmt = e.control.value();
+              toggleFormat(editor, fmt)();
+            }
+          },
+          onPostRender: createListBoxChangeHandler(editor, items)
+        };
+      };
+    };
+    var buildMenuItems = function (editor, blocks) {
+      return global$4.map(blocks, function (block) {
+        return {
           text: block[0],
-          value: block[1],
+          onclick: toggleFormat(editor, block[1]),
           textStyle: function () {
             return editor.formatter.getCssText(block[1]);
           }
-        });
+        };
       });
-      return {
-        type: 'listbox',
-        text: blocks[0][0],
-        values: items,
-        fixedWidth: true,
-        onselect: function (e) {
-          if (e.control) {
-            var fmt = e.control.value();
-            toggleFormat(editor, fmt)();
-          }
-        },
-        onPostRender: createListBoxChangeHandler(editor, items)
-      };
     };
-  };
-  var buildMenuItems = function (editor, blocks) {
-    return global$4.map(blocks, function (block) {
-      return {
-        text: block[0],
-        onclick: toggleFormat(editor, block[1]),
-        textStyle: function () {
-          return editor.formatter.getCssText(block[1]);
-        }
-      };
-    });
-  };
-  var register$4 = function (editor) {
-    var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);
-    editor.addMenuItem('blockformats', {
-      text: 'Blocks',
-      menu: buildMenuItems(editor, blocks)
-    });
-    editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));
-  };
-  var $_a3xw9u1bnjjgwekdh = { register: register$4 };
+    var register$4 = function (editor) {
+      var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);
+      editor.addMenuItem('blockformats', {
+        text: 'Blocks',
+        menu: buildMenuItems(editor, blocks)
+      });
+      editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));
+    };
+    var FormatSelect = { register: register$4 };
 
-  var createCustomMenuItems = function (editor, names) {
-    var items, nameList;
-    if (typeof names === 'string') {
-      nameList = names.split(' ');
-    } else if (global$4.isArray(names)) {
-      return flatten$1(global$4.map(names, function (names) {
-        return createCustomMenuItems(editor, names);
-      }));
-    }
-    items = global$4.grep(nameList, function (name) {
-      return name === '|' || name in editor.menuItems;
-    });
-    return global$4.map(items, function (name) {
-      return name === '|' ? { text: '-' } : editor.menuItems[name];
-    });
-  };
-  var isSeparator = function (menuItem) {
-    return menuItem && menuItem.text === '-';
-  };
-  var trimMenuItems = function (menuItems) {
-    var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {
-      return !isSeparator(menuItem) || !isSeparator(menuItems[i - 1]);
-    });
-    return filter(menuItems2, function (menuItem, i, menuItems) {
-      return !isSeparator(menuItem) || i > 0 && i < menuItems.length - 1;
-    });
-  };
-  var createContextMenuItems = function (editor, context) {
-    var outputMenuItems = [{ text: '-' }];
-    var menuItems = global$4.grep(editor.menuItems, function (menuItem) {
-      return menuItem.context === context;
-    });
-    global$4.each(menuItems, function (menuItem) {
-      if (menuItem.separator === 'before') {
-        outputMenuItems.push({ text: '|' });
+    var createCustomMenuItems = function (editor, names) {
+      var items, nameList;
+      if (typeof names === 'string') {
+        nameList = names.split(' ');
+      } else if (global$4.isArray(names)) {
+        return flatten$1(global$4.map(names, function (names) {
+          return createCustomMenuItems(editor, names);
+        }));
       }
-      if (menuItem.prependToContext) {
-        outputMenuItems.unshift(menuItem);
+      items = global$4.grep(nameList, function (name) {
+        return name === '|' || name in editor.menuItems;
+      });
+      return global$4.map(items, function (name) {
+        return name === '|' ? { text: '-' } : editor.menuItems[name];
+      });
+    };
+    var isSeparator = function (menuItem) {
+      return menuItem && menuItem.text === '-';
+    };
+    var trimMenuItems = function (menuItems) {
+      var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {
+        return !isSeparator(menuItem) || !isSeparator(menuItems[i - 1]);
+      });
+      return filter(menuItems2, function (menuItem, i, menuItems) {
+        return !isSeparator(menuItem) || i > 0 && i < menuItems.length - 1;
+      });
+    };
+    var createContextMenuItems = function (editor, context) {
+      var outputMenuItems = [{ text: '-' }];
+      var menuItems = global$4.grep(editor.menuItems, function (menuItem) {
+        return menuItem.context === context;
+      });
+      global$4.each(menuItems, function (menuItem) {
+        if (menuItem.separator === 'before') {
+          outputMenuItems.push({ text: '|' });
+        }
+        if (menuItem.prependToContext) {
+          outputMenuItems.unshift(menuItem);
+        } else {
+          outputMenuItems.push(menuItem);
+        }
+        if (menuItem.separator === 'after') {
+          outputMenuItems.push({ text: '|' });
+        }
+      });
+      return outputMenuItems;
+    };
+    var createInsertMenu = function (editor) {
+      var insertButtonItems = editor.settings.insert_button_items;
+      if (insertButtonItems) {
+        return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));
       } else {
-        outputMenuItems.push(menuItem);
+        return trimMenuItems(createContextMenuItems(editor, 'insert'));
       }
-      if (menuItem.separator === 'after') {
-        outputMenuItems.push({ text: '|' });
-      }
-    });
-    return outputMenuItems;
-  };
-  var createInsertMenu = function (editor) {
-    var insertButtonItems = editor.settings.insert_button_items;
-    if (insertButtonItems) {
-      return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));
-    } else {
-      return trimMenuItems(createContextMenuItems(editor, 'insert'));
-    }
-  };
-  var registerButtons$3 = function (editor) {
-    editor.addButton('insert', {
-      type: 'menubutton',
-      icon: 'insert',
-      menu: [],
-      oncreatemenu: function () {
-        this.menu.add(createInsertMenu(editor));
-        this.menu.renderNew();
-      }
-    });
-  };
-  var register$5 = function (editor) {
-    registerButtons$3(editor);
-  };
-  var $_dvqvtt1bojjgwekdj = { register: register$5 };
+    };
+    var registerButtons$3 = function (editor) {
+      editor.addButton('insert', {
+        type: 'menubutton',
+        icon: 'insert',
+        menu: [],
+        oncreatemenu: function () {
+          this.menu.add(createInsertMenu(editor));
+          this.menu.renderNew();
+        }
+      });
+    };
+    var register$5 = function (editor) {
+      registerButtons$3(editor);
+    };
+    var InsertButton = { register: register$5 };
 
-  var registerFormatButtons = function (editor) {
-    global$4.each({
-      bold: 'Bold',
-      italic: 'Italic',
-      underline: 'Underline',
-      strikethrough: 'Strikethrough',
-      subscript: 'Subscript',
-      superscript: 'Superscript'
-    }, function (text, name) {
-      editor.addButton(name, {
-        active: false,
-        tooltip: text,
-        onPostRender: postRenderFormatToggle(editor, name),
-        onclick: toggleFormat(editor, name)
+    var registerFormatButtons = function (editor) {
+      global$4.each({
+        bold: 'Bold',
+        italic: 'Italic',
+        underline: 'Underline',
+        strikethrough: 'Strikethrough',
+        subscript: 'Subscript',
+        superscript: 'Superscript'
+      }, function (text, name) {
+        editor.addButton(name, {
+          active: false,
+          tooltip: text,
+          onPostRender: postRenderFormatToggle(editor, name),
+          onclick: toggleFormat(editor, name)
+        });
       });
-    });
-  };
-  var registerCommandButtons = function (editor) {
-    global$4.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 (item, name) {
-      editor.addButton(name, {
-        tooltip: item[0],
-        cmd: item[1]
+    };
+    var registerCommandButtons = function (editor) {
+      global$4.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 (item, name) {
+        editor.addButton(name, {
+          tooltip: item[0],
+          cmd: item[1]
+        });
       });
-    });
-  };
-  var registerCommandToggleButtons = function (editor) {
-    global$4.each({
-      blockquote: [
-        'Blockquote',
-        'mceBlockQuote'
-      ],
-      subscript: [
-        'Subscript',
-        'Subscript'
-      ],
-      superscript: [
-        'Superscript',
-        'Superscript'
-      ]
-    }, function (item, name) {
-      editor.addButton(name, {
-        active: false,
-        tooltip: item[0],
-        cmd: item[1],
-        onPostRender: postRenderFormatToggle(editor, name)
+    };
+    var registerCommandToggleButtons = function (editor) {
+      global$4.each({
+        blockquote: [
+          'Blockquote',
+          'mceBlockQuote'
+        ],
+        subscript: [
+          'Subscript',
+          'Subscript'
+        ],
+        superscript: [
+          'Superscript',
+          'Superscript'
+        ]
+      }, function (item, name) {
+        editor.addButton(name, {
+          active: false,
+          tooltip: item[0],
+          cmd: item[1],
+          onPostRender: postRenderFormatToggle(editor, name)
+        });
       });
-    });
-  };
-  var registerButtons$4 = function (editor) {
-    registerFormatButtons(editor);
-    registerCommandButtons(editor);
-    registerCommandToggleButtons(editor);
-  };
-  var registerMenuItems$1 = function (editor) {
-    global$4.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 (item, name) {
-      editor.addMenuItem(name, {
-        text: item[0],
-        icon: name,
-        shortcut: item[2],
-        cmd: item[1]
+    };
+    var registerButtons$4 = function (editor) {
+      registerFormatButtons(editor);
+      registerCommandButtons(editor);
+      registerCommandToggleButtons(editor);
+    };
+    var registerMenuItems$1 = function (editor) {
+      global$4.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 (item, name) {
+        editor.addMenuItem(name, {
+          text: item[0],
+          icon: name,
+          shortcut: item[2],
+          cmd: item[1]
+        });
       });
-    });
-    editor.addMenuItem('codeformat', {
-      text: 'Code',
-      icon: 'code',
-      onclick: toggleFormat(editor, 'code')
-    });
-  };
-  var register$6 = function (editor) {
-    registerButtons$4(editor);
-    registerMenuItems$1(editor);
-  };
-  var $_2ywvy11bpjjgwekdn = { register: register$6 };
+      editor.addMenuItem('codeformat', {
+        text: 'Code',
+        icon: 'code',
+        onclick: toggleFormat(editor, 'code')
+      });
+    };
+    var register$6 = function (editor) {
+      registerButtons$4(editor);
+      registerMenuItems$1(editor);
+    };
+    var SimpleControls = { register: register$6 };
 
-  var toggleUndoRedoState = function (editor, type) {
-    return function () {
-      var self = this;
-      var checkState = function () {
-        var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';
-        return editor.undoManager ? editor.undoManager[typeFn]() : false;
+    var toggleUndoRedoState = function (editor, type) {
+      return function () {
+        var self = this;
+        var checkState = function () {
+          var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';
+          return editor.undoManager ? editor.undoManager[typeFn]() : false;
+        };
+        self.disabled(!checkState());
+        editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {
+          self.disabled(editor.readonly || !checkState());
+        });
       };
-      self.disabled(!checkState());
-      editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {
-        self.disabled(editor.readonly || !checkState());
+    };
+    var registerMenuItems$2 = function (editor) {
+      editor.addMenuItem('undo', {
+        text: 'Undo',
+        icon: 'undo',
+        shortcut: 'Meta+Z',
+        onPostRender: toggleUndoRedoState(editor, 'undo'),
+        cmd: 'undo'
       });
+      editor.addMenuItem('redo', {
+        text: 'Redo',
+        icon: 'redo',
+        shortcut: 'Meta+Y',
+        onPostRender: toggleUndoRedoState(editor, 'redo'),
+        cmd: 'redo'
+      });
     };
-  };
-  var registerMenuItems$2 = function (editor) {
-    editor.addMenuItem('undo', {
-      text: 'Undo',
-      icon: 'undo',
-      shortcut: 'Meta+Z',
-      onPostRender: toggleUndoRedoState(editor, 'undo'),
-      cmd: 'undo'
-    });
-    editor.addMenuItem('redo', {
-      text: 'Redo',
-      icon: 'redo',
-      shortcut: 'Meta+Y',
-      onPostRender: toggleUndoRedoState(editor, 'redo'),
-      cmd: 'redo'
-    });
-  };
-  var registerButtons$5 = function (editor) {
-    editor.addButton('undo', {
-      tooltip: 'Undo',
-      onPostRender: toggleUndoRedoState(editor, 'undo'),
-      cmd: 'undo'
-    });
-    editor.addButton('redo', {
-      tooltip: 'Redo',
-      onPostRender: toggleUndoRedoState(editor, 'redo'),
-      cmd: 'redo'
-    });
-  };
-  var register$7 = function (editor) {
-    registerMenuItems$2(editor);
-    registerButtons$5(editor);
-  };
-  var $_5qfrkx1bqjjgwekdq = { register: register$7 };
-
-  var toggleVisualAidState = function (editor) {
-    return function () {
-      var self = this;
-      editor.on('VisualAid', function (e) {
-        self.active(e.hasVisual);
+    var registerButtons$5 = function (editor) {
+      editor.addButton('undo', {
+        tooltip: 'Undo',
+        onPostRender: toggleUndoRedoState(editor, 'undo'),
+        cmd: 'undo'
       });
-      self.active(editor.hasVisual);
+      editor.addButton('redo', {
+        tooltip: 'Redo',
+        onPostRender: toggleUndoRedoState(editor, 'redo'),
+        cmd: 'redo'
+      });
     };
-  };
-  var registerMenuItems$3 = function (editor) {
-    editor.addMenuItem('visualaid', {
-      text: 'Visual aids',
-      selectable: true,
-      onPostRender: toggleVisualAidState(editor),
-      cmd: 'mceToggleVisualAid'
-    });
-  };
-  var register$8 = function (editor) {
-    registerMenuItems$3(editor);
-  };
-  var $_ebb6rc1brjjgwekdr = { register: register$8 };
+    var register$7 = function (editor) {
+      registerMenuItems$2(editor);
+      registerButtons$5(editor);
+    };
+    var UndoRedo = { register: register$7 };
 
-  var setupEnvironment = function () {
-    Widget.tooltips = !global$1.iOS;
-    Control$1.translate = function (text) {
-      return global$5.translate(text);
+    var toggleVisualAidState = function (editor) {
+      return function () {
+        var self = this;
+        editor.on('VisualAid', function (e) {
+          self.active(e.hasVisual);
+        });
+        self.active(editor.hasVisual);
+      };
     };
-  };
-  var setupUiContainer = function (editor) {
-    if (editor.settings.ui_container) {
-      global$1.container = $_6nlstg1bfjjgwekcb.descendant(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
-        return elm.dom();
+    var registerMenuItems$3 = function (editor) {
+      editor.addMenuItem('visualaid', {
+        text: 'Visual aids',
+        selectable: true,
+        onPostRender: toggleVisualAidState(editor),
+        cmd: 'mceToggleVisualAid'
       });
-    }
-  };
-  var setupRtlMode = function (editor) {
-    if (editor.rtl) {
-      Control$1.rtl = true;
-    }
-  };
-  var setupHideFloatPanels = function (editor) {
-    editor.on('mousedown', function () {
-      FloatPanel.hideAll();
-    });
-  };
-  var setup = function (editor) {
-    setupRtlMode(editor);
-    setupHideFloatPanels(editor);
-    setupUiContainer(editor);
-    setupEnvironment();
-    $_a3xw9u1bnjjgwekdh.register(editor);
-    $_7uh4c31bijjgwekcw.register(editor);
-    $_2ywvy11bpjjgwekdn.register(editor);
-    $_5qfrkx1bqjjgwekdq.register(editor);
-    $_b15nsk1bljjgwekd9.register(editor);
-    $_2g5ce1bkjjgwekcz.register(editor);
-    $_9qaa1r1bmjjgwekdc.register(editor);
-    $_ebb6rc1brjjgwekdr.register(editor);
-    $_dvqvtt1bojjgwekdj.register(editor);
-  };
-  var $_gg6ikw1bejjgwekc5 = { setup: setup };
+    };
+    var register$8 = function (editor) {
+      registerMenuItems$3(editor);
+    };
+    var VisualAid = { register: register$8 };
 
-  var GridLayout = AbsoluteLayout.extend({
-    recalc: function (container) {
-      var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;
-      var colWidths = [];
-      var rowHeights = [];
-      var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
-      settings = container.settings;
-      items = container.items().filter(':visible');
-      contLayoutRect = container.layoutRect();
-      cols = settings.columns || Math.ceil(Math.sqrt(items.length));
-      rows = Math.ceil(items.length / cols);
-      spacingH = settings.spacingH || settings.spacing || 0;
-      spacingV = settings.spacingV || settings.spacing || 0;
-      alignH = settings.alignH || settings.align;
-      alignV = settings.alignV || settings.align;
-      contPaddingBox = container.paddingBox;
-      reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
-      if (alignH && typeof alignH === 'string') {
-        alignH = [alignH];
+    var setupEnvironment = function () {
+      Widget.tooltips = !global$1.iOS;
+      Control$1.translate = function (text) {
+        return global$5.translate(text);
+      };
+    };
+    var setupUiContainer = function (editor) {
+      if (editor.settings.ui_container) {
+        global$1.container = descendant$1(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
+          return elm.dom();
+        });
       }
-      if (alignV && typeof alignV === 'string') {
-        alignV = [alignV];
+    };
+    var setupRtlMode = function (editor) {
+      if (editor.rtl) {
+        Control$1.rtl = true;
       }
-      for (x = 0; x < cols; x++) {
-        colWidths.push(0);
-      }
-      for (y = 0; y < rows; y++) {
-        rowHeights.push(0);
-      }
-      for (y = 0; y < rows; y++) {
+    };
+    var setupHideFloatPanels = function (editor) {
+      editor.on('mousedown progressstate', function () {
+        FloatPanel.hideAll();
+      });
+    };
+    var setup = function (editor) {
+      setupRtlMode(editor);
+      setupHideFloatPanels(editor);
+      setupUiContainer(editor);
+      setupEnvironment();
+      FormatSelect.register(editor);
+      Align.register(editor);
+      SimpleControls.register(editor);
+      UndoRedo.register(editor);
+      FontSizeSelect.register(editor);
+      FontSelect.register(editor);
+      Formats.register(editor);
+      VisualAid.register(editor);
+      InsertButton.register(editor);
+    };
+    var FormatControls = { setup: setup };
+
+    var GridLayout = AbsoluteLayout.extend({
+      recalc: function (container) {
+        var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;
+        var colWidths = [];
+        var rowHeights = [];
+        var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
+        settings = container.settings;
+        items = container.items().filter(':visible');
+        contLayoutRect = container.layoutRect();
+        cols = settings.columns || Math.ceil(Math.sqrt(items.length));
+        rows = Math.ceil(items.length / cols);
+        spacingH = settings.spacingH || settings.spacing || 0;
+        spacingV = settings.spacingV || settings.spacing || 0;
+        alignH = settings.alignH || settings.align;
+        alignV = settings.alignV || settings.align;
+        contPaddingBox = container.paddingBox;
+        reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
+        if (alignH && typeof alignH === 'string') {
+          alignH = [alignH];
+        }
+        if (alignV && typeof alignV === 'string') {
+          alignV = [alignV];
+        }
         for (x = 0; x < cols; x++) {
-          ctrl = items[y * cols + x];
-          if (!ctrl) {
-            break;
-          }
-          ctrlLayoutRect = ctrl.layoutRect();
-          ctrlMinWidth = ctrlLayoutRect.minW;
-          ctrlMinHeight = ctrlLayoutRect.minH;
-          colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
-          rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
+          colWidths.push(0);
         }
-      }
-      availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
-      for (maxX = 0, x = 0; x < cols; x++) {
-        maxX += colWidths[x] + (x > 0 ? spacingH : 0);
-        availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
-      }
-      availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
-      for (maxY = 0, y = 0; y < rows; y++) {
-        maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
-        availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
-      }
-      maxX += contPaddingBox.left + contPaddingBox.right;
-      maxY += contPaddingBox.top + contPaddingBox.bottom;
-      rect = {};
-      rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
-      rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
-      rect.contentW = rect.minW - contLayoutRect.deltaW;
-      rect.contentH = rect.minH - contLayoutRect.deltaH;
-      rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
-      rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
-      rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
-      rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
-      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
-        rect.w = rect.minW;
-        rect.h = rect.minH;
-        container.layoutRect(rect);
-        this.recalc(container);
-        if (container._lastRect === null) {
-          var parentCtrl = container.parent();
-          if (parentCtrl) {
-            parentCtrl._lastRect = null;
-            parentCtrl.recalc();
+        for (y = 0; y < rows; y++) {
+          rowHeights.push(0);
+        }
+        for (y = 0; y < rows; y++) {
+          for (x = 0; x < cols; x++) {
+            ctrl = items[y * cols + x];
+            if (!ctrl) {
+              break;
+            }
+            ctrlLayoutRect = ctrl.layoutRect();
+            ctrlMinWidth = ctrlLayoutRect.minW;
+            ctrlMinHeight = ctrlLayoutRect.minH;
+            colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
+            rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
           }
         }
-        return;
-      }
-      if (contLayoutRect.autoResize) {
-        rect = container.layoutRect(rect);
+        availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
+        for (maxX = 0, x = 0; x < cols; x++) {
+          maxX += colWidths[x] + (x > 0 ? spacingH : 0);
+          availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
+        }
+        availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
+        for (maxY = 0, y = 0; y < rows; y++) {
+          maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
+          availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
+        }
+        maxX += contPaddingBox.left + contPaddingBox.right;
+        maxY += contPaddingBox.top + contPaddingBox.bottom;
+        rect = {};
+        rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
+        rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
         rect.contentW = rect.minW - contLayoutRect.deltaW;
         rect.contentH = rect.minH - contLayoutRect.deltaH;
-      }
-      var flexV;
-      if (settings.packV === 'start') {
-        flexV = 0;
-      } else {
-        flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
-      }
-      var totalFlex = 0;
-      var flexWidths = settings.flexWidths;
-      if (flexWidths) {
-        for (x = 0; x < flexWidths.length; x++) {
-          totalFlex += flexWidths[x];
+        rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
+        rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
+        rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
+        rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
+        if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
+          rect.w = rect.minW;
+          rect.h = rect.minH;
+          container.layoutRect(rect);
+          this.recalc(container);
+          if (container._lastRect === null) {
+            var parentCtrl = container.parent();
+            if (parentCtrl) {
+              parentCtrl._lastRect = null;
+              parentCtrl.recalc();
+            }
+          }
+          return;
         }
-      } else {
-        totalFlex = cols;
-      }
-      var ratio = availableWidth / totalFlex;
-      for (x = 0; x < cols; x++) {
-        colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
-      }
-      posY = contPaddingBox.top;
-      for (y = 0; y < rows; y++) {
-        posX = contPaddingBox.left;
-        height = rowHeights[y] + flexV;
+        if (contLayoutRect.autoResize) {
+          rect = container.layoutRect(rect);
+          rect.contentW = rect.minW - contLayoutRect.deltaW;
+          rect.contentH = rect.minH - contLayoutRect.deltaH;
+        }
+        var flexV;
+        if (settings.packV === 'start') {
+          flexV = 0;
+        } else {
+          flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
+        }
+        var totalFlex = 0;
+        var flexWidths = settings.flexWidths;
+        if (flexWidths) {
+          for (x = 0; x < flexWidths.length; x++) {
+            totalFlex += flexWidths[x];
+          }
+        } else {
+          totalFlex = cols;
+        }
+        var ratio = availableWidth / totalFlex;
         for (x = 0; x < cols; x++) {
-          if (reverseRows) {
-            idx = y * cols + cols - 1 - x;
-          } else {
-            idx = y * cols + x;
+          colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
+        }
+        posY = contPaddingBox.top;
+        for (y = 0; y < rows; y++) {
+          posX = contPaddingBox.left;
+          height = rowHeights[y] + flexV;
+          for (x = 0; x < cols; x++) {
+            if (reverseRows) {
+              idx = y * cols + cols - 1 - x;
+            } else {
+              idx = y * cols + x;
+            }
+            ctrl = items[idx];
+            if (!ctrl) {
+              break;
+            }
+            ctrlSettings = ctrl.settings;
+            ctrlLayoutRect = ctrl.layoutRect();
+            width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
+            ctrlLayoutRect.x = posX;
+            ctrlLayoutRect.y = posY;
+            align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);
+            if (align === 'center') {
+              ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;
+            } else if (align === 'right') {
+              ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
+            } else if (align === 'stretch') {
+              ctrlLayoutRect.w = width;
+            }
+            align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);
+            if (align === 'center') {
+              ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;
+            } else if (align === 'bottom') {
+              ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
+            } else if (align === 'stretch') {
+              ctrlLayoutRect.h = height;
+            }
+            ctrl.layoutRect(ctrlLayoutRect);
+            posX += width + spacingH;
+            if (ctrl.recalc) {
+              ctrl.recalc();
+            }
           }
-          ctrl = items[idx];
-          if (!ctrl) {
-            break;
+          posY += height + spacingV;
+        }
+      }
+    });
+
+    var Iframe = Widget.extend({
+      renderHtml: function () {
+        var self = this;
+        self.classes.add('iframe');
+        self.canFocus = false;
+        return '<iframe id="' + self._id + '" class="' + self.classes + '" tabindex="-1" src="' + (self.settings.url || 'javascript:\'\'') + '" frameborder="0"></iframe>';
+      },
+      src: function (src) {
+        this.getEl().src = src;
+      },
+      html: function (html, callback) {
+        var self = this, body = this.getEl().contentWindow.document.body;
+        if (!body) {
+          global$3.setTimeout(function () {
+            self.html(html);
+          });
+        } else {
+          body.innerHTML = html;
+          if (callback) {
+            callback();
           }
-          ctrlSettings = ctrl.settings;
-          ctrlLayoutRect = ctrl.layoutRect();
-          width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
-          ctrlLayoutRect.x = posX;
-          ctrlLayoutRect.y = posY;
-          align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);
-          if (align === 'center') {
-            ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;
-          } else if (align === 'right') {
-            ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
-          } else if (align === 'stretch') {
-            ctrlLayoutRect.w = width;
-          }
-          align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);
-          if (align === 'center') {
-            ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;
-          } else if (align === 'bottom') {
-            ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
-          } else if (align === 'stretch') {
-            ctrlLayoutRect.h = height;
-          }
-          ctrl.layoutRect(ctrlLayoutRect);
-          posX += width + spacingH;
-          if (ctrl.recalc) {
-            ctrl.recalc();
-          }
         }
-        posY += height + spacingV;
+        return this;
       }
-    }
-  });
+    });
 
-  var Iframe = Widget.extend({
-    renderHtml: function () {
-      var self = this;
-      self.classes.add('iframe');
-      self.canFocus = false;
-      return '<iframe id="' + self._id + '" class="' + self.classes + '" tabindex="-1" src="' + (self.settings.url || 'javascript:\'\'') + '" frameborder="0"></iframe>';
-    },
-    src: function (src) {
-      this.getEl().src = src;
-    },
-    html: function (html, callback) {
-      var self = this, body = this.getEl().contentWindow.document.body;
-      if (!body) {
-        global$3.setTimeout(function () {
-          self.html(html);
+    var InfoBox = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('widget').add('infobox');
+        self.canFocus = false;
+      },
+      severity: function (level) {
+        this.classes.remove('error');
+        this.classes.remove('warning');
+        this.classes.remove('success');
+        this.classes.add(level);
+      },
+      help: function (state) {
+        this.state.set('help', state);
+      },
+      renderHtml: function () {
+        var self = this, prefix = self.classPrefix;
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + self.encode(self.state.get('text')) + '<button role="button" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-help"></i>' + '</button>' + '</div>' + '</div>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.getEl('body').firstChild.data = self.encode(e.value);
+          if (self.state.get('rendered')) {
+            self.updateLayoutRect();
+          }
         });
-      } else {
-        body.innerHTML = html;
-        if (callback) {
-          callback();
-        }
+        self.state.on('change:help', function (e) {
+          self.classes.toggle('has-help', e.value);
+          if (self.state.get('rendered')) {
+            self.updateLayoutRect();
+          }
+        });
+        return self._super();
       }
-      return this;
-    }
-  });
+    });
 
-  var InfoBox = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('widget').add('infobox');
-      self.canFocus = false;
-    },
-    severity: function (level) {
-      this.classes.remove('error');
-      this.classes.remove('warning');
-      this.classes.remove('success');
-      this.classes.add(level);
-    },
-    help: function (state) {
-      this.state.set('help', state);
-    },
-    renderHtml: function () {
-      var self = this, prefix = self.classPrefix;
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + self.encode(self.state.get('text')) + '<button role="button" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-help"></i>' + '</button>' + '</div>' + '</div>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.getEl('body').firstChild.data = self.encode(e.value);
-        if (self.state.get('rendered')) {
-          self.updateLayoutRect();
+    var Label = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('widget').add('label');
+        self.canFocus = false;
+        if (settings.multiline) {
+          self.classes.add('autoscroll');
         }
-      });
-      self.state.on('change:help', function (e) {
-        self.classes.toggle('has-help', e.value);
-        if (self.state.get('rendered')) {
-          self.updateLayoutRect();
+        if (settings.strong) {
+          self.classes.add('strong');
         }
-      });
-      return self._super();
-    }
-  });
-
-  var Label = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('widget').add('label');
-      self.canFocus = false;
-      if (settings.multiline) {
-        self.classes.add('autoscroll');
-      }
-      if (settings.strong) {
-        self.classes.add('strong');
-      }
-    },
-    initLayoutRect: function () {
-      var self = this, layoutRect = self._super();
-      if (self.settings.multiline) {
-        var size = funcs.getSize(self.getEl());
-        if (size.width > layoutRect.maxW) {
-          layoutRect.minW = layoutRect.maxW;
-          self.classes.add('multiline');
+      },
+      initLayoutRect: function () {
+        var self = this, layoutRect = self._super();
+        if (self.settings.multiline) {
+          var size = funcs.getSize(self.getEl());
+          if (size.width > layoutRect.maxW) {
+            layoutRect.minW = layoutRect.maxW;
+            self.classes.add('multiline');
+          }
+          self.getEl().style.width = layoutRect.minW + 'px';
+          layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);
         }
-        self.getEl().style.width = layoutRect.minW + 'px';
-        layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);
-      }
-      return layoutRect;
-    },
-    repaint: function () {
-      var self = this;
-      if (!self.settings.multiline) {
-        self.getEl().style.lineHeight = self.layoutRect().h + 'px';
-      }
-      return self._super();
-    },
-    severity: function (level) {
-      this.classes.remove('error');
-      this.classes.remove('warning');
-      this.classes.remove('success');
-      this.classes.add(level);
-    },
-    renderHtml: function () {
-      var self = this;
-      var targetCtrl, forName, forId = self.settings.forId;
-      var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));
-      if (!forId && (forName = self.settings.forName)) {
-        targetCtrl = self.getRoot().find('#' + forName)[0];
-        if (targetCtrl) {
-          forId = targetCtrl._id;
+        return layoutRect;
+      },
+      repaint: function () {
+        var self = this;
+        if (!self.settings.multiline) {
+          self.getEl().style.lineHeight = self.layoutRect().h + 'px';
         }
+        return self._super();
+      },
+      severity: function (level) {
+        this.classes.remove('error');
+        this.classes.remove('warning');
+        this.classes.remove('success');
+        this.classes.add(level);
+      },
+      renderHtml: function () {
+        var self = this;
+        var targetCtrl, forName, forId = self.settings.forId;
+        var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));
+        if (!forId && (forName = self.settings.forName)) {
+          targetCtrl = self.getRoot().find('#' + forName)[0];
+          if (targetCtrl) {
+            forId = targetCtrl._id;
+          }
+        }
+        if (forId) {
+          return '<label id="' + self._id + '" class="' + self.classes + '"' + (forId ? ' for="' + forId + '"' : '') + '>' + text + '</label>';
+        }
+        return '<span id="' + self._id + '" class="' + self.classes + '">' + text + '</span>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.innerHtml(self.encode(e.value));
+          if (self.state.get('rendered')) {
+            self.updateLayoutRect();
+          }
+        });
+        return self._super();
       }
-      if (forId) {
-        return '<label id="' + self._id + '" class="' + self.classes + '"' + (forId ? ' for="' + forId + '"' : '') + '>' + text + '</label>';
+    });
+
+    var Toolbar$1 = Container.extend({
+      Defaults: {
+        role: 'toolbar',
+        layout: 'flow'
+      },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('toolbar');
+      },
+      postRender: function () {
+        var self = this;
+        self.items().each(function (ctrl) {
+          ctrl.classes.add('toolbar-item');
+        });
+        return self._super();
       }
-      return '<span id="' + self._id + '" class="' + self.classes + '">' + text + '</span>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.innerHtml(self.encode(e.value));
-        if (self.state.get('rendered')) {
-          self.updateLayoutRect();
-        }
-      });
-      return self._super();
-    }
-  });
+    });
 
-  var Toolbar$1 = Container.extend({
-    Defaults: {
-      role: 'toolbar',
-      layout: 'flow'
-    },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('toolbar');
-    },
-    postRender: function () {
-      var self = this;
-      self.items().each(function (ctrl) {
-        ctrl.classes.add('toolbar-item');
-      });
-      return self._super();
-    }
-  });
+    var MenuBar = Toolbar$1.extend({
+      Defaults: {
+        role: 'menubar',
+        containerCls: 'menubar',
+        ariaRoot: true,
+        defaults: { type: 'menubutton' }
+      }
+    });
 
-  var MenuBar = Toolbar$1.extend({
-    Defaults: {
-      role: 'menubar',
-      containerCls: 'menubar',
-      ariaRoot: true,
-      defaults: { type: 'menubutton' }
-    }
-  });
-
-  function isChildOf$1(node, parent$$1) {
-    while (node) {
-      if (parent$$1 === node) {
-        return true;
+    function isChildOf$1(node, parent$$1) {
+      while (node) {
+        if (parent$$1 === node) {
+          return true;
+        }
+        node = node.parentNode;
       }
-      node = node.parentNode;
+      return false;
     }
-    return false;
-  }
-  var MenuButton = Button.extend({
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._renderOpen = true;
-      self$$1._super(settings);
-      settings = self$$1.settings;
-      self$$1.classes.add('menubtn');
-      if (settings.fixedWidth) {
-        self$$1.classes.add('fixed-width');
-      }
-      self$$1.aria('haspopup', true);
-      self$$1.state.set('menu', settings.menu || self$$1.render());
-    },
-    showMenu: function (toggle) {
-      var self$$1 = this;
-      var menu;
-      if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {
-        return self$$1.hideMenu();
-      }
-      if (!self$$1.menu) {
-        menu = self$$1.state.get('menu') || [];
-        self$$1.classes.add('opened');
-        if (menu.length) {
-          menu = {
-            type: 'menu',
-            animate: true,
-            items: menu
-          };
-        } else {
-          menu.type = menu.type || 'menu';
-          menu.animate = true;
+    var MenuButton = Button.extend({
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._renderOpen = true;
+        self$$1._super(settings);
+        settings = self$$1.settings;
+        self$$1.classes.add('menubtn');
+        if (settings.fixedWidth) {
+          self$$1.classes.add('fixed-width');
         }
-        if (!menu.renderTo) {
-          self$$1.menu = global$11.create(menu).parent(self$$1).renderTo();
+        self$$1.aria('haspopup', true);
+        self$$1.state.set('menu', settings.menu || self$$1.render());
+      },
+      showMenu: function (toggle) {
+        var self$$1 = this;
+        var menu;
+        if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {
+          return self$$1.hideMenu();
+        }
+        if (!self$$1.menu) {
+          menu = self$$1.state.get('menu') || [];
+          self$$1.classes.add('opened');
+          if (menu.length) {
+            menu = {
+              type: 'menu',
+              animate: true,
+              items: menu
+            };
+          } else {
+            menu.type = menu.type || 'menu';
+            menu.animate = true;
+          }
+          if (!menu.renderTo) {
+            self$$1.menu = global$b.create(menu).parent(self$$1).renderTo();
+          } else {
+            self$$1.menu = menu.parent(self$$1).show().renderTo();
+          }
+          self$$1.fire('createmenu');
+          self$$1.menu.reflow();
+          self$$1.menu.on('cancel', function (e) {
+            if (e.control.parent() === self$$1.menu) {
+              e.stopPropagation();
+              self$$1.focus();
+              self$$1.hideMenu();
+            }
+          });
+          self$$1.menu.on('select', function () {
+            self$$1.focus();
+          });
+          self$$1.menu.on('show hide', function (e) {
+            if (e.type === 'hide' && e.control.parent() === self$$1) {
+              self$$1.classes.remove('opened-under');
+            }
+            if (e.control === self$$1.menu) {
+              self$$1.activeMenu(e.type === 'show');
+              self$$1.classes.toggle('opened', e.type === 'show');
+            }
+            self$$1.aria('expanded', e.type === 'show');
+          }).fire('show');
+        }
+        self$$1.menu.show();
+        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
+        self$$1.menu.repaint();
+        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
+          'br-tr',
+          'tr-br'
+        ] : [
+          'bl-tl',
+          'tl-bl'
+        ]);
+        var menuLayoutRect = self$$1.menu.layoutRect();
+        var selfBottom = self$$1.$el.offset().top + self$$1.layoutRect().h;
+        if (selfBottom > menuLayoutRect.y && selfBottom < menuLayoutRect.y + menuLayoutRect.h) {
+          self$$1.classes.add('opened-under');
+        }
+        self$$1.fire('showmenu');
+      },
+      hideMenu: function () {
+        var self$$1 = this;
+        if (self$$1.menu) {
+          self$$1.menu.items().each(function (item) {
+            if (item.hideMenu) {
+              item.hideMenu();
+            }
+          });
+          self$$1.menu.hide();
+        }
+      },
+      activeMenu: function (state) {
+        this.classes.toggle('active', state);
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
+        var icon = self$$1.settings.icon, image;
+        var text = self$$1.state.get('text');
+        var textHtml = '';
+        image = self$$1.settings.image;
+        if (image) {
+          icon = 'none';
+          if (typeof image !== 'string') {
+            image = window.getSelection ? image[0] : image[1];
+          }
+          image = ' style="background-image: url(\'' + image + '\')"';
         } else {
-          self$$1.menu = menu.parent(self$$1).show().renderTo();
+          image = '';
         }
-        self$$1.fire('createmenu');
-        self$$1.menu.reflow();
-        self$$1.menu.on('cancel', function (e) {
-          if (e.control.parent() === self$$1.menu) {
-            e.stopPropagation();
+        if (text) {
+          self$$1.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
+        }
+        icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');
+        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
+      },
+      postRender: function () {
+        var self$$1 = this;
+        self$$1.on('click', function (e) {
+          if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {
             self$$1.focus();
-            self$$1.hideMenu();
+            self$$1.showMenu(!e.aria);
+            if (e.aria) {
+              self$$1.menu.items().filter(':visible')[0].focus();
+            }
           }
         });
-        self$$1.menu.on('select', function () {
-          self$$1.focus();
+        self$$1.on('mouseenter', function (e) {
+          var overCtrl = e.control;
+          var parent$$1 = self$$1.parent();
+          var hasVisibleSiblingMenu;
+          if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {
+            parent$$1.items().filter('MenuButton').each(function (ctrl) {
+              if (ctrl.hideMenu && ctrl !== overCtrl) {
+                if (ctrl.menu && ctrl.menu.visible()) {
+                  hasVisibleSiblingMenu = true;
+                }
+                ctrl.hideMenu();
+              }
+            });
+            if (hasVisibleSiblingMenu) {
+              overCtrl.focus();
+              overCtrl.showMenu();
+            }
+          }
         });
-        self$$1.menu.on('show hide', function (e) {
-          if (e.control === self$$1.menu) {
-            self$$1.activeMenu(e.type === 'show');
-            self$$1.classes.toggle('opened', e.type === 'show');
+        return self$$1._super();
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        self$$1.state.on('change:menu', function () {
+          if (self$$1.menu) {
+            self$$1.menu.remove();
           }
-          self$$1.aria('expanded', e.type === 'show');
-        }).fire('show');
-      }
-      self$$1.menu.show();
-      self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-      self$$1.menu.repaint();
-      self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
-        'br-tr',
-        'tr-br'
-      ] : [
-        'bl-tl',
-        'tl-bl'
-      ]);
-      self$$1.fire('showmenu');
-    },
-    hideMenu: function () {
-      var self$$1 = this;
-      if (self$$1.menu) {
-        self$$1.menu.items().each(function (item) {
-          if (item.hideMenu) {
-            item.hideMenu();
-          }
+          self$$1.menu = null;
         });
-        self$$1.menu.hide();
-      }
-    },
-    activeMenu: function (state) {
-      this.classes.toggle('active', state);
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-      var icon = self$$1.settings.icon, image;
-      var text = self$$1.state.get('text');
-      var textHtml = '';
-      image = self$$1.settings.image;
-      if (image) {
-        icon = 'none';
-        if (typeof image !== 'string') {
-          image = window.getSelection ? image[0] : image[1];
+        return self$$1._super();
+      },
+      remove: function () {
+        this._super();
+        if (this.menu) {
+          this.menu.remove();
         }
-        image = ' style="background-image: url(\'' + image + '\')"';
-      } else {
-        image = '';
       }
-      if (text) {
-        self$$1.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
-      }
-      icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-      self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');
-      return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
-    },
-    postRender: function () {
-      var self$$1 = this;
-      self$$1.on('click', function (e) {
-        if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {
-          self$$1.focus();
-          self$$1.showMenu(!e.aria);
-          if (e.aria) {
-            self$$1.menu.items().filter(':visible')[0].focus();
-          }
-        }
-      });
-      self$$1.on('mouseenter', function (e) {
-        var overCtrl = e.control;
-        var parent$$1 = self$$1.parent();
-        var hasVisibleSiblingMenu;
-        if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {
-          parent$$1.items().filter('MenuButton').each(function (ctrl) {
-            if (ctrl.hideMenu && ctrl !== overCtrl) {
-              if (ctrl.menu && ctrl.menu.visible()) {
-                hasVisibleSiblingMenu = true;
-              }
-              ctrl.hideMenu();
+    });
+
+    function Throbber (elm, inline) {
+      var self = this;
+      var state;
+      var classPrefix = Control$1.classPrefix;
+      var timer;
+      self.show = function (time, callback) {
+        function render() {
+          if (state) {
+            global$7(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');
+            if (callback) {
+              callback();
             }
-          });
-          if (hasVisibleSiblingMenu) {
-            overCtrl.focus();
-            overCtrl.showMenu();
           }
         }
-      });
-      return self$$1._super();
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      self$$1.state.on('change:menu', function () {
-        if (self$$1.menu) {
-          self$$1.menu.remove();
+        self.hide();
+        state = true;
+        if (time) {
+          timer = global$3.setTimeout(render, time);
+        } else {
+          render();
         }
-        self$$1.menu = null;
-      });
-      return self$$1._super();
-    },
-    remove: function () {
-      this._super();
-      if (this.menu) {
-        this.menu.remove();
-      }
+        return self;
+      };
+      self.hide = function () {
+        var child = elm.lastChild;
+        global$3.clearTimeout(timer);
+        if (child && child.className.indexOf('throbber') !== -1) {
+          child.parentNode.removeChild(child);
+        }
+        state = false;
+        return self;
+      };
     }
-  });
 
-  function Throbber (elm, inline) {
-    var self = this;
-    var state;
-    var classPrefix = Control$1.classPrefix;
-    var timer;
-    self.show = function (time, callback) {
-      function render() {
-        if (state) {
-          global$7(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');
-          if (callback) {
-            callback();
+    var Menu = FloatPanel.extend({
+      Defaults: {
+        defaultType: 'menuitem',
+        border: 1,
+        layout: 'stack',
+        role: 'application',
+        bodyRole: 'menu',
+        ariaRoot: true
+      },
+      init: function (settings) {
+        var self = this;
+        settings.autohide = true;
+        settings.constrainToViewport = true;
+        if (typeof settings.items === 'function') {
+          settings.itemsFactory = settings.items;
+          settings.items = [];
+        }
+        if (settings.itemDefaults) {
+          var items = settings.items;
+          var i = items.length;
+          while (i--) {
+            items[i] = global$4.extend({}, settings.itemDefaults, items[i]);
           }
         }
-      }
-      self.hide();
-      state = true;
-      if (time) {
-        timer = global$3.setTimeout(render, time);
-      } else {
-        render();
-      }
-      return self;
-    };
-    self.hide = function () {
-      var child = elm.lastChild;
-      global$3.clearTimeout(timer);
-      if (child && child.className.indexOf('throbber') !== -1) {
-        child.parentNode.removeChild(child);
-      }
-      state = false;
-      return self;
-    };
-  }
-
-  var Menu = FloatPanel.extend({
-    Defaults: {
-      defaultType: 'menuitem',
-      border: 1,
-      layout: 'stack',
-      role: 'application',
-      bodyRole: 'menu',
-      ariaRoot: true
-    },
-    init: function (settings) {
-      var self = this;
-      settings.autohide = true;
-      settings.constrainToViewport = true;
-      if (typeof settings.items === 'function') {
-        settings.itemsFactory = settings.items;
-        settings.items = [];
-      }
-      if (settings.itemDefaults) {
-        var items = settings.items;
-        var i = items.length;
-        while (i--) {
-          items[i] = global$4.extend({}, settings.itemDefaults, items[i]);
+        self._super(settings);
+        self.classes.add('menu');
+        if (settings.animate && global$1.ie !== 11) {
+          self.classes.add('animate');
         }
-      }
-      self._super(settings);
-      self.classes.add('menu');
-      if (settings.animate && global$1.ie !== 11) {
-        self.classes.add('animate');
-      }
-    },
-    repaint: function () {
-      this.classes.toggle('menu-align', true);
-      this._super();
-      this.getEl().style.height = '';
-      this.getEl('body').style.height = '';
-      return this;
-    },
-    cancel: function () {
-      var self = this;
-      self.hideAll();
-      self.fire('select');
-    },
-    load: function () {
-      var self = this;
-      var time, factory;
-      function hideThrobber() {
-        if (self.throbber) {
-          self.throbber.hide();
-          self.throbber = null;
+      },
+      repaint: function () {
+        this.classes.toggle('menu-align', true);
+        this._super();
+        this.getEl().style.height = '';
+        this.getEl('body').style.height = '';
+        return this;
+      },
+      cancel: function () {
+        var self = this;
+        self.hideAll();
+        self.fire('select');
+      },
+      load: function () {
+        var self = this;
+        var time, factory;
+        function hideThrobber() {
+          if (self.throbber) {
+            self.throbber.hide();
+            self.throbber = null;
+          }
         }
-      }
-      factory = self.settings.itemsFactory;
-      if (!factory) {
-        return;
-      }
-      if (!self.throbber) {
-        self.throbber = new Throbber(self.getEl('body'), true);
-        if (self.items().length === 0) {
-          self.throbber.show();
-          self.fire('loading');
-        } else {
-          self.throbber.show(100, function () {
-            self.items().remove();
-            self.fire('loading');
-          });
-        }
-        self.on('hide close', hideThrobber);
-      }
-      self.requestTime = time = new Date().getTime();
-      self.settings.itemsFactory(function (items) {
-        if (items.length === 0) {
-          self.hide();
+        factory = self.settings.itemsFactory;
+        if (!factory) {
           return;
         }
-        if (self.requestTime !== time) {
-          return;
+        if (!self.throbber) {
+          self.throbber = new Throbber(self.getEl('body'), true);
+          if (self.items().length === 0) {
+            self.throbber.show();
+            self.fire('loading');
+          } else {
+            self.throbber.show(100, function () {
+              self.items().remove();
+              self.fire('loading');
+            });
+          }
+          self.on('hide close', hideThrobber);
         }
-        self.getEl().style.width = '';
-        self.getEl('body').style.width = '';
-        hideThrobber();
-        self.items().remove();
-        self.getEl('body').innerHTML = '';
-        self.add(items);
-        self.renderNew();
-        self.fire('loaded');
-      });
-    },
-    hideAll: function () {
-      var self = this;
-      this.find('menuitem').exec('hideMenu');
-      return self._super();
-    },
-    preRender: function () {
-      var self = this;
-      self.items().each(function (ctrl) {
-        var settings = ctrl.settings;
-        if (settings.icon || settings.image || settings.selectable) {
-          self._hasIcons = true;
-          return false;
+        self.requestTime = time = new Date().getTime();
+        self.settings.itemsFactory(function (items) {
+          if (items.length === 0) {
+            self.hide();
+            return;
+          }
+          if (self.requestTime !== time) {
+            return;
+          }
+          self.getEl().style.width = '';
+          self.getEl('body').style.width = '';
+          hideThrobber();
+          self.items().remove();
+          self.getEl('body').innerHTML = '';
+          self.add(items);
+          self.renderNew();
+          self.fire('loaded');
+        });
+      },
+      hideAll: function () {
+        var self = this;
+        this.find('menuitem').exec('hideMenu');
+        return self._super();
+      },
+      preRender: function () {
+        var self = this;
+        self.items().each(function (ctrl) {
+          var settings = ctrl.settings;
+          if (settings.icon || settings.image || settings.selectable) {
+            self._hasIcons = true;
+            return false;
+          }
+        });
+        if (self.settings.itemsFactory) {
+          self.on('postrender', function () {
+            if (self.settings.itemsFactory) {
+              self.load();
+            }
+          });
         }
-      });
-      if (self.settings.itemsFactory) {
-        self.on('postrender', function () {
-          if (self.settings.itemsFactory) {
-            self.load();
+        self.on('show hide', function (e) {
+          if (e.control === self) {
+            if (e.type === 'show') {
+              global$3.setTimeout(function () {
+                self.classes.add('in');
+              }, 0);
+            } else {
+              self.classes.remove('in');
+            }
           }
         });
+        return self._super();
       }
-      self.on('show hide', function (e) {
-        if (e.control === self) {
-          if (e.type === 'show') {
-            global$3.setTimeout(function () {
-              self.classes.add('in');
-            }, 0);
-          } else {
-            self.classes.remove('in');
-          }
-        }
-      });
-      return self._super();
-    }
-  });
+    });
 
-  var ListBox = MenuButton.extend({
-    init: function (settings) {
-      var self = this;
-      var values, selected, selectedText, lastItemCtrl;
-      function setSelected(menuValues) {
-        for (var i = 0; i < menuValues.length; i++) {
-          selected = menuValues[i].selected || settings.value === menuValues[i].value;
-          if (selected) {
-            selectedText = selectedText || menuValues[i].text;
-            self.state.set('value', menuValues[i].value);
-            return true;
-          }
-          if (menuValues[i].menu) {
-            if (setSelected(menuValues[i].menu)) {
+    var ListBox = MenuButton.extend({
+      init: function (settings) {
+        var self = this;
+        var values, selected, selectedText, lastItemCtrl;
+        function setSelected(menuValues) {
+          for (var i = 0; i < menuValues.length; i++) {
+            selected = menuValues[i].selected || settings.value === menuValues[i].value;
+            if (selected) {
+              selectedText = selectedText || menuValues[i].text;
+              self.state.set('value', menuValues[i].value);
               return true;
             }
+            if (menuValues[i].menu) {
+              if (setSelected(menuValues[i].menu)) {
+                return true;
+              }
+            }
           }
         }
-      }
-      self._super(settings);
-      settings = self.settings;
-      self._values = values = settings.values;
-      if (values) {
-        if (typeof settings.value !== 'undefined') {
-          setSelected(values);
+        self._super(settings);
+        settings = self.settings;
+        self._values = values = settings.values;
+        if (values) {
+          if (typeof settings.value !== 'undefined') {
+            setSelected(values);
+          }
+          if (!selected && values.length > 0) {
+            selectedText = values[0].text;
+            self.state.set('value', values[0].value);
+          }
+          self.state.set('menu', values);
         }
-        if (!selected && values.length > 0) {
-          selectedText = values[0].text;
-          self.state.set('value', values[0].value);
+        self.state.set('text', settings.text || selectedText);
+        self.classes.add('listbox');
+        self.on('select', function (e) {
+          var ctrl = e.control;
+          if (lastItemCtrl) {
+            e.lastControl = lastItemCtrl;
+          }
+          if (settings.multiple) {
+            ctrl.active(!ctrl.active());
+          } else {
+            self.value(e.control.value());
+          }
+          lastItemCtrl = ctrl;
+        });
+      },
+      value: function (value) {
+        if (arguments.length === 0) {
+          return this.state.get('value');
         }
-        self.state.set('menu', values);
-      }
-      self.state.set('text', settings.text || selectedText);
-      self.classes.add('listbox');
-      self.on('select', function (e) {
-        var ctrl = e.control;
-        if (lastItemCtrl) {
-          e.lastControl = lastItemCtrl;
+        if (typeof value === 'undefined') {
+          return this;
         }
-        if (settings.multiple) {
-          ctrl.active(!ctrl.active());
+        function valueExists(values) {
+          return exists(values, function (a) {
+            return a.menu ? valueExists(a.menu) : a.value === value;
+          });
+        }
+        if (this.settings.values) {
+          if (valueExists(this.settings.values)) {
+            this.state.set('value', value);
+          } else if (value === null) {
+            this.state.set('value', null);
+          }
         } else {
-          self.value(e.control.value());
+          this.state.set('value', value);
         }
-        lastItemCtrl = ctrl;
-      });
-    },
-    value: function (value) {
-      if (arguments.length === 0) {
-        return this.state.get('value');
-      }
-      if (typeof value === 'undefined') {
         return this;
-      }
-      if (this.settings.values) {
-        var matchingValues = global$4.grep(this.settings.values, function (a) {
-          return a.value === value;
-        });
-        if (matchingValues.length > 0) {
-          this.state.set('value', value);
-        } else if (value === null) {
-          this.state.set('value', null);
+      },
+      bindStates: function () {
+        var self = this;
+        function activateMenuItemsByValue(menu, value) {
+          if (menu instanceof Menu) {
+            menu.items().each(function (ctrl) {
+              if (!ctrl.hasMenus()) {
+                ctrl.active(ctrl.value() === value);
+              }
+            });
+          }
         }
-      } else {
-        this.state.set('value', value);
-      }
-      return this;
-    },
-    bindStates: function () {
-      var self = this;
-      function activateMenuItemsByValue(menu, value) {
-        if (menu instanceof Menu) {
-          menu.items().each(function (ctrl) {
-            if (!ctrl.hasMenus()) {
-              ctrl.active(ctrl.value() === value);
+        function getSelectedItem(menuValues, value) {
+          var selectedItem;
+          if (!menuValues) {
+            return;
+          }
+          for (var i = 0; i < menuValues.length; i++) {
+            if (menuValues[i].value === value) {
+              return menuValues[i];
             }
-          });
+            if (menuValues[i].menu) {
+              selectedItem = getSelectedItem(menuValues[i].menu, value);
+              if (selectedItem) {
+                return selectedItem;
+              }
+            }
+          }
         }
+        self.on('show', function (e) {
+          activateMenuItemsByValue(e.control, self.value());
+        });
+        self.state.on('change:value', function (e) {
+          var selectedItem = getSelectedItem(self.state.get('menu'), e.value);
+          if (selectedItem) {
+            self.text(selectedItem.text);
+          } else {
+            self.text(self.settings.text);
+          }
+        });
+        return self._super();
       }
-      function getSelectedItem(menuValues, value) {
-        var selectedItem;
-        if (!menuValues) {
-          return;
+    });
+
+    var toggleTextStyle = function (ctrl, state) {
+      var textStyle = ctrl._textStyle;
+      if (textStyle) {
+        var textElm = ctrl.getEl('text');
+        textElm.setAttribute('style', textStyle);
+        if (state) {
+          textElm.style.color = '';
+          textElm.style.backgroundColor = '';
         }
-        for (var i = 0; i < menuValues.length; i++) {
-          if (menuValues[i].value === value) {
-            return menuValues[i];
+      }
+    };
+    var MenuItem = Widget.extend({
+      Defaults: {
+        border: 0,
+        role: 'menuitem'
+      },
+      init: function (settings) {
+        var self = this;
+        var text;
+        self._super(settings);
+        settings = self.settings;
+        self.classes.add('menu-item');
+        if (settings.menu) {
+          self.classes.add('menu-item-expand');
+        }
+        if (settings.preview) {
+          self.classes.add('menu-item-preview');
+        }
+        text = self.state.get('text');
+        if (text === '-' || text === '|') {
+          self.classes.add('menu-item-sep');
+          self.aria('role', 'separator');
+          self.state.set('text', '-');
+        }
+        if (settings.selectable) {
+          self.aria('role', 'menuitemcheckbox');
+          self.classes.add('menu-item-checkbox');
+          settings.icon = 'selected';
+        }
+        if (!settings.preview && !settings.selectable) {
+          self.classes.add('menu-item-normal');
+        }
+        self.on('mousedown', function (e) {
+          e.preventDefault();
+        });
+        if (settings.menu && !settings.ariaHideMenu) {
+          self.aria('haspopup', true);
+        }
+      },
+      hasMenus: function () {
+        return !!this.settings.menu;
+      },
+      showMenu: function () {
+        var self = this;
+        var settings = self.settings;
+        var menu;
+        var parent = self.parent();
+        parent.items().each(function (ctrl) {
+          if (ctrl !== self) {
+            ctrl.hideMenu();
           }
-          if (menuValues[i].menu) {
-            selectedItem = getSelectedItem(menuValues[i].menu, value);
-            if (selectedItem) {
-              return selectedItem;
+        });
+        if (settings.menu) {
+          menu = self.menu;
+          if (!menu) {
+            menu = settings.menu;
+            if (menu.length) {
+              menu = {
+                type: 'menu',
+                items: menu
+              };
+            } else {
+              menu.type = menu.type || 'menu';
             }
+            if (parent.settings.itemDefaults) {
+              menu.itemDefaults = parent.settings.itemDefaults;
+            }
+            menu = self.menu = global$b.create(menu).parent(self).renderTo();
+            menu.reflow();
+            menu.on('cancel', function (e) {
+              e.stopPropagation();
+              self.focus();
+              menu.hide();
+            });
+            menu.on('show hide', function (e) {
+              if (e.control.items) {
+                e.control.items().each(function (ctrl) {
+                  ctrl.active(ctrl.settings.selected);
+                });
+              }
+            }).fire('show');
+            menu.on('hide', function (e) {
+              if (e.control === menu) {
+                self.classes.remove('selected');
+              }
+            });
+            menu.submenu = true;
+          } else {
+            menu.show();
           }
+          menu._parentMenu = parent;
+          menu.classes.add('menu-sub');
+          var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [
+            'tl-tr',
+            'bl-br',
+            'tr-tl',
+            'br-bl'
+          ] : [
+            'tr-tl',
+            'br-bl',
+            'tl-tr',
+            'bl-br'
+          ]);
+          menu.moveRel(self.getEl(), rel);
+          menu.rel = rel;
+          rel = 'menu-sub-' + rel;
+          menu.classes.remove(menu._lastRel).add(rel);
+          menu._lastRel = rel;
+          self.classes.add('selected');
+          self.aria('expanded', true);
         }
-      }
-      self.on('show', function (e) {
-        activateMenuItemsByValue(e.control, self.value());
-      });
-      self.state.on('change:value', function (e) {
-        var selectedItem = getSelectedItem(self.state.get('menu'), e.value);
-        if (selectedItem) {
-          self.text(selectedItem.text);
-        } else {
-          self.text(self.settings.text);
+      },
+      hideMenu: function () {
+        var self = this;
+        if (self.menu) {
+          self.menu.items().each(function (item) {
+            if (item.hideMenu) {
+              item.hideMenu();
+            }
+          });
+          self.menu.hide();
+          self.aria('expanded', false);
         }
-      });
-      return self._super();
-    }
-  });
-
-  var toggleTextStyle = function (ctrl, state) {
-    var textStyle = ctrl._textStyle;
-    if (textStyle) {
-      var textElm = ctrl.getEl('text');
-      textElm.setAttribute('style', textStyle);
-      if (state) {
-        textElm.style.color = '';
-        textElm.style.backgroundColor = '';
-      }
-    }
-  };
-  var MenuItem = Widget.extend({
-    Defaults: {
-      border: 0,
-      role: 'menuitem'
-    },
-    init: function (settings) {
-      var self = this;
-      var text;
-      self._super(settings);
-      settings = self.settings;
-      self.classes.add('menu-item');
-      if (settings.menu) {
-        self.classes.add('menu-item-expand');
-      }
-      if (settings.preview) {
-        self.classes.add('menu-item-preview');
-      }
-      text = self.state.get('text');
-      if (text === '-' || text === '|') {
-        self.classes.add('menu-item-sep');
-        self.aria('role', 'separator');
-        self.state.set('text', '-');
-      }
-      if (settings.selectable) {
-        self.aria('role', 'menuitemcheckbox');
-        self.classes.add('menu-item-checkbox');
-        settings.icon = 'selected';
-      }
-      if (!settings.preview && !settings.selectable) {
-        self.classes.add('menu-item-normal');
-      }
-      self.on('mousedown', function (e) {
-        e.preventDefault();
-      });
-      if (settings.menu && !settings.ariaHideMenu) {
-        self.aria('haspopup', true);
-      }
-    },
-    hasMenus: function () {
-      return !!this.settings.menu;
-    },
-    showMenu: function () {
-      var self = this;
-      var settings = self.settings;
-      var menu;
-      var parent = self.parent();
-      parent.items().each(function (ctrl) {
-        if (ctrl !== self) {
-          ctrl.hideMenu();
-        }
-      });
-      if (settings.menu) {
-        menu = self.menu;
-        if (!menu) {
-          menu = settings.menu;
-          if (menu.length) {
-            menu = {
-              type: 'menu',
-              items: menu
+        return self;
+      },
+      renderHtml: function () {
+        var self = this;
+        var id = self._id;
+        var settings = self.settings;
+        var prefix = self.classPrefix;
+        var text = self.state.get('text');
+        var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
+        var url = self.encode(settings.url), iconHtml = '';
+        function convertShortcut(shortcut) {
+          var i, value, replace = {};
+          if (global$1.mac) {
+            replace = {
+              alt: '&#x2325;',
+              ctrl: '&#x2318;',
+              shift: '&#x21E7;',
+              meta: '&#x2318;'
             };
           } else {
-            menu.type = menu.type || 'menu';
+            replace = { meta: 'Ctrl' };
           }
-          if (parent.settings.itemDefaults) {
-            menu.itemDefaults = parent.settings.itemDefaults;
+          shortcut = shortcut.split('+');
+          for (i = 0; i < shortcut.length; i++) {
+            value = replace[shortcut[i].toLowerCase()];
+            if (value) {
+              shortcut[i] = value;
+            }
           }
-          menu = self.menu = global$11.create(menu).parent(self).renderTo();
-          menu.reflow();
-          menu.on('cancel', function (e) {
-            e.stopPropagation();
-            self.focus();
-            menu.hide();
-          });
-          menu.on('show hide', function (e) {
-            if (e.control.items) {
-              e.control.items().each(function (ctrl) {
-                ctrl.active(ctrl.settings.selected);
+          return shortcut.join('+');
+        }
+        function escapeRegExp(str) {
+          return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+        }
+        function markMatches(text) {
+          var match = settings.match || '';
+          return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {
+            return '!mce~match[' + match + ']mce~match!';
+          }) : text;
+        }
+        function boldMatches(text) {
+          return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');
+        }
+        if (icon) {
+          self.parent().classes.add('menu-has-icons');
+        }
+        if (settings.image) {
+          image = ' style="background-image: url(\'' + settings.image + '\')"';
+        }
+        if (shortcut) {
+          shortcut = convertShortcut(shortcut);
+        }
+        icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
+        iconHtml = text !== '-' ? '<i class="' + icon + '"' + image + '></i>\xA0' : '';
+        text = boldMatches(self.encode(markMatches(text)));
+        url = boldMatches(self.encode(markMatches(url)));
+        return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1">' + iconHtml + (text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') + (shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') + (settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') + (url ? '<div class="' + prefix + 'menu-item-link">' + url + '</div>' : '') + '</div>';
+      },
+      postRender: function () {
+        var self = this, settings = self.settings;
+        var textStyle = settings.textStyle;
+        if (typeof textStyle === 'function') {
+          textStyle = textStyle.call(this);
+        }
+        if (textStyle) {
+          var textElm = self.getEl('text');
+          if (textElm) {
+            textElm.setAttribute('style', textStyle);
+            self._textStyle = textStyle;
+          }
+        }
+        self.on('mouseenter click', function (e) {
+          if (e.control === self) {
+            if (!settings.menu && e.type === 'click') {
+              self.fire('select');
+              global$3.requestAnimationFrame(function () {
+                self.parent().hideAll();
               });
+            } else {
+              self.showMenu();
+              if (e.aria) {
+                self.menu.focus(true);
+              }
             }
-          }).fire('show');
-          menu.on('hide', function (e) {
-            if (e.control === menu) {
-              self.classes.remove('selected');
-            }
-          });
-          menu.submenu = true;
-        } else {
-          menu.show();
-        }
-        menu._parentMenu = parent;
-        menu.classes.add('menu-sub');
-        var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [
-          'tl-tr',
-          'bl-br',
-          'tr-tl',
-          'br-bl'
-        ] : [
-          'tr-tl',
-          'br-bl',
-          'tl-tr',
-          'bl-br'
-        ]);
-        menu.moveRel(self.getEl(), rel);
-        menu.rel = rel;
-        rel = 'menu-sub-' + rel;
-        menu.classes.remove(menu._lastRel).add(rel);
-        menu._lastRel = rel;
-        self.classes.add('selected');
-        self.aria('expanded', true);
-      }
-    },
-    hideMenu: function () {
-      var self = this;
-      if (self.menu) {
-        self.menu.items().each(function (item) {
-          if (item.hideMenu) {
-            item.hideMenu();
           }
         });
-        self.menu.hide();
-        self.aria('expanded', false);
-      }
-      return self;
-    },
-    renderHtml: function () {
-      var self = this;
-      var id = self._id;
-      var settings = self.settings;
-      var prefix = self.classPrefix;
-      var text = self.state.get('text');
-      var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
-      var url = self.encode(settings.url), iconHtml = '';
-      function convertShortcut(shortcut) {
-        var i, value, replace = {};
-        if (global$1.mac) {
-          replace = {
-            alt: '&#x2325;',
-            ctrl: '&#x2318;',
-            shift: '&#x21E7;',
-            meta: '&#x2318;'
-          };
-        } else {
-          replace = { meta: 'Ctrl' };
+        self._super();
+        return self;
+      },
+      hover: function () {
+        var self = this;
+        self.parent().items().each(function (ctrl) {
+          ctrl.classes.remove('selected');
+        });
+        self.classes.toggle('selected', true);
+        return self;
+      },
+      active: function (state) {
+        toggleTextStyle(this, state);
+        if (typeof state !== 'undefined') {
+          this.aria('checked', state);
         }
-        shortcut = shortcut.split('+');
-        for (i = 0; i < shortcut.length; i++) {
-          value = replace[shortcut[i].toLowerCase()];
-          if (value) {
-            shortcut[i] = value;
-          }
+        return this._super(state);
+      },
+      remove: function () {
+        this._super();
+        if (this.menu) {
+          this.menu.remove();
         }
-        return shortcut.join('+');
       }
-      function escapeRegExp(str) {
-        return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+    });
+
+    var Radio = Checkbox.extend({
+      Defaults: {
+        classes: 'radio',
+        role: 'radio'
       }
-      function markMatches(text) {
-        var match = settings.match || '';
-        return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {
-          return '!mce~match[' + match + ']mce~match!';
-        }) : text;
-      }
-      function boldMatches(text) {
-        return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');
-      }
-      if (icon) {
-        self.parent().classes.add('menu-has-icons');
-      }
-      if (settings.image) {
-        image = ' style="background-image: url(\'' + settings.image + '\')"';
-      }
-      if (shortcut) {
-        shortcut = convertShortcut(shortcut);
-      }
-      icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
-      iconHtml = text !== '-' ? '<i class="' + icon + '"' + image + '></i>\xA0' : '';
-      text = boldMatches(self.encode(markMatches(text)));
-      url = boldMatches(self.encode(markMatches(url)));
-      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1">' + iconHtml + (text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') + (shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') + (settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') + (url ? '<div class="' + prefix + 'menu-item-link">' + url + '</div>' : '') + '</div>';
-    },
-    postRender: function () {
-      var self = this, settings = self.settings;
-      var textStyle = settings.textStyle;
-      if (typeof textStyle === 'function') {
-        textStyle = textStyle.call(this);
-      }
-      if (textStyle) {
-        var textElm = self.getEl('text');
-        if (textElm) {
-          textElm.setAttribute('style', textStyle);
-          self._textStyle = textStyle;
+    });
+
+    var ResizeHandle = Widget.extend({
+      renderHtml: function () {
+        var self = this, prefix = self.classPrefix;
+        self.classes.add('resizehandle');
+        if (self.settings.direction === 'both') {
+          self.classes.add('resizehandle-both');
         }
-      }
-      self.on('mouseenter click', function (e) {
-        if (e.control === self) {
-          if (!settings.menu && e.type === 'click') {
-            self.fire('select');
-            global$3.requestAnimationFrame(function () {
-              self.parent().hideAll();
-            });
-          } else {
-            self.showMenu();
-            if (e.aria) {
-              self.menu.focus(true);
+        self.canFocus = false;
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + '<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.resizeDragHelper = new DragHelper(this._id, {
+          start: function () {
+            self.fire('ResizeStart');
+          },
+          drag: function (e) {
+            if (self.settings.direction !== 'both') {
+              e.deltaX = 0;
             }
+            self.fire('Resize', e);
+          },
+          stop: function () {
+            self.fire('ResizeEnd');
           }
+        });
+      },
+      remove: function () {
+        if (this.resizeDragHelper) {
+          this.resizeDragHelper.destroy();
         }
-      });
-      self._super();
-      return self;
-    },
-    hover: function () {
-      var self = this;
-      self.parent().items().each(function (ctrl) {
-        ctrl.classes.remove('selected');
-      });
-      self.classes.toggle('selected', true);
-      return self;
-    },
-    active: function (state) {
-      toggleTextStyle(this, state);
-      if (typeof state !== 'undefined') {
-        this.aria('checked', state);
+        return this._super();
       }
-      return this._super(state);
-    },
-    remove: function () {
-      this._super();
-      if (this.menu) {
-        this.menu.remove();
-      }
-    }
-  });
+    });
 
-  var Radio = Checkbox.extend({
-    Defaults: {
-      classes: 'radio',
-      role: 'radio'
-    }
-  });
-
-  var ResizeHandle = Widget.extend({
-    renderHtml: function () {
-      var self = this, prefix = self.classPrefix;
-      self.classes.add('resizehandle');
-      if (self.settings.direction === 'both') {
-        self.classes.add('resizehandle-both');
-      }
-      self.canFocus = false;
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.resizeDragHelper = new DragHelper(this._id, {
-        start: function () {
-          self.fire('ResizeStart');
-        },
-        drag: function (e) {
-          if (self.settings.direction !== 'both') {
-            e.deltaX = 0;
-          }
-          self.fire('Resize', e);
-        },
-        stop: function () {
-          self.fire('ResizeEnd');
+    function createOptions(options) {
+      var strOptions = '';
+      if (options) {
+        for (var i = 0; i < options.length; i++) {
+          strOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';
         }
-      });
-    },
-    remove: function () {
-      if (this.resizeDragHelper) {
-        this.resizeDragHelper.destroy();
       }
-      return this._super();
+      return strOptions;
     }
-  });
-
-  function createOptions(options) {
-    var strOptions = '';
-    if (options) {
-      for (var i = 0; i < options.length; i++) {
-        strOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';
-      }
-    }
-    return strOptions;
-  }
-  var SelectBox = Widget.extend({
-    Defaults: {
-      classes: 'selectbox',
-      role: 'selectbox',
-      options: []
-    },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      if (self.settings.size) {
-        self.size = self.settings.size;
-      }
-      if (self.settings.options) {
-        self._options = self.settings.options;
-      }
-      self.on('keydown', function (e) {
-        var rootControl;
-        if (e.keyCode === 13) {
-          e.preventDefault();
-          self.parents().reverse().each(function (ctrl) {
-            if (ctrl.toJSON) {
-              rootControl = ctrl;
-              return false;
-            }
-          });
-          self.fire('submit', { data: rootControl.toJSON() });
+    var SelectBox = Widget.extend({
+      Defaults: {
+        classes: 'selectbox',
+        role: 'selectbox',
+        options: []
+      },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        if (self.settings.size) {
+          self.size = self.settings.size;
         }
-      });
-    },
-    options: function (state) {
-      if (!arguments.length) {
-        return this.state.get('options');
-      }
-      this.state.set('options', state);
-      return this;
-    },
-    renderHtml: function () {
-      var self = this;
-      var options, size = '';
-      options = createOptions(self._options);
-      if (self.size) {
-        size = ' size = "' + self.size + '"';
-      }
-      return '<select id="' + self._id + '" class="' + self.classes + '"' + size + '>' + options + '</select>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:options', function (e) {
-        self.getEl().innerHTML = createOptions(e.value);
-      });
-      return self._super();
-    }
-  });
-
-  function constrain(value, minVal, maxVal) {
-    if (value < minVal) {
-      value = minVal;
-    }
-    if (value > maxVal) {
-      value = maxVal;
-    }
-    return value;
-  }
-  function setAriaProp(el, name, value) {
-    el.setAttribute('aria-' + name, value);
-  }
-  function updateSliderHandle(ctrl, value) {
-    var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;
-    if (ctrl.settings.orientation === 'v') {
-      stylePosName = 'top';
-      sizeName = 'height';
-      shortSizeName = 'h';
-    } else {
-      stylePosName = 'left';
-      sizeName = 'width';
-      shortSizeName = 'w';
-    }
-    handleEl = ctrl.getEl('handle');
-    maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
-    styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';
-    handleEl.style[stylePosName] = styleValue;
-    handleEl.style.height = ctrl.layoutRect().h + 'px';
-    setAriaProp(handleEl, 'valuenow', value);
-    setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));
-    setAriaProp(handleEl, 'valuemin', ctrl._minValue);
-    setAriaProp(handleEl, 'valuemax', ctrl._maxValue);
-  }
-  var Slider = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      if (!settings.previewFilter) {
-        settings.previewFilter = function (value) {
-          return Math.round(value * 100) / 100;
-        };
-      }
-      self._super(settings);
-      self.classes.add('slider');
-      if (settings.orientation === 'v') {
-        self.classes.add('vertical');
-      }
-      self._minValue = isNumber$1(settings.minValue) ? settings.minValue : 0;
-      self._maxValue = isNumber$1(settings.maxValue) ? settings.maxValue : 100;
-      self._initValue = self.state.get('value');
-    },
-    renderHtml: function () {
-      var self = this, id = self._id, prefix = self.classPrefix;
-      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-handle" class="' + prefix + 'slider-handle" role="slider" tabindex="-1"></div>' + '</div>';
-    },
-    reset: function () {
-      this.value(this._initValue).repaint();
-    },
-    postRender: function () {
-      var self = this;
-      var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;
-      function toFraction(min, max, val) {
-        return (val + min) / (max - min);
-      }
-      function fromFraction(min, max, val) {
-        return val * (max - min) - min;
-      }
-      function handleKeyboard(minValue, maxValue) {
-        function alter(delta) {
-          var value;
-          value = self.value();
-          value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);
-          value = constrain(value, minValue, maxValue);
-          self.value(value);
-          self.fire('dragstart', { value: value });
-          self.fire('drag', { value: value });
-          self.fire('dragend', { value: value });
+        if (self.settings.options) {
+          self._options = self.settings.options;
         }
         self.on('keydown', function (e) {
-          switch (e.keyCode) {
-          case 37:
-          case 38:
-            alter(-1);
-            break;
-          case 39:
-          case 40:
-            alter(1);
-            break;
+          var rootControl;
+          if (e.keyCode === 13) {
+            e.preventDefault();
+            self.parents().reverse().each(function (ctrl) {
+              if (ctrl.toJSON) {
+                rootControl = ctrl;
+                return false;
+              }
+            });
+            self.fire('submit', { data: rootControl.toJSON() });
           }
         });
-      }
-      function handleDrag(minValue, maxValue, handleEl) {
-        var startPos, startHandlePos, maxHandlePos, handlePos, value;
-        self._dragHelper = new DragHelper(self._id, {
-          handle: self._id + '-handle',
-          start: function (e) {
-            startPos = e[screenCordName];
-            startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);
-            maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
-            self.fire('dragstart', { value: value });
-          },
-          drag: function (e) {
-            var delta = e[screenCordName] - startPos;
-            handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);
-            handleEl.style[stylePosName] = handlePos + 'px';
-            value = minValue + handlePos / maxHandlePos * (maxValue - minValue);
-            self.value(value);
-            self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');
-            self.fire('drag', { value: value });
-          },
-          stop: function () {
-            self.tooltip().hide();
-            self.fire('dragend', { value: value });
-          }
+      },
+      options: function (state) {
+        if (!arguments.length) {
+          return this.state.get('options');
+        }
+        this.state.set('options', state);
+        return this;
+      },
+      renderHtml: function () {
+        var self = this;
+        var options, size = '';
+        options = createOptions(self._options);
+        if (self.size) {
+          size = ' size = "' + self.size + '"';
+        }
+        return '<select id="' + self._id + '" class="' + self.classes + '"' + size + '>' + options + '</select>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:options', function (e) {
+          self.getEl().innerHTML = createOptions(e.value);
         });
+        return self._super();
       }
-      minValue = self._minValue;
-      maxValue = self._maxValue;
-      if (self.settings.orientation === 'v') {
-        screenCordName = 'screenY';
+    });
+
+    function constrain(value, minVal, maxVal) {
+      if (value < minVal) {
+        value = minVal;
+      }
+      if (value > maxVal) {
+        value = maxVal;
+      }
+      return value;
+    }
+    function setAriaProp(el, name, value) {
+      el.setAttribute('aria-' + name, value);
+    }
+    function updateSliderHandle(ctrl, value) {
+      var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;
+      if (ctrl.settings.orientation === 'v') {
         stylePosName = 'top';
         sizeName = 'height';
         shortSizeName = 'h';
       } else {
-        screenCordName = 'screenX';
         stylePosName = 'left';
         sizeName = 'width';
         shortSizeName = 'w';
       }
-      self._super();
-      handleKeyboard(minValue, maxValue);
-      handleDrag(minValue, maxValue, self.getEl('handle'));
-    },
-    repaint: function () {
-      this._super();
-      updateSliderHandle(this, this.value());
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:value', function (e) {
-        updateSliderHandle(self, e.value);
-      });
-      return self._super();
+      handleEl = ctrl.getEl('handle');
+      maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
+      styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';
+      handleEl.style[stylePosName] = styleValue;
+      handleEl.style.height = ctrl.layoutRect().h + 'px';
+      setAriaProp(handleEl, 'valuenow', value);
+      setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));
+      setAriaProp(handleEl, 'valuemin', ctrl._minValue);
+      setAriaProp(handleEl, 'valuemax', ctrl._maxValue);
     }
-  });
+    var Slider = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        if (!settings.previewFilter) {
+          settings.previewFilter = function (value) {
+            return Math.round(value * 100) / 100;
+          };
+        }
+        self._super(settings);
+        self.classes.add('slider');
+        if (settings.orientation === 'v') {
+          self.classes.add('vertical');
+        }
+        self._minValue = isNumber$1(settings.minValue) ? settings.minValue : 0;
+        self._maxValue = isNumber$1(settings.maxValue) ? settings.maxValue : 100;
+        self._initValue = self.state.get('value');
+      },
+      renderHtml: function () {
+        var self = this, id = self._id, prefix = self.classPrefix;
+        return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-handle" class="' + prefix + 'slider-handle" role="slider" tabindex="-1"></div>' + '</div>';
+      },
+      reset: function () {
+        this.value(this._initValue).repaint();
+      },
+      postRender: function () {
+        var self = this;
+        var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;
+        function toFraction(min, max, val) {
+          return (val + min) / (max - min);
+        }
+        function fromFraction(min, max, val) {
+          return val * (max - min) - min;
+        }
+        function handleKeyboard(minValue, maxValue) {
+          function alter(delta) {
+            var value;
+            value = self.value();
+            value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);
+            value = constrain(value, minValue, maxValue);
+            self.value(value);
+            self.fire('dragstart', { value: value });
+            self.fire('drag', { value: value });
+            self.fire('dragend', { value: value });
+          }
+          self.on('keydown', function (e) {
+            switch (e.keyCode) {
+            case 37:
+            case 38:
+              alter(-1);
+              break;
+            case 39:
+            case 40:
+              alter(1);
+              break;
+            }
+          });
+        }
+        function handleDrag(minValue, maxValue, handleEl) {
+          var startPos, startHandlePos, maxHandlePos, handlePos, value;
+          self._dragHelper = new DragHelper(self._id, {
+            handle: self._id + '-handle',
+            start: function (e) {
+              startPos = e[screenCordName];
+              startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);
+              maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
+              self.fire('dragstart', { value: value });
+            },
+            drag: function (e) {
+              var delta = e[screenCordName] - startPos;
+              handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);
+              handleEl.style[stylePosName] = handlePos + 'px';
+              value = minValue + handlePos / maxHandlePos * (maxValue - minValue);
+              self.value(value);
+              self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');
+              self.fire('drag', { value: value });
+            },
+            stop: function () {
+              self.tooltip().hide();
+              self.fire('dragend', { value: value });
+            }
+          });
+        }
+        minValue = self._minValue;
+        maxValue = self._maxValue;
+        if (self.settings.orientation === 'v') {
+          screenCordName = 'screenY';
+          stylePosName = 'top';
+          sizeName = 'height';
+          shortSizeName = 'h';
+        } else {
+          screenCordName = 'screenX';
+          stylePosName = 'left';
+          sizeName = 'width';
+          shortSizeName = 'w';
+        }
+        self._super();
+        handleKeyboard(minValue, maxValue);
+        handleDrag(minValue, maxValue, self.getEl('handle'));
+      },
+      repaint: function () {
+        this._super();
+        updateSliderHandle(this, this.value());
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:value', function (e) {
+          updateSliderHandle(self, e.value);
+        });
+        return self._super();
+      }
+    });
 
-  var Spacer = Widget.extend({
-    renderHtml: function () {
-      var self = this;
-      self.classes.add('spacer');
-      self.canFocus = false;
-      return '<div id="' + self._id + '" class="' + self.classes + '"></div>';
-    }
-  });
+    var Spacer = Widget.extend({
+      renderHtml: function () {
+        var self = this;
+        self.classes.add('spacer');
+        self.canFocus = false;
+        return '<div id="' + self._id + '" class="' + self.classes + '"></div>';
+      }
+    });
 
-  var SplitButton = MenuButton.extend({
-    Defaults: {
-      classes: 'widget btn splitbtn',
-      role: 'button'
-    },
-    repaint: function () {
-      var self$$1 = this;
-      var elm = self$$1.getEl();
-      var rect = self$$1.layoutRect();
-      var mainButtonElm, menuButtonElm;
-      self$$1._super();
-      mainButtonElm = elm.firstChild;
-      menuButtonElm = elm.lastChild;
-      global$7(mainButtonElm).css({
-        width: rect.w - funcs.getSize(menuButtonElm).width,
-        height: rect.h - 2
-      });
-      global$7(menuButtonElm).css({ height: rect.h - 2 });
-      return self$$1;
-    },
-    activeMenu: function (state) {
-      var self$$1 = this;
-      global$7(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);
-    },
-    renderHtml: function () {
-      var self$$1 = this;
-      var id = self$$1._id;
-      var prefix = self$$1.classPrefix;
-      var image;
-      var icon = self$$1.state.get('icon');
-      var text = self$$1.state.get('text');
-      var settings = self$$1.settings;
-      var textHtml = '', ariaPressed;
-      image = settings.image;
-      if (image) {
-        icon = 'none';
-        if (typeof image !== 'string') {
-          image = window.getSelection ? image[0] : image[1];
+    var SplitButton = MenuButton.extend({
+      Defaults: {
+        classes: 'widget btn splitbtn',
+        role: 'button'
+      },
+      repaint: function () {
+        var self$$1 = this;
+        var elm = self$$1.getEl();
+        var rect = self$$1.layoutRect();
+        var mainButtonElm, menuButtonElm;
+        self$$1._super();
+        mainButtonElm = elm.firstChild;
+        menuButtonElm = elm.lastChild;
+        global$7(mainButtonElm).css({
+          width: rect.w - funcs.getSize(menuButtonElm).width,
+          height: rect.h - 2
+        });
+        global$7(menuButtonElm).css({ height: rect.h - 2 });
+        return self$$1;
+      },
+      activeMenu: function (state) {
+        var self$$1 = this;
+        global$7(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);
+      },
+      renderHtml: function () {
+        var self$$1 = this;
+        var id = self$$1._id;
+        var prefix = self$$1.classPrefix;
+        var image;
+        var icon = self$$1.state.get('icon');
+        var text = self$$1.state.get('text');
+        var settings = self$$1.settings;
+        var textHtml = '', ariaPressed;
+        image = settings.image;
+        if (image) {
+          icon = 'none';
+          if (typeof image !== 'string') {
+            image = window.getSelection ? image[0] : image[1];
+          }
+          image = ' style="background-image: url(\'' + image + '\')"';
+        } else {
+          image = '';
         }
-        image = ' style="background-image: url(\'' + image + '\')"';
-      } else {
-        image = '';
-      }
-      icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-      if (text) {
-        self$$1.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
-      }
-      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
-      return '<div id="' + id + '" class="' + self$$1.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self$$1._menuBtnText ? (icon ? '\xA0' : '') + self$$1._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
-    },
-    postRender: function () {
-      var self$$1 = this, onClickHandler = self$$1.settings.onclick;
-      self$$1.on('click', function (e) {
-        var node = e.target;
-        if (e.control === this) {
-          while (node) {
-            if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {
-              e.stopImmediatePropagation();
-              if (onClickHandler) {
-                onClickHandler.call(this, e);
+        icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        if (text) {
+          self$$1.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
+        }
+        ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
+        return '<div id="' + id + '" class="' + self$$1.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self$$1._menuBtnText ? (icon ? '\xA0' : '') + self$$1._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
+      },
+      postRender: function () {
+        var self$$1 = this, onClickHandler = self$$1.settings.onclick;
+        self$$1.on('click', function (e) {
+          var node = e.target;
+          if (e.control === this) {
+            while (node) {
+              if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {
+                e.stopImmediatePropagation();
+                if (onClickHandler) {
+                  onClickHandler.call(this, e);
+                }
+                return;
               }
-              return;
+              node = node.parentNode;
             }
-            node = node.parentNode;
           }
-        }
-      });
-      delete self$$1.settings.onclick;
-      return self$$1._super();
-    }
-  });
+        });
+        delete self$$1.settings.onclick;
+        return self$$1._super();
+      }
+    });
 
-  var StackLayout = FlowLayout.extend({
-    Defaults: {
-      containerClass: 'stack-layout',
-      controlClass: 'stack-layout-item',
-      endClass: 'break'
-    },
-    isNative: function () {
-      return true;
-    }
-  });
+    var StackLayout = FlowLayout.extend({
+      Defaults: {
+        containerClass: 'stack-layout',
+        controlClass: 'stack-layout-item',
+        endClass: 'break'
+      },
+      isNative: function () {
+        return true;
+      }
+    });
 
-  var TabPanel = Panel.extend({
-    Defaults: {
-      layout: 'absolute',
-      defaults: { type: 'panel' }
-    },
-    activateTab: function (idx) {
-      var activeTabElm;
-      if (this.activeTabId) {
-        activeTabElm = this.getEl(this.activeTabId);
-        global$7(activeTabElm).removeClass(this.classPrefix + 'active');
-        activeTabElm.setAttribute('aria-selected', 'false');
-      }
-      this.activeTabId = 't' + idx;
-      activeTabElm = this.getEl('t' + idx);
-      activeTabElm.setAttribute('aria-selected', 'true');
-      global$7(activeTabElm).addClass(this.classPrefix + 'active');
-      this.items()[idx].show().fire('showtab');
-      this.reflow();
-      this.items().each(function (item, i) {
-        if (idx !== i) {
-          item.hide();
+    var TabPanel = Panel.extend({
+      Defaults: {
+        layout: 'absolute',
+        defaults: { type: 'panel' }
+      },
+      activateTab: function (idx) {
+        var activeTabElm;
+        if (this.activeTabId) {
+          activeTabElm = this.getEl(this.activeTabId);
+          global$7(activeTabElm).removeClass(this.classPrefix + 'active');
+          activeTabElm.setAttribute('aria-selected', 'false');
         }
-      });
-    },
-    renderHtml: function () {
-      var self = this;
-      var layout = self._layout;
-      var tabsHtml = '';
-      var prefix = self.classPrefix;
-      self.preRender();
-      layout.preRender(self);
-      self.items().each(function (ctrl, i) {
-        var id = self._id + '-t' + i;
-        ctrl.aria('role', 'tabpanel');
-        ctrl.aria('labelledby', id);
-        tabsHtml += '<div id="' + id + '" class="' + prefix + 'tab" ' + 'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' + self.encode(ctrl.settings.title) + '</div>';
-      });
-      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + '<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' + tabsHtml + '</div>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.settings.activeTab = self.settings.activeTab || 0;
-      self.activateTab(self.settings.activeTab);
-      this.on('click', function (e) {
-        var targetParent = e.target.parentNode;
-        if (targetParent && targetParent.id === self._id + '-head') {
-          var i = targetParent.childNodes.length;
-          while (i--) {
-            if (targetParent.childNodes[i] === e.target) {
-              self.activateTab(i);
-            }
+        this.activeTabId = 't' + idx;
+        activeTabElm = this.getEl('t' + idx);
+        activeTabElm.setAttribute('aria-selected', 'true');
+        global$7(activeTabElm).addClass(this.classPrefix + 'active');
+        this.items()[idx].show().fire('showtab');
+        this.reflow();
+        this.items().each(function (item, i) {
+          if (idx !== i) {
+            item.hide();
           }
-        }
-      });
-    },
-    initLayoutRect: function () {
-      var self = this;
-      var rect, minW, minH;
-      minW = funcs.getSize(self.getEl('head')).width;
-      minW = minW < 0 ? 0 : minW;
-      minH = 0;
-      self.items().each(function (item) {
-        minW = Math.max(minW, item.layoutRect().minW);
-        minH = Math.max(minH, item.layoutRect().minH);
-      });
-      self.items().each(function (ctrl) {
-        ctrl.settings.x = 0;
-        ctrl.settings.y = 0;
-        ctrl.settings.w = minW;
-        ctrl.settings.h = minH;
-        ctrl.layoutRect({
-          x: 0,
-          y: 0,
-          w: minW,
-          h: minH
         });
-      });
-      var headH = funcs.getSize(self.getEl('head')).height;
-      self.settings.minWidth = minW;
-      self.settings.minHeight = minH + headH;
-      rect = self._super();
-      rect.deltaH += headH;
-      rect.innerH = rect.h - rect.deltaH;
-      return rect;
-    }
-  });
-
-  var TextBox = Widget.extend({
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      self$$1.classes.add('textbox');
-      if (settings.multiline) {
-        self$$1.classes.add('multiline');
-      } else {
-        self$$1.on('keydown', function (e) {
-          var rootControl;
-          if (e.keyCode === 13) {
-            e.preventDefault();
-            self$$1.parents().reverse().each(function (ctrl) {
-              if (ctrl.toJSON) {
-                rootControl = ctrl;
-                return false;
+      },
+      renderHtml: function () {
+        var self = this;
+        var layout = self._layout;
+        var tabsHtml = '';
+        var prefix = self.classPrefix;
+        self.preRender();
+        layout.preRender(self);
+        self.items().each(function (ctrl, i) {
+          var id = self._id + '-t' + i;
+          ctrl.aria('role', 'tabpanel');
+          ctrl.aria('labelledby', id);
+          tabsHtml += '<div id="' + id + '" class="' + prefix + 'tab" ' + 'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' + self.encode(ctrl.settings.title) + '</div>';
+        });
+        return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + '<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' + tabsHtml + '</div>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.settings.activeTab = self.settings.activeTab || 0;
+        self.activateTab(self.settings.activeTab);
+        this.on('click', function (e) {
+          var targetParent = e.target.parentNode;
+          if (targetParent && targetParent.id === self._id + '-head') {
+            var i = targetParent.childNodes.length;
+            while (i--) {
+              if (targetParent.childNodes[i] === e.target) {
+                self.activateTab(i);
               }
-            });
-            self$$1.fire('submit', { data: rootControl.toJSON() });
+            }
           }
         });
-        self$$1.on('keyup', function (e) {
+      },
+      initLayoutRect: function () {
+        var self = this;
+        var rect, minW, minH;
+        minW = funcs.getSize(self.getEl('head')).width;
+        minW = minW < 0 ? 0 : minW;
+        minH = 0;
+        self.items().each(function (item) {
+          minW = Math.max(minW, item.layoutRect().minW);
+          minH = Math.max(minH, item.layoutRect().minH);
+        });
+        self.items().each(function (ctrl) {
+          ctrl.settings.x = 0;
+          ctrl.settings.y = 0;
+          ctrl.settings.w = minW;
+          ctrl.settings.h = minH;
+          ctrl.layoutRect({
+            x: 0,
+            y: 0,
+            w: minW,
+            h: minH
+          });
+        });
+        var headH = funcs.getSize(self.getEl('head')).height;
+        self.settings.minWidth = minW;
+        self.settings.minHeight = minH + headH;
+        rect = self._super();
+        rect.deltaH += headH;
+        rect.innerH = rect.h - rect.deltaH;
+        return rect;
+      }
+    });
+
+    var TextBox = Widget.extend({
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        self$$1.classes.add('textbox');
+        if (settings.multiline) {
+          self$$1.classes.add('multiline');
+        } else {
+          self$$1.on('keydown', function (e) {
+            var rootControl;
+            if (e.keyCode === 13) {
+              e.preventDefault();
+              self$$1.parents().reverse().each(function (ctrl) {
+                if (ctrl.toJSON) {
+                  rootControl = ctrl;
+                  return false;
+                }
+              });
+              self$$1.fire('submit', { data: rootControl.toJSON() });
+            }
+          });
+          self$$1.on('keyup', function (e) {
+            self$$1.state.set('value', e.target.value);
+          });
+        }
+      },
+      repaint: function () {
+        var self$$1 = this;
+        var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;
+        style = self$$1.getEl().style;
+        rect = self$$1._layoutRect;
+        lastRepaintRect = self$$1._lastRepaintRect || {};
+        var doc = document;
+        if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+          style.lineHeight = rect.h - borderH + 'px';
+        }
+        borderBox = self$$1.borderBox;
+        borderW = borderBox.left + borderBox.right + 8;
+        borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);
+        if (rect.x !== lastRepaintRect.x) {
+          style.left = rect.x + 'px';
+          lastRepaintRect.x = rect.x;
+        }
+        if (rect.y !== lastRepaintRect.y) {
+          style.top = rect.y + 'px';
+          lastRepaintRect.y = rect.y;
+        }
+        if (rect.w !== lastRepaintRect.w) {
+          style.width = rect.w - borderW + 'px';
+          lastRepaintRect.w = rect.w;
+        }
+        if (rect.h !== lastRepaintRect.h) {
+          style.height = rect.h - borderH + 'px';
+          lastRepaintRect.h = rect.h;
+        }
+        self$$1._lastRepaintRect = lastRepaintRect;
+        self$$1.fire('repaint', {}, false);
+        return self$$1;
+      },
+      renderHtml: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var attrs, elm;
+        attrs = {
+          id: self$$1._id,
+          hidefocus: '1'
+        };
+        global$4.each([
+          'rows',
+          'spellcheck',
+          'maxLength',
+          'size',
+          'readonly',
+          'min',
+          'max',
+          'step',
+          'list',
+          'pattern',
+          'placeholder',
+          'required',
+          'multiple'
+        ], function (name$$1) {
+          attrs[name$$1] = settings[name$$1];
+        });
+        if (self$$1.disabled()) {
+          attrs.disabled = 'disabled';
+        }
+        if (settings.subtype) {
+          attrs.type = settings.subtype;
+        }
+        elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);
+        elm.value = self$$1.state.get('value');
+        elm.className = self$$1.classes.toString();
+        return elm.outerHTML;
+      },
+      value: function (value) {
+        if (arguments.length) {
+          this.state.set('value', value);
+          return this;
+        }
+        if (this.state.get('rendered')) {
+          this.state.set('value', this.getEl().value);
+        }
+        return this.state.get('value');
+      },
+      postRender: function () {
+        var self$$1 = this;
+        self$$1.getEl().value = self$$1.state.get('value');
+        self$$1._super();
+        self$$1.$el.on('change', function (e) {
           self$$1.state.set('value', e.target.value);
+          self$$1.fire('change', e);
         });
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        self$$1.state.on('change:value', function (e) {
+          if (self$$1.getEl().value !== e.value) {
+            self$$1.getEl().value = e.value;
+          }
+        });
+        self$$1.state.on('change:disabled', function (e) {
+          self$$1.getEl().disabled = e.value;
+        });
+        return self$$1._super();
+      },
+      remove: function () {
+        this.$el.off();
+        this._super();
       }
-    },
-    repaint: function () {
-      var self$$1 = this;
-      var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;
-      style = self$$1.getEl().style;
-      rect = self$$1._layoutRect;
-      lastRepaintRect = self$$1._lastRepaintRect || {};
-      var doc = document;
-      if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
-        style.lineHeight = rect.h - borderH + 'px';
-      }
-      borderBox = self$$1.borderBox;
-      borderW = borderBox.left + borderBox.right + 8;
-      borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);
-      if (rect.x !== lastRepaintRect.x) {
-        style.left = rect.x + 'px';
-        lastRepaintRect.x = rect.x;
-      }
-      if (rect.y !== lastRepaintRect.y) {
-        style.top = rect.y + 'px';
-        lastRepaintRect.y = rect.y;
-      }
-      if (rect.w !== lastRepaintRect.w) {
-        style.width = rect.w - borderW + 'px';
-        lastRepaintRect.w = rect.w;
-      }
-      if (rect.h !== lastRepaintRect.h) {
-        style.height = rect.h - borderH + 'px';
-        lastRepaintRect.h = rect.h;
-      }
-      self$$1._lastRepaintRect = lastRepaintRect;
-      self$$1.fire('repaint', {}, false);
-      return self$$1;
-    },
-    renderHtml: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var attrs, elm;
-      attrs = {
-        id: self$$1._id,
-        hidefocus: '1'
+    });
+
+    var getApi = function () {
+      return {
+        Selector: Selector,
+        Collection: Collection$2,
+        ReflowQueue: ReflowQueue,
+        Control: Control$1,
+        Factory: global$b,
+        KeyboardNavigation: KeyboardNavigation,
+        Container: Container,
+        DragHelper: DragHelper,
+        Scrollable: Scrollable,
+        Panel: Panel,
+        Movable: Movable,
+        Resizable: Resizable,
+        FloatPanel: FloatPanel,
+        Window: Window$$1,
+        MessageBox: MessageBox,
+        Tooltip: Tooltip,
+        Widget: Widget,
+        Progress: Progress,
+        Notification: Notification,
+        Layout: Layout$1,
+        AbsoluteLayout: AbsoluteLayout,
+        Button: Button,
+        ButtonGroup: ButtonGroup,
+        Checkbox: Checkbox,
+        ComboBox: ComboBox,
+        ColorBox: ColorBox,
+        PanelButton: PanelButton,
+        ColorButton: ColorButton,
+        ColorPicker: ColorPicker,
+        Path: Path,
+        ElementPath: ElementPath,
+        FormItem: FormItem,
+        Form: Form,
+        FieldSet: FieldSet,
+        FilePicker: FilePicker,
+        FitLayout: FitLayout,
+        FlexLayout: FlexLayout,
+        FlowLayout: FlowLayout,
+        FormatControls: FormatControls,
+        GridLayout: GridLayout,
+        Iframe: Iframe,
+        InfoBox: InfoBox,
+        Label: Label,
+        Toolbar: Toolbar$1,
+        MenuBar: MenuBar,
+        MenuButton: MenuButton,
+        MenuItem: MenuItem,
+        Throbber: Throbber,
+        Menu: Menu,
+        ListBox: ListBox,
+        Radio: Radio,
+        ResizeHandle: ResizeHandle,
+        SelectBox: SelectBox,
+        Slider: Slider,
+        Spacer: Spacer,
+        SplitButton: SplitButton,
+        StackLayout: StackLayout,
+        TabPanel: TabPanel,
+        TextBox: TextBox,
+        DropZone: DropZone,
+        BrowseButton: BrowseButton
       };
-      global$4.each([
-        'rows',
-        'spellcheck',
-        'maxLength',
-        'size',
-        'readonly',
-        'min',
-        'max',
-        'step',
-        'list',
-        'pattern',
-        'placeholder',
-        'required',
-        'multiple'
-      ], function (name$$1) {
-        attrs[name$$1] = settings[name$$1];
-      });
-      if (self$$1.disabled()) {
-        attrs.disabled = 'disabled';
+    };
+    var appendTo = function (target) {
+      if (target.ui) {
+        global$4.each(getApi(), function (ref, key) {
+          target.ui[key] = ref;
+        });
+      } else {
+        target.ui = getApi();
       }
-      if (settings.subtype) {
-        attrs.type = settings.subtype;
-      }
-      elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);
-      elm.value = self$$1.state.get('value');
-      elm.className = self$$1.classes.toString();
-      return elm.outerHTML;
-    },
-    value: function (value) {
-      if (arguments.length) {
-        this.state.set('value', value);
-        return this;
-      }
-      if (this.state.get('rendered')) {
-        this.state.set('value', this.getEl().value);
-      }
-      return this.state.get('value');
-    },
-    postRender: function () {
-      var self$$1 = this;
-      self$$1.getEl().value = self$$1.state.get('value');
-      self$$1._super();
-      self$$1.$el.on('change', function (e) {
-        self$$1.state.set('value', e.target.value);
-        self$$1.fire('change', e);
-      });
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      self$$1.state.on('change:value', function (e) {
-        if (self$$1.getEl().value !== e.value) {
-          self$$1.getEl().value = e.value;
-        }
-      });
-      self$$1.state.on('change:disabled', function (e) {
-        self$$1.getEl().disabled = e.value;
-      });
-      return self$$1._super();
-    },
-    remove: function () {
-      this.$el.off();
-      this._super();
-    }
-  });
-
-  var getApi = function () {
-    return {
-      Selector: Selector,
-      Collection: Collection$2,
-      ReflowQueue: $_cqjgb518wjjgwek2f,
-      Control: Control$1,
-      Factory: global$11,
-      KeyboardNavigation: KeyboardNavigation,
-      Container: Container,
-      DragHelper: DragHelper,
-      Scrollable: $_8woeth19ajjgwek4b,
-      Panel: Panel,
-      Movable: $_8zu82i18yjjgwek2l,
-      Resizable: $_20hy1119bjjgwek4f,
-      FloatPanel: FloatPanel,
-      Window: Window$$1,
-      MessageBox: MessageBox,
-      Tooltip: Tooltip,
-      Widget: Widget,
-      Progress: Progress,
-      Notification: Notification,
-      Layout: Layout$1,
-      AbsoluteLayout: AbsoluteLayout,
-      Button: Button,
-      ButtonGroup: ButtonGroup,
-      Checkbox: Checkbox,
-      ComboBox: ComboBox,
-      ColorBox: ColorBox,
-      PanelButton: PanelButton,
-      ColorButton: ColorButton,
-      ColorPicker: ColorPicker,
-      Path: Path,
-      ElementPath: ElementPath,
-      FormItem: FormItem,
-      Form: Form,
-      FieldSet: FieldSet,
-      FilePicker: FilePicker,
-      FitLayout: FitLayout,
-      FlexLayout: FlexLayout,
-      FlowLayout: FlowLayout,
-      FormatControls: $_gg6ikw1bejjgwekc5,
-      GridLayout: GridLayout,
-      Iframe: Iframe,
-      InfoBox: InfoBox,
-      Label: Label,
-      Toolbar: Toolbar$1,
-      MenuBar: MenuBar,
-      MenuButton: MenuButton,
-      MenuItem: MenuItem,
-      Throbber: Throbber,
-      Menu: Menu,
-      ListBox: ListBox,
-      Radio: Radio,
-      ResizeHandle: ResizeHandle,
-      SelectBox: SelectBox,
-      Slider: Slider,
-      Spacer: Spacer,
-      SplitButton: SplitButton,
-      StackLayout: StackLayout,
-      TabPanel: TabPanel,
-      TextBox: TextBox,
-      DropZone: DropZone,
-      BrowseButton: BrowseButton
     };
-  };
-  var appendTo = function (target) {
-    if (target.ui) {
+    var registerToFactory = function () {
       global$4.each(getApi(), function (ref, key) {
-        target.ui[key] = ref;
+        global$b.add(key, ref);
       });
-    } else {
-      target.ui = getApi();
+    };
+    var Api = {
+      appendTo: appendTo,
+      registerToFactory: registerToFactory
+    };
+
+    Api.registerToFactory();
+    Api.appendTo(window.tinymce ? window.tinymce : {});
+    global.add('inlite', function (editor) {
+      var panel = create$3();
+      FormatControls.setup(editor);
+      Buttons.addToEditor(editor, panel);
+      return ThemeApi.get(editor, panel);
+    });
+    function Theme () {
     }
-  };
-  var registerToFactory = function () {
-    global$4.each(getApi(), function (ref, key) {
-      global$11.add(key, ref);
-    });
-  };
-  var Api = {
-    appendTo: appendTo,
-    registerToFactory: registerToFactory
-  };
 
-  Api.registerToFactory();
-  Api.appendTo(window.tinymce ? window.tinymce : {});
-  global.add('inlite', function (editor) {
-    var panel = create$3();
-    $_gg6ikw1bejjgwekc5.setup(editor);
-    $_epdxt419djjgwek4l.addToEditor(editor, panel);
-    return $_7y4x3k17sjjgwejyw.get(editor, panel);
-  });
-  function Theme () {
-  }
+    return Theme;
 
-  return Theme;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/themes/inlite/theme.min.js	(working copy)
@@ -1 +1 @@
-!function(){"use strict";var u,t,e,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.util.Delay"),s=function(t){return t.reduce(function(t,e){return Array.isArray(e)?t.concat(s(e)):t.concat(e)},[])},a={flatten:s},l=function(t,e){for(var n=0;n<e.length;n++){var i=(0,e[n])(t);if(i)return i}return null},d=function(t,e){return{id:t,rect:e}},f=function(t){return{x:t.left,y:t.top,w:t.width,h:t.height}},m=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}},g=function(t){var e=v.DOM.getViewPort();return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}},p=function(t){var e=t.getBoundingClientRect();return g({x:e.left,y:e.top,w:Math.max(t.clientWidth,t.offsetWidth),h:Math.max(t.clientHeight,t.offsetHeight)})},b=function(t,e){return p(e)},y=function(t){return p(t.getContentAreaContainer()||t.getBody())},x=function(t){var e=t.selection.getBoundingClientRect();return e?g(f(e)):null},w=function(n,i){return function(t){for(var e=0;e<i.length;e++)if(i[e].predicate(n))return d(i[e].id,b(t,n));return null}},_=function(i,r){return function(t){for(var e=0;e<i.length;e++)for(var n=0;n<r.length;n++)if(r[n].predicate(i[e]))return d(r[n].id,b(t,i[e]));return null}},C=tinymce.util.Tools.resolve("tinymce.util.Tools"),R=function(t,e){return{id:t,predicate:e}},E=function(t){return C.map(t,function(t){return R(t.id,t.predicate)})},k=function(e){return function(t){return t.selection.isCollapsed()?null:d(e,x(t))}},T=function(i,r){return function(t){var e,n=t.schema.getTextBlockElements();for(e=0;e<i.length;e++)if("TABLE"===i[e].nodeName)return null;for(e=0;e<i.length;e++)if(i[e].nodeName in n)return t.dom.isEmpty(i[e])?d(r,x(t)):null;return null}},H=function(t){t.fire("SkinLoaded")},M=function(t){return t.fire("BeforeRenderUI")},S=tinymce.util.Tools.resolve("tinymce.EditorManager"),N=function(e){return function(t){return typeof t===e}},O=function(t){return Array.isArray(t)},D=function(t){return N("string")(t)},P=function(t){return N("number")(t)},W=function(t){return N("boolean")(t)},A=function(t){return N("function")(t)},B=(N("object"),O),L=function(t,e){if(e(t))return!0;throw new Error("Default value doesn't match requested type.")},I=function(r){return function(t,e,n){var i=t.settings;return L(n,r),e in i&&r(i[e])?i[e]:n}},z={getStringOr:I(D),getBoolOr:I(W),getNumberOr:I(P),getHandlerOr:I(A),getToolbarItemsOr:(u=B,function(t,e,n){var i,r,o,s,a,l=e in t.settings?t.settings[e]:n;return L(n,u),r=n,B(i=l)?i:D(i)?"string"==typeof(s=i)?(a=/[ ,]/,s.split(a).filter(function(t){return 0<t.length})):s:W(i)?(o=r,!1===i?[]:o):r})},F=tinymce.util.Tools.resolve("tinymce.geom.Rect"),U=function(t,e){return{rect:t,position:e}},V=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=V(r,s),U(a,o)):(n=F.intersect(l,n))?((o=F.findBestRelativePosition(r,n,l,e))?(s=F.relativePosition(r,n,o),a=V(r,s)):a=V(r,n),U(a,o)):null},Y=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)},X=function(t,e,n,i){var r;return"function"==typeof t?(r=t({elementRect:m(e),contentAreaRect:m(n),panelRect:m(i)}),f(r)):i},j=function(t){return t.panelRect},J=function(t){return z.getToolbarItemsOr(t,"selection_toolbar",["bold","italic","|","quicklink","h2","h3","blockquote"])},G=function(t){return z.getToolbarItemsOr(t,"insert_toolbar",["quickimage","quicktable"])},K=function(t){return z.getHandlerOr(t,"inline_toolbar_position_handler",j)},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=S.baseURL+"/skins/",e?n+e:n+"lightgray")},Q=function(t){return!1===t.settings.skin},tt=function(i,r){var t=Z(i),e=function(){var t,e,n;e=r,n=function(){t._skinLoaded=!0,H(t),e()},(t=i).initialized?n():t.on("init",n)};Q(i)?e():(v.DOM.styleSheetLoader.load(t+"/skin.min.css",e),i.contentCSS.push(t+"/content.inline.min.css"))},et=function(t){var e,n,i,r,o=t.contextToolbars;return a.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=E(e),(n=l(t,[w(i[0],r),k("text"),T(i,"insert"),_(i,r)]))&&n.rect?n:null},it=function(i,r){return function(){var t,e,n;i.removed||(n=i,document.activeElement!==n.getBody())||(t=et(i),(e=nt(i,t))?r.show(i,e.id,e.rect,t):r.hide())}},rt=function(t,e){var n,i,r,o,s,a=c.throttle(it(t,e),0),l=c.throttle((r=it(n=t,i=e),function(){n.removed||i.inForm()||r()}),0),u=(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",a),t.on("nodeChange mouseup",l),t.on("ResizeEditor keyup",a),t.on("ResizeWindow",u),v.DOM.bind(h.container,"scroll",u),t.on("remove",function(){v.DOM.unbind(h.container,"scroll",u),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=l(n,[k("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(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},lt=function(t){return function(){return t}},ut=lt(!1),ct=lt(!0),dt=ut,ft=ct,ht=function(){return mt},mt=(i={fold:function(t,e){return t()},is:dt,isSome:dt,isNone:ft,getOr:n=function(t){return t},getOrThunk:e=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:n,orThunk:e,map:ht,ap:ht,each:function(){},bind:ht,flatten:ht,exists:dt,forall:ft,filter:ht,equals:t=function(t){return t.isNone()},equals_:t,toArray:function(){return[]},toString:lt("none()")},Object.freeze&&Object.freeze(i),i),gt=function(n){var t=function(){return n},e=function(){return r},i=function(t){return t(n)},r={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ft,isNone:dt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return gt(t(n))},ap:function(t){return t.fold(ht,function(t){return gt(t(n))})},each:function(t){t(n)},bind:i,flatten:t,exists:i,forall:i,filter:function(t){return t(n)?r:mt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(dt,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},pt={some:gt,none:ht,from:function(t){return null===t||t===undefined?mt:gt(t)}},vt=function(e){return function(t){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}(t)===e}},bt=vt("function"),yt=vt("number"),xt=(r=Array.prototype.indexOf)===undefined?function(t,e){return Tt(t,e)}:function(t,e){return r.call(t,e)},wt=function(t,e){return kt(t,e).isSome()},_t=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},Ct=function(t,e){for(var n=0,i=t.length;n<i;n++)e(t[n],n,t)},Rt=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},Et=function(t,e){for(var n=0,i=t.length;n<i;n++){var r=t[n];if(e(r,n,t))return pt.some(r)}return pt.none()},kt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(e(t[n],n,t))return pt.some(n);return pt.none()},Tt=function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},Ht=Array.prototype.push,Mt=(Array.prototype.slice,bt(Array.from)&&Array.from,0),St={id:function(){return"mceu_"+Mt++},create:function(t,e,n){var i=document.createElement(t);return v.DOM.setAttribs(i,e),"string"==typeof n?i.innerHTML=n:C.each(n,function(t){t.nodeType&&i.appendChild(t)}),i},createFragment:function(t){return v.DOM.createFragment(t)},getWindowSize:function(){return v.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 v.DOM.getPos(t,e||St.getContainer())},getContainer:function(){return h.container?h.container:document.body},getViewPort:function(t){return v.DOM.getViewPort(t)},get:function(t){return document.getElementById(t)},addClass:function(t,e){return v.DOM.addClass(t,e)},removeClass:function(t,e){return v.DOM.removeClass(t,e)},hasClass:function(t,e){return v.DOM.hasClass(t,e)},toggleClass:function(t,e,n){return v.DOM.toggleClass(t,e,n)},css:function(t,e,n){return v.DOM.setStyle(t,e,n)},getRuntimeStyle:function(t,e){return v.DOM.getStyle(t,e,!0)},on:function(t,e,n,i){return v.DOM.bind(t,e,n,i)},off:function(t,e,n){return v.DOM.unbind(t,e,n)},fire:function(t,e,n){return v.DOM.fire(t,e,n)},innerHtml:function(t,e){v.DOM.setHTML(t,e)}},Nt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Ot=tinymce.util.Tools.resolve("tinymce.util.Class"),Dt=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Pt=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})},Wt=function(i,t){function e(t){var e=parseFloat(function(t){var e=i.ownerDocument.defaultView;if(e){var n=e.getComputedStyle(i,null);return n?(t=t.replace(/[A-Z]/g,function(t){return"-"+t}),n.getPropertyValue(t)):null}return i.currentStyle[t]}(t));return isNaN(e)?0:e}return{top:e(t+"TopWidth"),right:e(t+"RightWidth"),bottom:e(t+"BottomWidth"),left:e(t+"LeftWidth")}};function At(){}function Bt(t){this.cls=[],this.cls._map={},this.onchange=t||At,this.prefix=""}C.extend(Bt.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)}}),Bt.prototype.toString=function(){var t;if(this.clsValue)return this.clsValue;t="";for(var e=0;e<this.cls.length;e++)0<e&&(t+=" "),t+=this.prefix+this.cls[e];return t};var Lt,It,zt,Ft=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Ut=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Vt=/^\s*|\s*$/g,qt=Ot.extend({init:function(t){var o=this.match;function s(t,e,n){var i;function r(t){t&&e.push(t)}return r(function(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}((i=Ft.exec(t.replace(Vt,"")))[1])),r(function(e){if(e)return function(t){return t._name===e}}(i[2])),r(function(n){if(n)return n=n.split("."),function(t){for(var e=n.length;e--;)if(!t.classes.contains(n[e]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(t){var e=t[n]?t[n]():"";return i?"="===i?e===r:"*="===i?0<=e.indexOf(r):"~="===i?0<=(" "+e+" ").indexOf(" "+r+" "):"!="===i?e!==r:"^="===i?0===e.indexOf(r):"$="===i&&e.substr(e.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var e;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(e=a(i[1],[]),function(t){return!o(t,e)}):(i=i[2],function(t,e,n){return"first"===i?0===e:"last"===i?e===n-1:"even"===i?e%2==0:"odd"===i?e%2==1:!!t[i]&&t[i]()})}(i[7])),e.pseudo=!!i[7],e.direct=n,e}function a(t,e){var n,i,r,o=[];do{if(Ut.exec(""),(i=Ut.exec(t))&&(t=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,e),t=[],r=0;r<o.length;r++)">"!==o[r]&&t.push(s(o[r],[],">"===o[r-1]));return e.push(t),e}this._selectors=a(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;0<=r;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,u=[],i=this._selectors;function c(t,e,n){var i,r,o,s,a,l=e[n];for(i=0,r=t.length;i<r;i++){for(a=t[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===e.length-1?u.push(a):a.items&&c(a.items(),e,n+1);else if(l.direct)return;a.items&&c(a.items(),e,n)}}if(t.items){for(e=0,n=i.length;e<n;e++)c(t.items(),i[e],0);1<n&&(u=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}(u))}return Lt||(Lt=qt.Collection),new Lt(u)}}),Yt=Array.prototype.push,$t=Array.prototype.slice;zt={length:0,init:function(t){t&&this.add(t)},add:function(t){return C.isArray(t)?Yt.apply(this,t):t instanceof It?this.add(t.toArray()):Yt.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(e){var t,n,i,r,o=[];for("string"==typeof e?(e=new qt(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 It(o)},slice:function(){return new It($t.apply(this,arguments))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},each:function(t){return C.each(this,t),this},toArray:function(){return C.toArray(this)},indexOf:function(t){for(var e=this.length;e--&&this[e]!==t;);return e},reverse:function(){return new It(C.toArray(this).reverse())},hasClass:function(t){return!!this[0]&&this[0].classes.contains(t)},prop:function(e,n){var t;return n!==undefined?(this.each(function(t){t[e]&&t[e](n)}),this):(t=this[0])&&t[e]?t[e]():void 0},exec:function(e){var n=C.toArray(arguments).slice(1);return this.each(function(t){t[e]&&t[e].apply(t,n)}),this},remove:function(){for(var t=this.length;t--;)this[t].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)})}},C.each("fire on off show hide append prepend before after reflow".split(" "),function(n){zt[n]=function(){var e=C.toArray(arguments);return this.each(function(t){n in t&&t[n].apply(t,e)}),this}}),C.each("text name disabled active selected checked visible parent value data".split(" "),function(e){zt[e]=function(t){return this.prop(e,t)}}),It=Ot.extend(zt);var Xt=qt.Collection=It,jt=function(t){this.create=t.create};jt.create=function(r,o){return new jt({create:function(e,n){var i,t=function(t){e.set(n,t.value)};return e.on("change:"+n,function(t){r.set(o,t.value)}),r.on("change:"+o,t),(i=e._bindings)||(i=e._bindings=[],e.on("destroy",function(){for(var t=i.length;t--;)i[t]()})),i.push(function(){r.off("change:"+o,t)}),r.get(o)}})};var Jt=tinymce.util.Tools.resolve("tinymce.util.Observable");function Gt(t){return 0<t.nodeType}var Kt,Zt,Qt=Ot.extend({Mixins:[Jt],init:function(t){var e,n;for(e in t=t||{})(n=t[e])instanceof jt&&(t[e]=n.create(this,e));this.data=t},set:function(e,n){var i,r,o=this.data[e];if(n instanceof jt&&(n=n.create(this,e)),"object"==typeof e){for(i in e)this.set(i,e[i]);return this}return function t(e,n){var i,r;if(e===n)return!0;if(null===e||null===n)return e===n;if("object"!=typeof e||"object"!=typeof n)return e===n;if(C.isArray(n)){if(e.length!==n.length)return!1;for(i=e.length;i--;)if(!t(e[i],n[i]))return!1}if(Gt(e)||Gt(n))return e===n;for(i in r={},n){if(!t(e[i],n[i]))return!1;r[i]=!0}for(i in e)if(!r[i]&&!t(e[i],n[i]))return!1;return!0}(o,n)||(this.data[e]=n,r={target:this,name:e,value:n,oldValue:o},this.fire("change:"+e,r),this.fire("change",r)),this},get:function(t){return this.data[t]},has:function(t){return t in this.data},bind:function(t){return jt.create(this,t)},destroy:function(){this.fire("destroy")}}),te={},ee={add:function(t){var e=t.parent();if(e){if(!e._layout||e._layout.isNative())return;te[e._id]||(te[e._id]=e),Kt||(Kt=!0,c.requestAnimationFrame(function(){var t,e;for(t in Kt=!1,te)(e=te[t]).state.get("rendered")&&e.reflow();te={}},document.body))}},remove:function(t){te[t._id]&&delete te[t._id]}},ne=function(t){return t?t.getRoot().uiContainer:null},ie={getUiContainerDelta:function(t){var e=ne(t);if(e&&"static"!==v.DOM.getStyle(e,"position",!0)){var n=v.DOM.getPos(e),i=e.scrollLeft-n.x,r=e.scrollTop-n.y;return pt.some({x:i,y:r})}return pt.none()},setUiContainer:function(t,e){var n=v.DOM.select(t.settings.ui_container)[0];e.getRoot().uiContainer=n},getUiContainer:ne,inheritUiContainer:function(t,e){return e.uiContainer=ne(t)}},re="onmousewheel"in document,oe=!1,se=0,ae={Statics:{classPrefix:"mce-"},isRtl:function(){return Zt.rtl},classPrefix:"mce-",init:function(e){var t,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=e=C.extend({},i.Defaults,e),i._id=e.id||"mceu_"+se++,i._aria={role:e.role},i._elmCache={},i.$=Nt,i.state=new Qt({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Qt(e.data),i.classes=new Bt(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)),C.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=Pt(e.border),i.paddingBox=Pt(e.padding),i.marginBox=Pt(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var t=ie.getUiContainer(this);return t||St.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||Wt(f,"border"),c.paddingBox=c.paddingBox||Wt(f,"padding"),c.marginBox=c.marginBox||Wt(f,"margin"),u=St.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=Zt.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=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),t.height=(0<=u?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=(0<=u?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=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var t=this;t.parent()._lastRect=null,St.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 le(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 le(this).off(t,e),this},fire:function(t,e,n){if((e=e||{}).control||(e.control=this),e=le(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 le(this).has(t)},parents:function(t){var e,n=new Xt;for(e=this.parent();e;e=e.parent())n.add(e);return t&&(n=n.filter(t)),n},parentsAndSelf:function(t){return new Xt(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]=Nt("#"+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 Zt.translate?Zt.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 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&&Nt(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 Nt(t).before(this.renderHtml()),this.postRender(),this},renderTo:function(t){return Nt(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=Nt(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}ue(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)._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"),ee.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),e=(t=e).parent()}t||(t=this);for(var i=n.length;i--;)n[i].rootControl=t;return t},reflow:function(){ee.remove(this);var t=this.parent();return t&&t._layout&&!t._layout.isNative()&&t.reflow(),this}};function le(n){return n._eventDispatcher||(n._eventDispatcher=new Dt({scope:n,toggleEvent:function(t,e){e&&Dt.isNative(t)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[t]=!0,n.state.get("rendered")&&ue(n))}})),n._eventDispatcher}function ue(a){var t,e,n,l,i,r;function o(t){var e=a.getParentCtrl(t.target);e&&e.fire(t.type,t)}function s(){var t=l._lastHoverCtrl;t&&(t.fire("mouseleave",{target:t.getEl()}),t.parents().each(function(t){t.fire("mouseleave",{target:t.getEl()})}),l._lastHoverCtrl=null)}function u(t){var e,n,i,r=a.getParentCtrl(t.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(e=i.length-1;s<=e;e--)(o=i[e]).fire("mouseleave",{target:o.getEl()})}for(e=s;e<n.length;e++)(r=n[e]).fire("mouseenter",{target:r.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=a.fire("wheel",t)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),t=0,e=n.length;!l&&t<e;t++)l=n[t]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,e=t,t=0;t<e;t++)n[t]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||oe?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(Nt(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(Nt(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):re?Nt(a.getEl()).on("mousewheel",c):Nt(a.getEl()).on("DOMMouseScroll",c)}}}C.each("text title visible disabled active value".split(" "),function(e){ae[e]=function(t){return 0===arguments.length?this.state.get(e):(void 0!==t&&this.state.set(e,t),this)}});var ce=Zt=Ot.extend(ae),de=function(t){return"static"===St.getRuntimeStyle(t,"position")},fe=function(t){return t.state.get("fixed")};function he(t,e,n){var i,r,o,s,a,l,u,c,d,f;return d=me(),o=(r=St.getPos(e,ie.getUiContainer(t))).x,s=r.y,fe(t)&&de(document.body)&&(o-=d.x,s-=d.y),i=t.getEl(),a=(f=St.getSize(i)).width,l=f.height,u=(f=St.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 me=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)}},ge=function(t){var e,n=ie.getUiContainer(t);return n&&!fe(t)?{x:0,y:0,w:(e=n).scrollWidth-1,h:e.scrollHeight-1}:me()},pe={testMoveRel:function(t,e){for(var n=ge(this),i=0;i<e.length;i++){var r=he(this,t,e[i]);if(fe(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&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=he(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:e<t+n&&(t=e-n)<0?0:t}if(n.settings.constrainToViewport){var r=ge(this),o=n.layoutRect();t=i(t,r.w,o.w),e=i(e,r.h,o.h)}var s=ie.getUiContainer(n);return s&&de(s)&&!fe(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}},ve=ce.extend({Mixins:[pe],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 e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._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}}),be=ce.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==be.tooltips&&(r.on("mouseenter",function(t){var e=r.tooltip().moveTo(-65535);if(t.control===r){var n=e.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===n),e.classes.toggle("tooltip-nw","bc-tl"===n),e.classes.toggle("tooltip-ne","bc-tr"===n),e.moveRel(r.getEl(),n)}else e.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new ve({type:"tooltip"}),ie.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 e=this;function n(t){e.aria("disabled",t),e.classes.toggle("disabled",t)}function i(t){e.aria("pressed",t),e.classes.toggle("active",t)}return e.state.on("change:disabled",function(t){n(t.value)}),e.state.on("change:active",function(t){i(t.value)}),e.state.get("disabled")&&n(!0),e.state.get("active")&&i(!0),e._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),ye=be.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 e=this;function n(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(t){n(t.value)}),n(e.state.get("value")),e._super()}}),xe=function(t,e){t.getEl().lastChild.textContent=e+(t.progressBar?" "+t.progressBar.value()+"%":"")},we=ce.extend({Mixins:[pe],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||0<t.timeout)&&!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 c.setTimeout(function(){t.$el.addClass(t.classPrefix+"in"),xe(t,t.state.get("text"))},100),t._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().firstChild.innerHTML=t.value,xe(e,t.value)}),e.progressBar&&(e.progressBar.bindStates(),e.progressBar.state.on("change:value",function(t){xe(e,e.state.get("text"))})),e._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 _e(o){var s=function(t){return t.inline?t.getElement():t.getContentAreaContainer()};return{open:function(t,e){var n,i=C.extend(t,{maxWidth:(n=s(o),St.getSize(n).width)}),r=new we(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),e()},i.timeout)),r.on("close",function(){e()}),r.renderTo(),r},close:function(t){t.close()},reposition:function(t){Ct(t,function(t){t.moveTo(0,0)}),function(n){if(0<n.length){var t=n.slice(0,1)[0],e=s(o);t.moveRel(e,"tc-tc"),Ct(n,function(t,e){0<e&&t.moveRel(n[e-1].getEl(),"bc-tc")})}}(t)},getArgs:function(t){return t.args}}}function Ce(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,h){var m,g,e,p,v,b,y,x=h.document||document;h=h||{};var w=x.getElementById(h.handle||t);e=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=(e=x,u=Math.max,n=e.documentElement,i=e.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});Ce(t),t.preventDefault(),g=t.button,c=w,b=t.screenX,y=t.screenY,d=window.getComputedStyle?window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=Nt("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),Nt(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(t)},v=function(t){if(Ce(t),t.button!==g)return p(t);t.deltaX=t.screenX-b,t.deltaY=t.screenY-y,t.preventDefault(),h.drag(t)},p=function(t){Ce(t),Nt(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(t)},this.destroy=function(){Nt(w).off()},Nt(w).on("mousedown touchstart",e)}var Ee=tinymce.util.Tools.resolve("tinymce.ui.Factory"),ke=function(t){return!!t.getAttribute("data-mce-tabstop")};function Te(t){var o,r,n=t.root;function i(t){return t&&1===t.nodeType}try{o=document.activeElement}catch(e){o=document.body}function s(t){return i(t=t||o)?t.getAttribute("role"):null}function a(t){for(var e,n=t||o;n=n.parentNode;)if(e=s(n))return e}function l(t){var e=o;if(i(e))return e.getAttribute("aria-"+t)}function u(t){var e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function c(e){var r=[];return function t(e){if(1===e.nodeType&&"none"!==e.style.display&&!e.disabled){var n;(u(n=e)&&!n.hidden||ke(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(e);for(var i=0;i<e.childNodes.length;i++)t(e.childNodes[i])}}(e||n.getEl()),r}function d(t){var e,n;(n=(t=t||r).parents().toArray()).unshift(t);for(var i=0;i<n.length&&!(e=n[i]).settings.ariaRoot;i++);return e}function f(t,e){return t<0?t=e.length-1:t>=e.length&&(t=0),e[t]&&e[t].focus(),t}function h(t,e){var n=-1,i=d();e=e||c(i.getEl());for(var r=0;r<e.length;r++)e[r]===o&&(n=r);n+=t,i.lastAriaIndex=f(n,e)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var t=s(),e=a();"tablist"===e?h(1,c(o.parentNode)):"menuitem"===t&&"menu"===e&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var t=s(),e=a();"menuitem"===t&&"menubar"===e?y():"button"===t&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(t){t=t||{},r.fire("click",{target:o,aria:t})}return r=n.getParentCtrl(o),n.on("keydown",function(t){function e(t,e){u(o)||ke(o)||"slider"!==s(o)&&!1!==e(t)&&t.preventDefault()}if(!t.isDefaultPrevented())switch(t.keyCode){case 37:e(t,m);break;case 39:e(t,g);break;case 38:e(t,p);break;case 40:e(t,v);break;case 27:b();break;case 14:case 13:case 32:e(t,y);break;case 9:!function(t){if("tablist"===a()){var e=c(r.getEl("body"))[0];e&&e.focus()}else h(t.shiftKey?-1:1)}(t),t.preventDefault()}}),n.on("focusin",function(t){o=t.target,r=t.control}),{focusFirst:function(t){var e=d(t),n=c(e.getEl());e.settings.ariaRemember&&"lastAriaIndex"in e?f(e.lastAriaIndex,n):f(0,n)}}}var He,Me,Se,Ne,Oe={},De=ce.extend({init:function(t){var e=this;e._super(t),(t=e.settings).fixed&&e.state.set("fixed",!0),e._items=new Xt,e.isRtl()&&e.classes.add("rtl"),e.bodyClasses=new Bt(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=Ee.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=Oe[t]=Oe[t]||new qt(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}0<=r&&((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 C.isArray(t)||(t=[t]),C.each(t,function(t){t&&(t instanceof ce||("string"==typeof t&&(t={type:t}),e=C.extend({},n.settings.defaults,t),t.type=e.type=e.type||t.type||n.settings.defaultType||(e.defaults?e.defaults.type:null),t=Ee.create(e)),i.push(t))}),i},renderNew:function(){var i=this;return i.items().each(function(t,e){var n;t.parent(i),t.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&e<=n.childNodes.length-1?Nt(n.childNodes[e]).before(t.renderHtml()):Nt(n).append(t.renderHtml()),t.postRender(),ee.add(t))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},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),0<=e&&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 i={};return this.find("*").each(function(t){var e=t.name(),n=t.value();e&&void 0!==n&&(i[e]=n)}),i},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=Te({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(ee.remove(this),this.visible()){for(ce.repaintControls=[],ce.repaintControls.map={},this.recalc(),t=ce.repaintControls.length;t--;)ce.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),ce.repaintControls=[]}return this}}),Pe={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,t;function e(t,e,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+t)){if(f=e.toLowerCase(),h=n.toLowerCase(),Nt(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void Nt(a).css("display","none");Nt(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+t+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+e]+v,d[h]=u,Nt(a).css(d),(d={})[f]=s["scroll"+e]*c,d[h]=u*c,Nt(l).css(d)}}t=p.getEl("body"),m=t.scrollWidth>t.clientWidth,g=t.scrollHeight>t.clientHeight,e("h","Left","Width","contentW",m,"Height"),e("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function t(s,a,l,u,c){var d,t=p._id+"-scroll"+s,e=p.classPrefix;Nt(p.getEl()).append('<div id="'+t+'" class="'+e+"scrollbar "+e+"scrollbar-"+s+'"><div id="'+t+'t" class="'+e+'scrollbar-thumb"></div></div>'),p.draghelper=new Re(t+"t",{start:function(){d=p.getEl("body")["scroll"+a],Nt("#"+t).addClass(e+"active")},drag:function(t){var e,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,e=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+t["delta"+u]/e},stop:function(){Nt("#"+t).removeClass(e+"active")}})}p.classes.add("scroll"),t("v","Top","Height","Y","Width"),t("h","Left","Width","X","Height")}(),p.on("wheel",function(t){var e=p.getEl("body");e.scrollLeft+=10*(t.deltaX||0),e.scrollTop+=10*t.deltaY,n()}),Nt(p.getEl("body")).on("scroll",n)),n())}},We=De.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[Pe],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>"}}),Ae={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,e){if(t<=1||e<=1){var n=St.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)}},Be=[],Le=[];function Ie(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=Be.length;e--;){var n=Be[e],i=n.getParentCtrl(t.target);if(n.settings.autohide){if(i&&(Ie(i,n)||n.parent()===i))continue;(t=n.fire("autohide",{target:t.target})).isDefaultPrevented()||n.hide()}}}(t)},Nt(document).on("click touchstart",He))}function Fe(r){var t=St.getViewPort().y;function e(t,e){for(var n,i=0;i<Be.length;i++)if(Be[i]!==r)for(n=Be[i].parent();n&&(n=n.parent());)n===r&&Be[i].fixed(t).moveBy(0,e).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>t&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),e(!1,r._autoFixY-t)):(r._autoFixY=r.layoutRect().y,r._autoFixY<t&&(r.fixed(!0).layoutRect({y:0}).repaint(),e(!0,t-r._autoFixY))))}function Ue(t,e){var n,i,r=Ve.zIndex||65535;if(t)Le.push(e);else for(n=Le.length;n--;)Le[n]===e&&Le.splice(n,1);if(Le.length)for(n=0;n<Le.length;n++)Le[n].modal&&(r++,i=Le[n]),Le[n].getEl().style.zIndex=r,Le[n].zIndex=r,r++;var o=Nt("#"+e.classPrefix+"modal-block",e.getContainerElm())[0];i?Nt(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),Ne=!1),Ve.currentZIndex=r}var Ve=We.extend({Mixins:[pe,Ae],init:function(t){var i=this;i._super(t),(i._eventsRoot=i).classes.add("floatpanel"),t.autohide&&(ze(),function(){if(!Se){var t=document.documentElement,e=t.clientWidth,n=t.clientHeight;Se=function(){document.all&&e===t.clientWidth&&n===t.clientHeight||(e=t.clientWidth,n=t.clientHeight,Ve.hideAll())},Nt(window).on("resize",Se)}}(),Be.push(i)),t.autofix&&(Me||(Me=function(){var t;for(t=Be.length;t--;)Fe(Be[t])},Nt(window).on("scroll",Me)),i.on("move",function(){Fe(this)})),i.on("postrender show",function(t){if(t.control===i){var e,n=i.classPrefix;i.modal&&!Ne&&((e=Nt("#"+n+"modal-block",i.getContainerElm()))[0]||(e=Nt('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),c.setTimeout(function(){e.addClass(n+"in"),Nt(i.getEl()).addClass(n+"in")}),Ne=!0),Ue(!0,i)}}),i.on("show",function(){i.parents().each(function(t){if(t.state.get("fixed"))return i.fixed(!0),!1})}),t.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",t.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(t){var e=this;if(e.state.get("fixed")!==t){if(e.state.get("rendered")){var n=St.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=Be.length;t--&&Be[t]!==this;);return-1===t&&Be.push(this),e},hide:function(){return qe(this),Ue(!1,this),this._super()},hideAll:function(){Ve.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Ue(!1,this)),this},remove:function(){qe(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function qe(t){var e;for(e=Be.length;e--;)Be[e]===t&&Be.splice(e,1);for(e=Le.length;e--;)Le[e]===t&&Le.splice(e,1)}Ve.hideAll=function(){for(var t=Be.length;t--;){var e=Be[t];e&&e.settings.autohide&&(e.hide(),Be.splice(t,1))}};var Ye=[],$e="";function Xe(t){var e,n=Nt("meta[name=viewport]")[0];!1!==h.overrideViewPort&&(n||((n=document.createElement("meta")).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(e=n.getAttribute("content"))&&void 0!==$e&&($e=e),n.setAttribute("content",t?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":$e))}function je(t,e){(function(){for(var t=0;t<Ye.length;t++)if(Ye[t]._fullscreen)return!0;return!1})()&&!1===e&&Nt([document.documentElement,document.body]).removeClass(t+"fullscreen")}var Je=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 n=this;n._super(t),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),t.buttons&&(n.statusbar=new We({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:t.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(t){var e=n.classPrefix+"close";(St.hasClass(t.target,e)||St.hasClass(t.target.parentNode,e))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(t){t.control===n&&Ve.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",t.title),n._fullscreen=!1},recalc:function(){var t,e,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(St.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=St.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=St.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 n,e,i=this,r=document.documentElement,o=i.classPrefix;if(t!==i._fullscreen)if(Nt(window).on("resize",function(){var t;if(i._fullscreen)if(n)i._timer||(i._timer=c.setTimeout(function(){var t=St.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),i._timer=0},50));else{t=(new Date).getTime();var e=St.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),50<(new Date).getTime()-t&&(n=!0)}}),e=i.layoutRect(),i._fullscreen=t){i._initial={x:e.x,y:e.y,w:e.w,h:e.h},i.borderBox=Pt("0"),i.getEl("head").style.display="none",e.deltaH-=e.headerH+2,Nt([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=St.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Pt(i.settings.border),i.getEl("head").style.display="",e.deltaH+=e.headerH,Nt([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,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new Re(n._id+"-dragh",{start:function(){e={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(t){n.moveTo(e.x+t.deltaX,e.y+t.deltaY)}}),n.on("submit",function(t){t.isDefaultPrevented()||n.close()}),Ye.push(n),Xe(!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(),je(e.classPrefix,!1),t=Ye.length;t--;)Ye[t]===e&&Ye.splice(t,1);Xe(0<Ye.length)},getContentWindow:function(){var t=this.getEl().getElementsByTagName("iframe")[0];return t?t.contentWindow:null}});!function(){if(!h.desktop){var n={w:window.innerWidth,h:window.innerHeight};c.setInterval(function(){var t=window.innerWidth,e=window.innerHeight;n.w===t&&n.h===e||(n={w:t,h:e},Nt(window).trigger("resize"))},100)}Nt(window).on("resize",function(){var t,e,n=St.getWindowSize();for(t=0;t<Ye.length;t++)e=Ye[t].layoutRect(),Ye[t].moveTo(Ye[t].settings.x||Math.max(0,n.w/2-e.w/2),Ye[t].settings.y||Math.max(0,n.h/2-e.h/2))})}();var Ge=Je.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,i=t.callback||function(){};function n(t,e,n){return{type:"button",text:t,subtype:n?"primary":"",onClick:function(t){t.control.parents()[1].close(),i(e)}}}switch(t.buttons){case Ge.OK_CANCEL:e=[n("Ok",!0,!0),n("Cancel",!1)];break;case Ge.YES_NO:case Ge.YES_NO_CANCEL:e=[n("Yes",1,!0),n("No",0)],t.buttons===Ge.YES_NO_CANCEL&&e.push(n("Cancel",-1));break;default:e=[n("Ok",!0,!0)]}return new Je({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(){i(!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 _e(t)},getWindowManagerImpl:function(){return{open:function(n,t,e){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Je(n)).on("close",function(){e(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(t){var e=t.name();e in n.data&&t.value(n.data[e])})}),i.features=n||{},i.params=t||{},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){return 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}(t.split("."),e)},tn=function(t,e){var n=Qe(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n};function en(){return new(tn("FileReader"))}var nn=tinymce.util.Tools.resolve("tinymce.util.Promise"),rn=function(n){return new nn(function(t){var e=new en;e.onloadend=function(){t(e.result.split(",")[1])},e.readAsDataURL(n)})},on=function(){return new nn(function(e){var t;(t=document.createElement("input")).type="file",t.style.position="fixed",t.style.left=0,t.style.top=0,t.style.opacity=.001,document.body.appendChild(t),t.onchange=function(t){e(Array.prototype.slice.call(t.target.files))},t.click(),t.parentNode.removeChild(t)})},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(r,o){var s={};function t(t){var e,n,i;n=o[t?"startContainer":"endContainer"],i=o[t?"startOffset":"endOffset"],1===n.nodeType&&(e=r.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(i=Math.min(i,n.childNodes.length-1),t?n.insertBefore(e,n.childNodes[i]):r.insertAfter(e,n.childNodes[i])):n.appendChild(e),n=e,i=0),s[t?"startContainer":"endContainer"]=n,s[t?"startOffset":"endOffset"]=i}return t(!0),o.collapsed||t(),s},un=function(r,o){function t(t){var e,n,i;e=i=o[t?"startContainer":"endContainer"],n=o[t?"startOffset":"endOffset"],e&&(1===e.nodeType&&(n=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}(e),e=e.parentNode,r.remove(i)),o[t?"startContainer":"endContainer"]=e,o[t?"startOffset":"endOffset"]=n)}t(!0),t();var e=r.createRng();return e.setStart(o.startContainer,o.startOffset),o.endContainer&&e.setEnd(o.endContainer,o.endOffset),e},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(),C.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;n=hn(e=t),r=e.dom,o=e.selection,i=ln(r,o.getRng()),C.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))},bn=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)}))},yn=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,Cn=function(n,t){n.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){t.showForm(n,"quicklink")}}),n.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){on().then(function(t){var e=t[0];rn(e).then(function(t){xn(n,t,e)})})}}),n.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){t.hide(),bn(n,2,2)}}),function(e){for(var t=function(t){return function(){yn(e,t)}},n=1;n<6;n++){var i="h"+n;e.addButton(i,{text:i.toUpperCase(),tooltip:"Heading "+n,stateSelector:i,onclick:t(i),onPostRender:function(){this.getEl().firstChild.firstChild.style.fontWeight="bold"}})}}(n)},Rn=function(){var t=h.container;if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var e=v.DOM.getPos(t),n=e.x-t.scrollLeft,i=e.y-t.scrollTop;return pt.some({x:n,y:i})}return pt.none()},En=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())},kn=function(t){return/^https?:\/\//.test(t.trim())},Tn=function(t,e){return!kn(e)&&En(e)?(n=t,i=e,new nn(function(e){n.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){e(!0===t?"http://"+i:i)})})):nn.resolve(e);var n,i},Hn=function(r,e){var t,n,i,o={};return t="quicklink",n={items:[{type:"button",name:"unlink",icon:"unlink",onclick:function(){r.focus(),_n(r),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(t){if(t.control===this){var e,n="";(e=r.dom.getParent(r.selection.getStart(),"a[href]"))&&(n=r.dom.getAttrib(e,"href")),this.fromJSON({linkurl:n}),i=this.find("#unlink"),e?i.show():i.hide(),this.find("#linkurl")[0].focus()}var i},onsubmit:function(t){Tn(r,t.data.linkurl).then(function(t){r.undoManager.transact(function(){t===o.href&&(o.attach(),o={}),wn(r,t)}),e()})}},(i=Ee.create(C.extend({type:"form",layout:"flex",direction:"row",padding:5,name:t,spacing:3},n))).on("show",function(){i.find("textbox").eq(0).each(function(t){t.focus()})}),i},Mn=function(n,t,e){var o,i,s=[];if(e)return C.each(B(i=e)?i:D(i)?i.split(/[ ,]/):[],function(t){if("|"===t)o=null;else if(n.buttons[t]){o||(o={type:"buttongroup",items:[]},s.push(o));var e=n.buttons[t];A(e)&&(e=e()),e.type=e.type||"button",(e=Ee.create(e)).on("postRender",(i=n,r=e,function(){var e,t,n=(t=function(t,e){return{selector:t,handler:e}},(e=r).settings.stateSelector?t(e.settings.stateSelector,function(t){e.active(t)}):e.settings.disabledStateSelector?t(e.settings.disabledStateSelector,function(t){e.disabled(t)}):null);null!==n&&i.selection.selectorChanged(n.selector,n.handler)})),o.items.push(e)}var i,r}),Ee.create({type:"toolbar",layout:"flow",name:t,items:s})},Sn=function(){var l,c,o=function(t){return 0<t.items().length},u=function(t,e){var n,i,r=(n=t,i=e,C.map(i,function(t){return Mn(n,t.id,t.items)})).concat([Mn(t,"text",J(t)),Mn(t,"insert",G(t)),Hn(t,p)]);return Ee.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:C.grep(r,o),oncancel:function(){t.focus()}})},d=function(t){t&&t.show()},f=function(t,e){t.moveTo(e.x,e.y)},h=function(n,i){i=i?i.substr(0,2):"",C.each({t:"down",b:"up",c:"center"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(0,1))}),"cr"===i?(n.classes.toggle("arrow-left",!0),n.classes.toggle("arrow-right",!1)):"cl"===i?(n.classes.toggle("arrow-left",!0),n.classes.toggle("arrow-right",!0)):C.each({l:"left",r:"right"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(1,1))})},m=function(t,e){var n=t.items().filter("#"+e);return 0<n.length&&(n[0].show(),t.reflow(),!0)},g=function(t,e,n,i){var r,o,s,a;if(a=K(n),r=y(n),o=v.DOM.getRect(t.getEl()),s="insert"===e?Y(i,r,o):$(i,r,o)){var l=Rn().getOr({x:0,y:0}),u={x:s.rect.x-l.x,y:s.rect.y-l.y,w:s.rect.w,h:s.rect.h};return f(t,X(a,c=i,r,u)),h(t,s.position),!0}return!1},p=function(){l&&l.hide()};return{show:function(t,e,n,i){var r,o,s,a;l||(M(t),(l=u(t,i)).renderTo().reflow().moveTo(n.x,n.y),t.nodeChanged()),o=e,s=t,a=n,d(r=l),r.items().hide(),m(r,o)?!1===g(r,o,s,a)&&p():p()},showForm:function(t,e){if(l){if(l.items().hide(),!m(l,e))return void p();var n,i,r,o=void 0;d(l),l.items().hide(),m(l,e),r=K(t),n=y(t),o=v.DOM.getRect(l.getEl()),(i=$(c,n,o))&&(o=i.rect,f(l,X(r,c,n,o)),h(l,i.position))}},reposition:function(t,e,n){l&&g(l,e,t,n)},inForm:function(){return l&&l.visible()&&0<l.items().filter("form:visible").length},hide:p,focus:function(){l&&l.find("toolbar:visible").eq(0).each(function(t){t.focus(!0)})},remove:function(){l&&(l.remove(),l=null)}}},Nn=Ot.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(t){this.settings=C.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}}),On=Nn.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)}}),Dn=be.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 o=this,n=o.$,i=o.classPrefix+"txt";function s(t){var e=n("span."+i,o.getEl());t?(e[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),e=n("span."+i,o.getEl())),e.html(o.encode(t))):e.remove(),o.classes.toggle("btn-has-text",!!t)}return o.state.on("change:text",function(t){s(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Pn=Dn.extend({init:function(t){t=C.extend({text:"Browse...",multiple:!1,accept:null},t),this._super(t),this.classes.add("browsebutton"),t.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,e=St.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),Nt(e).on("change",function(t){var e=t.target.files;n.value=function(){return e.length?n.settings.multiple?e:e[0]:null},t.preventDefault(),e.length&&n.fire("change",t)}),Nt(e).on("click",function(t){t.stopPropagation()}),Nt(n.getEl("button")).on("click",function(t){t.stopPropagation(),e.click()}),n.getEl().appendChild(e)},remove:function(){Nt(this.getEl("button")).off(),Nt(this.getEl("input")).off(),this._super()}}),Wn=De.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=be.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 o=this;function e(t){o.classes.toggle("checked",t),o.aria("checked",t)}return o.state.on("change:text",function(t){o.getEl("al").firstChild.data=o.translate(t.value)}),o.state.on("change:checked change:value",function(t){o.fire("change"),e(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;if(void 0===e)return o.settings.icon;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r)}),o.state.get("checked")&&e(!0),o._super()}}),Bn=tinymce.util.Tools.resolve("tinymce.util.VK"),Ln=be.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(t){var e=t.target,n=r.getEl();if(Nt.contains(n,e)||e===n)for(;e&&e!==n;)e.id&&-1!==e.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),t.aria&&r.menu.items()[0].focus())),e=e.parentNode}),r.on("keydown",function(t){var e;13===t.keyCode&&"INPUT"===t.target.nodeName&&(t.preventDefault(),r.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),r.fire("submit",{data:e.toJSON()}))}),r.on("keyup",function(t){if("INPUT"===t.target.nodeName){var e=r.state.get("value"),n=t.target.value;n!==e&&(r.state.set("value",n),r.fire("autocomplete",t))}}),r.on("mouseover",function(t){var e=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==t.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=e.text(n).show().testMoveRel(t.target,["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===i),e.classes.toggle("tooltip-nw","bc-tl"===i),e.classes.toggle("tooltip-ne","bc-tr"===i),e.moveRel(t.target,i)}})},statusLevel:function(t){return 0<arguments.length&&this.state.set("statusLevel",t),this.state.get("statusLevel")},statusMessage:function(t){return 0<arguments.length&&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=Ee.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(St.getRuntimeStyle(a,"padding-right"),10)-parseInt(St.getRuntimeStyle(a,"padding-left"),10)),t=r?o.w-St.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(e=n.layoutRect().h-2+"px"),Nt(a).css({width:t-s,lineHeight:e}),n._super(),n},postRender:function(){var e=this;return Nt(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._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,i){var r=this;if(0!==t.length){r.menu?r.menu.items().remove():r.menu=Ee.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),C.each(t,function(t){var e,n;r.menu.add({text:t.title,url:t.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(e=t.value,n=t.title,function(){r.fire("selectitem",{title:n,value:e})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(t){t.control.parent()===r.menu&&(t.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var e=r.layoutRect().w;r.menu.layoutRect({w:e,minW:0,maxW:e}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(t){r.getEl("inp").value!==t.value&&(r.getEl("inp").value=t.value)}),r.state.on("change:disabled",function(t){r.getEl("inp").disabled=t.value}),r.state.on("change:statusLevel",function(t){var e=r.getEl("status"),n=r.classPrefix,i=t.value;St.css(e,"display","none"===i?"none":""),St.toggleClass(e,n+"i-checkmark","ok"===i),St.toggleClass(e,n+"i-warning","warn"===i),St.toggleClass(e,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),St.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(t){r.menu&&r.menu.visible()&&(t.stopPropagation(),r.hideMenu())});var n=function(t,e){e&&0<e.items().length&&e.items().eq(t)[0].focus()};return r.on("keydown",function(t){var e=t.keyCode;"INPUT"===t.target.nodeName&&(e===Bn.DOWN?(t.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):e===Bn.UP&&(t.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){Nt(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),In=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 e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}}),zn=Dn.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 Ve(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","tc-bc","tc-br","tc-bl"]));e.panel.classes.toggle("start","l"===i.substr(-1)),e.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);e.panel.classes.toggle("bottom",!r),e.panel.classes.toggle("top",r),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()}}),Fn=v.DOM,Un=zn.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 e=this,n=e.settings.onclick;return e.on("click",function(t){t.aria&&"down"===t.aria.key||t.control!==e||Fn.getParent(t.target,"."+e.classPrefix+"open")||(t.stopImmediatePropagation(),n.call(e,t))}),delete e.settings.onclick,e._super()}}),Vn=tinymce.util.Tools.resolve("tinymce.util.Color"),qn=be.extend({Defaults:{classes:"widget colorpicker"},init:function(t){this._super(t)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(t,e){var n,i,r=St.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 c(t,e){var n=(360-t.h)/360;St.css(r,{top:100*n+"%"}),e||St.css(s,{left:t.s+"%",top:100-t.v+"%"}),o.style.background=Vn({s:100,v:100,h:t.h}).toHex(),a.color().parse({s:t.s,v:t.v,h:t.h})}function t(t){var e;e=u(o,t),n.s=100*e.x,n.v=100*(1-e.y),c(n),a.fire("change")}function e(t){var e;e=u(i,t),(n=l.toHsv()).h=360*(1-e.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new Re(a._id+"-sv",{start:t,drag:t}),a._hdraghelper=new Re(a._id+"-h",{start:e,drag:e}),a._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=Vn()),this._color},renderHtml:function(){var t,e=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return t='<div id="'+e+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var t,e,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",t=0,e=(i=s.split(",")).length-1;t<e;t++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/e+"%;"+n+i[t]+",endColorstr="+i[t+1]+");-ms-"+n+i[t]+",endColorstr="+i[t+1]+')"></div>';return r}()+'<div id="'+e+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+e+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+t+"</div>"}}),Yn=be.extend({init:function(t){t=C.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=St.create("div",t,"<span>"+this.translate(n.text)+"</span>"),n.height&&St.css(e,"height",n.height+"px"),n.width&&St.css(e,"width",n.width+"px"),e.className=this.classes,e.outerHTML},postRender:function(){var i=this,t=function(t){t.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(t){t.preventDefault()}),i.$el.on("dragenter",t),i.$el.on("dragleave",t),i.$el.on("drop",function(t){if(t.preventDefault(),!i.state.get("disabled")){var e=function(t){var e=i.settings.accept;if("string"!=typeof e)return t;var n=new RegExp("("+e.split(/\s*,\s*/).join("|")+")$","i");return C.grep(t,function(t){return n.test(t.name)})}(t.dataTransfer.files);i.value=function(){return e.length?i.settings.multiple?e:e[0]:null},e.length&&i.fire("change",t)}})},remove:function(){this.$el.off(),this._super()}}),$n=be.extend({init:function(t){var n=this;t.delimiter||(t.delimiter="\xbb"),n._super(t),n.classes.add("path"),n.canFocus=!0,n.on("click",function(t){var e;(e=t.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[e],index:e})}),n.row(n.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 e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(t){var e,n,i=t||[],r="",o=this.classPrefix;for(e=0,n=i.length;e<n;e++)r+=(0<e?'<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}}),Xn=$n.extend({postRender:function(){var o=this,s=o.settings.editor;function a(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!==s.settings.elementpath&&(o.on("select",function(t){s.focus(),s.selection.select(this.row()[t.index].element),s.nodeChanged()}),s.on("nodeChange",function(t){for(var e=[],n=t.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||e.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(e)})),o._super()}}),jn=De.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=De.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 i=this,t=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),t.each(function(t){var e,n=t.settings.label;n&&((e=new jn(C.extend({items:{type:"label",id:t._id+"-l",text:n,flex:0,forId:t._id,disabled:t.disabled()}},i.settings.formItemDefaults))).type="formitem",t.aria("labelledby",t._id+"-l"),"undefined"==typeof t.settings.flex&&(t.settings.flex=1),i.replace(t,e),e.add(t))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function t(){var t,e,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(t){var e=t.items()[0],n=e.getEl().clientWidth;i=i<n?n:i,r.push(e)}),e=n.settings.labelGap||0,t=r.length;t--;)r[t].settings.minWidth=i+e}n._super(),n.on("show",t),t()}}),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){if(null===t||t===undefined)throw new Error("Node cannot be null or undefined");return{dom:lt(t)}},Qn={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",t),"HTML must have a single root node";return Zn(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);return Zn(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return Zn(n)},fromDom:Zn,fromPoint:function(t,e,n){var i=t.dom();return pt.from(i.elementFromPoint(e,n)).map(Zn)}},ti=function(n){var i,r=!1;return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r||(r=!0,i=n.apply(null,t)),i}},ei={ATTRIBUTE:Node.ATTRIBUTE_NODE,CDATA_SECTION:Node.CDATA_SECTION_NODE,COMMENT:Node.COMMENT_NODE,DOCUMENT:Node.DOCUMENT_NODE,DOCUMENT_TYPE:Node.DOCUMENT_TYPE_NODE,DOCUMENT_FRAGMENT:Node.DOCUMENT_FRAGMENT_NODE,ELEMENT:Node.ELEMENT_NODE,TEXT:Node.TEXT_NODE,PROCESSING_INSTRUCTION:Node.PROCESSING_INSTRUCTION_NODE,ENTITY_REFERENCE:Node.ENTITY_REFERENCE_NODE,ENTITY:Node.ENTITY_NODE,NOTATION:Node.NOTATION_NODE},ni=function(t){return t.dom().nodeType},ii=function(e){return function(t){return ni(t)===e}},ri=(ii(ei.ELEMENT),ii(ei.TEXT),ii(ei.DOCUMENT),ti(function(){return ri(Qn.fromDom(document))}),function(t){var e=t.dom().body;if(null===e||e===undefined)throw"Body is not available yet";return Qn.fromDom(e)}),oi=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 ai(i(1),i(2))},si=function(){return ai(0,0)},ai=function(t,e){return{major:t,minor:e}},li={nu:ai,detect:function(t,e){var n=String(e).toLowerCase();return 0===t.length?si():oi(t,n)},unknown:si},ui="Firefox",ci=function(t,e){return function(){return e===t}},di=function(t){var e=t.current;return{current:e,version:t.version,isEdge:ci("Edge",e),isChrome:ci("Chrome",e),isIE:ci("IE",e),isOpera:ci("Opera",e),isFirefox:ci(ui,e),isSafari:ci("Safari",e)}},fi={unknown:function(){return di({current:undefined,version:li.unknown()})},nu:di,edge:lt("Edge"),chrome:lt("Chrome"),ie:lt("IE"),opera:lt("Opera"),firefox:lt(ui),safari:lt("Safari")},hi="Windows",mi="Android",gi="Solaris",pi="FreeBSD",vi=function(t,e){return function(){return e===t}},bi=function(t){var e=t.current;return{current:e,version:t.version,isWindows:vi(hi,e),isiOS:vi("iOS",e),isAndroid:vi(mi,e),isOSX:vi("OSX",e),isLinux:vi("Linux",e),isSolaris:vi(gi,e),isFreeBSD:vi(pi,e)}},yi={unknown:function(){return bi({current:undefined,version:li.unknown()})},nu:bi,windows:lt(hi),ios:lt("iOS"),android:lt(mi),linux:lt("Linux"),osx:lt("OSX"),solaris:lt(gi),freebsd:lt(pi)},xi=function(t,e){var n=String(e).toLowerCase();return Et(t,function(t){return t.search(n)})},wi=function(t,n){return xi(t,n).map(function(t){var e=li.detect(t.versionRegexes,n);return{current:t.name,version:e}})},_i=function(t,n){return xi(t,n).map(function(t){var e=li.detect(t.versionRegexes,n);return{current:t.name,version:e}})},Ci=function(t,e){return-1!==t.indexOf(e)},Ri=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Ei=function(e){return function(t){return Ci(t,e)}},ki=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return Ci(t,"edge/")&&Ci(t,"chrome")&&Ci(t,"safari")&&Ci(t,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ri],search:function(t){return Ci(t,"chrome")&&!Ci(t,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return Ci(t,"msie")||Ci(t,"trident")}},{name:"Opera",versionRegexes:[Ri,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Ei("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Ei("firefox")},{name:"Safari",versionRegexes:[Ri,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(Ci(t,"safari")||Ci(t,"mobile/"))&&Ci(t,"applewebkit")}}],Ti=[{name:"Windows",search:Ei("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return Ci(t,"iphone")||Ci(t,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Ei("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Ei("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Ei("linux"),versionRegexes:[]},{name:"Solaris",search:Ei("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Ei("freebsd"),versionRegexes:[]}],Hi={browsers:lt(ki),oses:lt(Ti)},Mi=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=Hi.browsers(),h=Hi.oses(),m=wi(f,t).fold(fi.unknown,fi.nu),g=_i(h,t).fold(yi.unknown,yi.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(r),isiPhone:lt(o),isTablet:lt(l),isPhone:lt(c),isTouch:lt(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:lt(d)})}},Si=ti(function(){var t=navigator.userAgent;return Mi(t)}),Ni=ei.ELEMENT,Oi=ei.DOCUMENT,Di=function(t){return t.nodeType!==Ni&&t.nodeType!==Oi||0===t.childElementCount},Pi={all:function(t,e){var n=e===undefined?document:e.dom();return Di(n)?[]:_t(n.querySelectorAll(t),Qn.fromDom)},is:function(t,e){var n=t.dom();if(n.nodeType!==Ni)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 Di(n)?pt.none():pt.from(n.querySelector(t)).map(Qn.fromDom)}},Wi=(Si().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),function(t,e){return Pi.all(e,t)}),Ai=C.trim,Bi=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}},Li=Bi("true"),Ii=Bi("false"),zi=function(t,e,n,i,r){return{type:t,title:e,url:n,level:i,attach:r}},Fi=function(t){return t.innerText||t.textContent},Ui=function(t){return t.id?t.id:(e="h",n=(new Date).getTime(),e+"_"+Math.floor(1e9*Math.random())+ ++Kn+String(n));var e,n},Vi=function(t){return(e=t)&&"A"===e.nodeName&&(e.id||e.name)&&Yi(t);var e},qi=function(t){return t&&/^(H[1-6])$/.test(t.nodeName)},Yi=function(t){return function(t){for(;t=t.parentNode;){var e=t.contentEditable;if(e&&"inherit"!==e)return Li(t)}return!1}(t)&&!Ii(t)},$i=function(t){return qi(t)&&Yi(t)},Xi=function(t){var e,n=Ui(t);return zi("header",Fi(t),"#"+n,qi(e=t)?parseInt(e.nodeName.substr(1),10):0,function(){t.id=n})},ji=function(t){var e=t.id||t.name,n=Fi(t);return zi("anchor",n||"#"+e,"#"+e,0,at)},Ji=function(t){var e,n;return e="h1,h2,h3,h4,h5,h6,a:not([href])",n=t,_t(Wi(Qn.fromDom(n),e),function(t){return t.dom()})},Gi=function(t){return 0<Ai(t.title).length},Ki=function(t){var e,n=Ji(t);return Rt((e=n,_t(Rt(e,$i),Xi)).concat(_t(Rt(n,Vi),ji)),Gi)},Zi={},Qi=function(t){return{title:t.title,value:{title:{raw:t.title},url:t.url,attach:t.attach}}},tr=function(t,e){return{title:t,value:{title:t,url:e,attach:at}}},er=function(t,e,n){var i=e in t?t[e]:n;return!1===i?null:i},nr=function(t,i,r,e){var n,o,s,a,l,u,c={title:"-"},d=function(t){var e=t.hasOwnProperty(r)?t[r]:[],n=Rt(e,function(t){return e=t,!wt(i,function(t){return t.url===e});var e});return C.map(n,function(t){return{title:t,value:{title:t,url:t,attach:at}}})},f=function(e){var t,n=Rt(i,function(t){return t.type===e});return t=n,C.map(t,Qi)};return!1===e.typeahead_urls?[]:"file"===r?(n=[rr(t,d(Zi)),rr(t,f("header")),rr(t,(a=f("anchor"),l=er(e,"anchor_top","#top"),u=er(e,"anchor_bottom","#bottom"),null!==l&&a.unshift(tr("<top>",l)),null!==u&&a.push(tr("<bottom>",u)),a))],o=function(t,e){return 0===t.length||0===e.length?t.concat(e):t.concat(c,e)},s=[],Ct(n,function(t){s=o(s,t)}),s):rr(t,d(Zi))},ir=function(t,e){var n,i,r,o=Zi[e];/^https?/.test(t)&&(o?(n=o,i=t,r=xt(n,i),-1===r?pt.none():pt.some(r)).isNone()&&(Zi[e]=o.slice(0,5).concat(t)):Zi[e]=[t])},rr=function(t,e){var n=t.toLowerCase(),i=C.grep(e,function(t){return-1!==t.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===t?[]:i},or=function(o,t,n){var i=t.filepicker_validator_handler;i&&o.state.on("change:value",function(t){var e;0!==(e=t.value).length?i({url:e,type:n},function(t){var e,n,i,r=(n=(e=t).status,i=e.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},sr=Ln.extend({Statics:{clearHistory:function(){Zi={}}},init:function(t){var e,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:S.activeEditor,d=c.settings,f=t.filetype;t.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=C.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(e=function(){n(u.getEl("inp").id,u.value(),f,window)}):e=function(){var t=u.fire("beforecall").meta;t=C.extend({filetype:f},t),n.call(c,function(t,e){u.value(t).fire("change",{meta:e})},u.value(),t)}),e&&(t.icon="browse",t.onaction=e),u._super(t),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(t){var e=Ki(s),n=nr(t,e,a,o);r.showAutoComplete(n,t)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(t){var e=t.value;r.value(e.url);var n,i=(n=e.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:e.attach}}):r.fire("change",{meta:{text:i,attach:e.attach}}),r.focus()}),r.on("click",function(t){0===r.value().length&&"INPUT"===t.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(t){t.isDefaultPrevented()||ir(r.value(),a)})}),or(u,d,f)}}),ar=On.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()})}}),lr=On.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,C,R,E,k,T,H,M,S,N,O,D,P,W,A,B,L=[],I=Math.max,z=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?(R="y",_="h",C="minH",E="maxH",T="innerH",k="top",H="deltaH",M="contentH",P="left",O="w",S="x",N="innerW",D="minW",W="right",A="deltaW",B="contentW"):(R="x",_="w",C="minW",E="maxW",T="innerW",k="left",H="deltaW",M="contentW",P="top",O="h",S="y",N="innerH",D="minH",W="bottom",A="deltaH",B="contentH"),d=r[T]-o[k]-o[k],w=c=0,e=0,n=i.length;e<n;e++)m=(h=i[e]).layoutRect(),d-=e<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[E]&&L.push(h),m.flex=g),d-=m[C],w<(p=o[P]+m[D]+o[W])&&(w=p);if((y={})[C]=d<0?r[C]-d+r[H]:r[T]-d+r[H],y[D]=w+r[A],y[M]=r[T]-d,y[B]=w,y.minW=z(y.minW,r.maxW),y.minH=z(y.minH,r.maxH),y.minW=I(y.minW,r.startMinWidth),y.minH=I(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,e=0,n=L.length;e<n;e++)(v=(m=(h=L[e]).layoutRect())[E])<(p=m[C]+m.flex*b)?(d-=m[E]-m[C],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[k],y={},0===c&&("end"===l?x=d+o[k]:"center"===l?(x=Math.round(r[T]/2-(r[T]-d)/2)+o[k])<0&&(x=o[k]):"justify"===l&&(x=o[k],u=Math.floor(d/(i.length-1)))),y[S]=o[P],e=0,n=i.length;e<n;e++)p=(m=(h=i[e]).layoutRect()).maxFlexSize||m[C],"center"===a?y[S]=Math.round(r[N]/2-m[O]/2):"stretch"===a?(y[O]=I(m[D]||0,r[N]-o[P]-o[W]),y[S]=o[P]):"end"===a&&(y[S]=r[N]-m[O]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[R]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w=y.minW,y.h=y.minH,t.layoutRect(y),this.recalc(t),null===t._lastRect){var F=t.parent();F&&(F._lastRect=null,F.recalc())}}}),ur=Nn.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}}),cr=function(t,e){return Pi.one(e,t)},dr=function(t,e){return function(){t.execCommand("mceToggleFormat",!1,e)}},fr=function(t,e,n){var i=function(t){n(t,e)};t.formatter?t.formatter.formatChanged(e,i):t.on("init",function(){t.formatter.formatChanged(e,i)})},hr=function(t,n){return function(e){fr(t,n,function(t){e.control.active(t)})}},mr=function(i){var e=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",t=[{text:"Left",icon:"alignleft",onclick:dr(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:dr(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:dr(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:dr(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:t}),i.addButton("align",{type:"menubutton",icon:r,menu:t,onShowMenu:function(t){var n=t.control.menu;C.each(e,function(e,t){n.items().eq(t).each(function(t){return t.active(i.formatter.match(e))})})},onPostRender:function(t){var n=t.control;C.each(e,function(e,t){fr(i,e,function(t){n.icon(r),t&&n.icon(e)})})}}),C.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,e){i.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:hr(i,e)})})},gr=function(t){return t?t.split(",")[0]:""},pr=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(t){var e,n,i,r,o=l.queryCommandValue("FontName"),s=(e=u,r=(n=o)?n.toLowerCase():"",C.each(e,function(t){t.value.toLowerCase()===r&&(i=t.value)}),C.each(e,function(t){i||gr(t.value).toLowerCase()!==gr(r).toLowerCase()||(i=t.value)}),i);a.value(s||null),!s&&o&&a.text(gr(o))})}},vr=function(n){n.addButton("fontselect",function(){var t,e=(t=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(n.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"),C.map(t,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:e,fixedWidth:!0,onPostRender:pr(n,e),onselect:function(t){t.control.settings.value&&n.execCommand("FontName",!1,t.control.settings.value)}}})},br=function(t){vr(t)},yr=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},xr=function(t,e,n){var i;return C.each(t,function(t){t.value===n?i=n:t.value===e&&(i=e)}),i},wr=function(n){n.addButton("fontsizeselect",function(){var t,s,a,e=(t=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",C.map(t.split(" "),function(t){var e=t,n=t,i=t.split("=");return 1<i.length&&(e=i[0],n=i[1]),{text:e,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:(s=n,a=e,function(){var o=this;s.on("init nodeChange",function(t){var e,n,i,r;if(e=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=yr(e,i),r=xr(a,n,e);o.value(r||null),r||o.text(n)})}),onclick:function(t){t.control.settings.value&&n.execCommand("FontSize",!1,t.control.settings.value)}}})},_r=function(t){wr(t)},Cr=function(n,t){var i=t.length;return C.each(t,function(t){t.menu&&(t.hidden=0===Cr(n,t.menu));var e=t.format;e&&(t.hidden=!n.formatter.canApply(e)),t.hidden&&i--}),i},Rr=function(n,t){var i=t.items().length;return t.items().each(function(t){t.menu&&t.visible(0<Rr(n,t.menu)),!t.menu&&t.settings.menu&&t.visible(0<Cr(n,t.settings.menu));var e=t.settings.format;e&&t.visible(n.formatter.canApply(e)),t.visible()||i--}),i},Er=function(t){var i,r,o,e,s,n,a,l,u=(r=0,o=[],e=[{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"}]}],s=function(t){var i=[];if(t)return C.each(t,function(t){var e={text:t.title,icon:t.icon};if(t.items)e.menu=s(t.items);else{var n=t.format||"custom"+r++;t.format||(t.name=n,o.push(t)),e.format=n,e.cmd=t.cmd}i.push(e)}),i},(i=t).on("init",function(){C.each(o,function(t){i.formatter.register(t.name,t)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(e.concat(i.settings.style_formats)):s(e):s(i.settings.style_formats||e),onPostRender:function(t){i.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var t,e;(t=n.settings.format)&&(n.disabled(!i.formatter.canApply(t)),n.active(i.formatter.match(t))),(e=n.settings.cmd)&&n.active(i.queryCommandState(e))})},onclick:function(){this.settings.format&&dr(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,t.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=t).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&Rr(a,this.menu)}})},kr=function(n,t){return function(){var r,o,s,e=[];return C.each(t,function(t){e.push({text:t[0],value:t[1],textStyle:function(){return n.formatter.getCssText(t[1])}})}),{type:"listbox",text:t[0][0],values:e,fixedWidth:!0,onselect:function(t){if(t.control){var e=t.control.value();dr(n,e)()}},onPostRender:(r=n,o=e,function(){var e=this;r.on("nodeChange",function(t){var n=r.formatter,i=null;C.each(t.parents,function(e){if(C.each(o,function(t){if(s?n.matchNode(e,s,{value:t.value})&&(i=t.value):n.matchNode(e,t.value)&&(i=t.value),i)return!1}),i)return!1}),e.value(i)})})}}},Tr=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,C.map(n,function(t){return{text:t[0],onclick:dr(e,t[1]),textStyle:function(){return e.formatter.getCssText(t[1])}}}))}),t.addButton("formatselect",kr(t,i))},Hr=function(e,t){var n,i;if("string"==typeof t)i=t.split(" ");else if(C.isArray(t))return 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);Ht.apply(e,t[n])}return e}(C.map(t,function(t){return Hr(e,t)}));return n=C.grep(i,function(t){return"|"===t||t in e.menuItems}),C.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},Mr=function(t){return t&&"-"===t.text},Sr=function(t){var e=Rt(t,function(t,e,n){return!Mr(t)||!Mr(n[e-1])});return Rt(e,function(t,e,n){return!Mr(t)||0<e&&e<n.length-1})},Nr=function(t){var e,n,i,r,o=t.settings.insert_button_items;return Sr(o?Hr(t,o):(e=t,n="insert",i=[{text:"-"}],r=C.grep(e.menuItems,function(t){return t.context===n}),C.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))},Or=function(t){var e;(e=t).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Nr(e)),this.menu.renderNew()}})},Dr=function(t){var n,i,r;n=t,C.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,e){n.addButton(e,{active:!1,tooltip:t,onPostRender:hr(n,e),onclick:dr(n,e)})}),i=t,C.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){i.addButton(e,{tooltip:t[0],cmd:t[1]})}),r=t,C.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(t,e){r.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:hr(r,e)})})},Pr=function(t){var n;Dr(t),n=t,C.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,e){n.addMenuItem(e,{text:t[0],icon:e,shortcut:t[2],cmd:t[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:dr(n,"code")})},Wr=function(n,i){return function(){var t=this,e=function(){var t="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[t]()};t.disabled(!e()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){t.disabled(n.readonly||!e())})}},Ar=function(t){var e,n;(e=t).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Wr(e,"undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Wr(e,"redo"),cmd:"redo"}),(n=t).addButton("undo",{tooltip:"Undo",onPostRender:Wr(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:Wr(n,"redo"),cmd:"redo"})},Br=function(t){var e,n;(e=t).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=e,function(){var e=this;n.on("VisualAid",function(t){e.active(t.hasVisual)}),e.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Lr={setup:function(t){var e;t.rtl&&(ce.rtl=!0),t.on("mousedown",function(){Ve.hideAll()}),(e=t).settings.ui_container&&(h.container=cr(Qn.fromDom(document.body),e.settings.ui_container).fold(lt(null),function(t){return t.dom()})),be.tooltips=!h.iOS,ce.translate=function(t){return S.translate(t)},Tr(t),mr(t),Pr(t),Ar(t),_r(t),br(t),Er(t),Br(t),Or(t)}},Ir=On.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,C,R,E,k,T,H,M=[],S=[];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),b=e.spacingH||e.spacing||0,y=e.spacingV||e.spacing||0,x=e.alignH||e.align,w=e.alignV||e.align,p=t.paddingBox,H="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++)S.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)R=(u=c.layoutRect()).minW,E=u.minH,M[d]=R>M[d]?R:M[d],S[f]=E>S[f]?E:S[f];for(k=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=M[d]+(0<d?b:0),k-=(0<d?b:0)+M[d];for(T=o.innerH-p.top-p.bottom,f=C=0;f<n;f++)C+=S[f]+(0<f?y:0),T-=(0<f?y:0)+S[f];if(_+=p.left+p.right,C+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=C+(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 N;o.autoResize&&((l=t.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===e.packV?0:0<T?Math.floor(T/n):0;var O=0,D=e.flexWidths;if(D)for(d=0;d<D.length;d++)O+=D[d];else O=i;var P=k/O;for(d=0;d<i;d++)M[d]+=D?D[d]*P:P;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=S[f]+N,d=0;d<i&&(c=r[H?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,t.layoutRect(l),this.recalc(t),null===t._lastRect){var W=t.parent();W&&(W._lastRect=null,W.recalc())}}}),zr=be.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()):c.setTimeout(function(){n.html(t)}),this}}),Fr=be.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 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()}}),Ur=be.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&&(St.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,St.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 e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Vr=De.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()}}),qr=Vr.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),Yr=Dn.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=Ee.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 qr?"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 r=this;return r.on("click",function(t){t.control===r&&function(t,e){for(;t;){if(e===t)return!0;t=t.parentNode}return!1}(t.target,r.getEl())&&(r.focus(),r.showMenu(!t.aria),t.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(t){var e,n=t.control,i=r.parent();n&&i&&n instanceof Yr&&n.parent()===i&&(i.items().filter("MenuButton").each(function(t){t.hideMenu&&t!==n&&(t.menu&&t.menu.visible()&&(e=!0),t.hideMenu())}),e&&(n.focus(),n.showMenu()))}),r._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 $r(i,r){var o,s,a=this,l=ce.classPrefix;a.show=function(t,e){function n(){o&&(Nt(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),e&&e())}return a.hide(),o=!0,t?s=c.setTimeout(n,t):n(),a},a.hide=function(){var t=i.lastChild;return c.clearTimeout(s),t&&-1!==t.className.indexOf("throbber")&&t.parentNode.removeChild(t),o=!1,a}}var Xr=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]=C.extend({},t.itemDefaults,e[n]);this._super(t),this.classes.add("menu"),t.animate&&11!==h.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,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new $r(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=e=(new Date).getTime(),n.settings.itemsFactory(function(t){0!==t.length?n.requestTime===e&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(t),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(t){var e=t.settings;if(e.icon||e.image||e.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(t){t.control===n&&("show"===t.type?c.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),jr=Yr.extend({init:function(i){var e,r,o,n,s=this;s._super(i),i=s.settings,s._values=e=i.values,e&&("undefined"!=typeof i.value&&function t(e){for(var n=0;n<e.length;n++){if(r=e[n].selected||i.value===e[n].value)return o=o||e[n].text,s.state.set("value",e[n].value),!0;if(e[n].menu&&t(e[n].menu))return!0}}(e),!r&&0<e.length&&(o=e[0].text,s.state.set("value",e[0].value)),s.state.set("menu",e)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(t){var e=t.control;n&&(t.lastControl=n),i.multiple?e.active(!e.active()):s.value(t.control.value()),n=e})},value:function(e){return 0===arguments.length?this.state.get("value"):(void 0===e||(this.settings.values?0<C.grep(this.settings.values,function(t){return t.value===e}).length?this.state.set("value",e):null===e&&this.state.set("value",null):this.state.set("value",e)),this)},bindStates:function(){var i=this;return i.on("show",function(t){var e,n;e=t.control,n=i.value(),e instanceof Xr&&e.items().each(function(t){t.hasMenus()||t.active(t.value()===n)})}),i.state.on("change:value",function(e){var n=function t(e,n){var i;if(e)for(var r=0;r<e.length;r++){if(e[r].value===n)return e[r];if(e[r].menu&&(i=t(e[r].menu,n)))return i}}(i.state.get("menu"),e.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),Jr=be.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 e,n=this,t=n.settings,i=n.parent();if(i.items().each(function(t){t!==n&&t.hideMenu()}),t.menu){(e=n.menu)?e.show():((e=t.menu).length?e={type:"menu",items:e}:e.type=e.type||"menu",i.settings.itemDefaults&&(e.itemDefaults=i.settings.itemDefaults),(e=n.menu=Ee.create(e).parent(n).renderTo()).reflow(),e.on("cancel",function(t){t.stopPropagation(),n.focus(),e.hide()}),e.on("show hide",function(t){t.control.items&&t.control.items().each(function(t){t.active(t.settings.selected)})}).fire("show"),e.on("hide",function(t){t.control===e&&n.classes.remove("selected")}),e.submenu=!0),e._parentMenu=i,e.classes.add("menu-sub");var r=e.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);e.moveRel(n.getEl(),r),r="menu-sub-"+(e.rel=r),e.classes.remove(e._lastRel).add(r),e._lastRel=r,n.classes.add("selected"),n.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,a="",l=i.shortcut,u=e.encode(i.url);function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(t){var e=i.match||"";return e?t.replace(new RegExp(c(e),"gi"),function(t){return"!mce~match["+t+"]mce~match!"}):t}function f(t){return t.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&e.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(t){var e,n,i={};for(i=h.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("+")}(l)),s=r+"ico "+r+"i-"+(e.settings.icon||"none"),t="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(e.encode(d(o))),u=f(e.encode(d(u))),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1">'+t+("-"!==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,n=e.settings,t=n.textStyle;if("function"==typeof t&&(t=t.call(this)),t){var i=e.getEl("text");i&&(i.setAttribute("style",t),e._textStyle=t)}return e.on("mouseenter click",function(t){t.control===e&&(n.menu||"click"!==t.type?(e.showMenu(),t.aria&&e.menu.focus(!0)):(e.fire("select"),c.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},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()}}),Gr=An.extend({Defaults:{classes:"radio",role:"radio"}}),Kr=be.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 e=this;e._super(),e.resizeDragHelper=new Re(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 Zr(t){var e="";if(t)for(var n=0;n<t.length;n++)e+='<option value="'+t[n]+'">'+t[n]+"</option>";return e}var Qr=be.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(t){var n=this;n._super(t),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.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=Zr(e._options),e.size&&(n=' size = "'+e.size+'"'),'<select id="'+e._id+'" class="'+e.classes+'"'+n+">"+t+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(t){e.getEl().innerHTML=Zr(t.value)}),e._super()}});function to(t,e,n){return t<e&&(t=e),n<t&&(t=n),t}function eo(t,e,n){t.setAttribute("aria-"+e,n)}function no(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)-St.getSize(s)[i])*((e-t._minValue)/(t._maxValue-t._minValue))+"px",s.style[r]=o,s.style.height=t.layoutRect().h+"px",eo(s,"valuenow",e),eo(s,"valuetext",""+t.settings.previewFilter(e)),eo(s,"valuemin",t._minValue),eo(s,"valuemax",t._maxValue)}var io=be.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=yt(t.minValue)?t.minValue:0,e._maxValue=yt(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(o,s){function e(t){var e,n,i,r;e=to(e=(((e=m.value())+(r=n=o))/((i=s)-r)+.05*t)*(i-n)-n,o,s),m.value(e),m.fire("dragstart",{value:e}),m.fire("drag",{value:e}),m.fire("dragend",{value:e})}m.on("keydown",function(t){switch(t.keyCode){case 37:case 38:e(-1);break;case 39:case 40:e(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)-St.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(t){var e=t[n]-u;f=to(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(),no(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){no(e,t.value)}),e._super()}}),ro=be.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),oo=Yr.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,Nt(t).css({width:i.w-St.getSize(e).width,height:i.h-2}),Nt(e).css({height:i.h-2}),this},activeMenu:function(t){Nt(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 n=this.settings.onclick;return this.on("click",function(t){var e=t.target;if(t.control===this)for(;e;){if(t.aria&&"down"!==t.aria.key||"BUTTON"===e.nodeName&&-1===e.className.indexOf("open"))return t.stopImmediatePropagation(),void(n&&n.call(this,t));e=e.parentNode}}),delete this.settings.onclick,this._super()}}),so=ur.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),ao=We.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var t;this.activeTabId&&(t=this.getEl(this.activeTabId),Nt(t).removeClass(this.classPrefix+"active"),t.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(t=this.getEl("t"+n)).setAttribute("aria-selected","true"),Nt(t).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(t,e){n!==e&&t.hide()})},renderHtml:function(){var i=this,t=i._layout,r="",o=i.classPrefix;return i.preRender(),t.preRender(i),i.items().each(function(t,e){var n=i._id+"-t"+e;t.aria("role","tabpanel"),t.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+i.encode(t.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+t.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(t){var e=t.target.parentNode;if(e&&e.id===i._id+"-head")for(var n=e.childNodes.length;n--;)e.childNodes[n]===t.target&&i.activateTab(n)})},initLayoutRect:function(){var t,e,n,i=this;e=(e=St.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=St.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}}),lo=be.extend({init:function(t){var n=this;n._super(t),n.classes.add("textbox"),t.multiline?n.classes.add("multiline"):(n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.toJSON()}))}),n.on("keyup",function(t){n.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 e,t,n=this,i=n.settings;return e={id:n._id,hidefocus:"1"},C.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=St.create(i.multiline?"textarea":"input",e)).value=n.state.get("value"),t.className=n.classes.toString(),t.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 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()}}),uo=function(){return{Selector:qt,Collection:Xt,ReflowQueue:ee,Control:ce,Factory:Ee,KeyboardNavigation:Te,Container:De,DragHelper:Re,Scrollable:Pe,Panel:We,Movable:pe,Resizable:Ae,FloatPanel:Ve,Window:Je,MessageBox:Ge,Tooltip:ve,Widget:be,Progress:ye,Notification:we,Layout:Nn,AbsoluteLayout:On,Button:Dn,ButtonGroup:Wn,Checkbox:An,ComboBox:Ln,ColorBox:In,PanelButton:zn,ColorButton:Un,ColorPicker:qn,Path:$n,ElementPath:Xn,FormItem:jn,Form:Jn,FieldSet:Gn,FilePicker:sr,FitLayout:ar,FlexLayout:lr,FlowLayout:ur,FormatControls:Lr,GridLayout:Ir,Iframe:zr,InfoBox:Fr,Label:Ur,Toolbar:Vr,MenuBar:qr,MenuButton:Yr,MenuItem:Jr,Throbber:$r,Menu:Xr,ListBox:jr,Radio:Gr,ResizeHandle:Kr,SelectBox:Qr,Slider:io,Spacer:ro,SplitButton:oo,StackLayout:so,TabPanel:ao,TextBox:lo,DropZone:Yn,BrowseButton:Pn}},co=function(n){n.ui?C.each(uo(),function(t,e){n.ui[e]=t}):n.ui=uo()};C.each(uo(),function(t,e){Ee.add(e,t)}),co(window.tinymce?window.tinymce:{}),o.add("inlite",function(t){var e=Sn();return Lr.setup(t),Cn(t,e),Ke(t,e)})}();
\ No newline at end of file
+!function(){"use strict";var u,t,e,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.util.Delay"),s=function(t){return t.reduce(function(t,e){return Array.isArray(e)?t.concat(s(e)):t.concat(e)},[])},a={flatten:s},l=function(t,e){for(var n=0;n<e.length;n++){var i=(0,e[n])(t);if(i)return i}return null},d=function(t,e){return{id:t,rect:e}},f=function(t){return{x:t.left,y:t.top,w:t.width,h:t.height}},m=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}},g=function(t){var e=v.DOM.getViewPort();return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}},p=function(t){var e=t.getBoundingClientRect();return g({x:e.left,y:e.top,w:Math.max(t.clientWidth,t.offsetWidth),h:Math.max(t.clientHeight,t.offsetHeight)})},b=function(t,e){return p(e)},y=function(t){return p(t.getContentAreaContainer()||t.getBody())},x=function(t){var e=t.selection.getBoundingClientRect();return e?g(f(e)):null},w=function(n,i){return function(t){for(var e=0;e<i.length;e++)if(i[e].predicate(n))return d(i[e].id,b(t,n));return null}},_=function(i,r){return function(t){for(var e=0;e<i.length;e++)for(var n=0;n<r.length;n++)if(r[n].predicate(i[e]))return d(r[n].id,b(t,i[e]));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(e){return function(t){return t.selection.isCollapsed()?null:d(e,x(t))}},H=function(i,r){return function(t){var e,n=t.schema.getTextBlockElements();for(e=0;e<i.length;e++)if("TABLE"===i[e].nodeName)return null;for(e=0;e<i.length;e++)if(i[e].nodeName in n)return t.dom.isEmpty(i[e])?d(r,x(t)):null;return null}},T=function(t){t.fire("SkinLoaded")},S=function(t){return t.fire("BeforeRenderUI")},M=tinymce.util.Tools.resolve("tinymce.EditorManager"),N=function(e){return function(t){return typeof t===e}},O=function(t){return Array.isArray(t)},P=function(t){return N("string")(t)},W=function(t){return N("number")(t)},D=function(t){return N("boolean")(t)},A=function(t){return N("function")(t)},B=(N("object"),O),L=function(t,e){if(e(t))return!0;throw new Error("Default value doesn't match requested type.")},I=function(r){return function(t,e,n){var i=t.settings;return L(n,r),e in i&&r(i[e])?i[e]:n}},z={getStringOr:I(P),getBoolOr:I(D),getNumberOr:I(W),getHandlerOr:I(A),getToolbarItemsOr:(u=B,function(t,e,n){var i,r,o,s,a,l=e in t.settings?t.settings[e]:n;return L(n,u),r=n,B(i=l)?i:P(i)?"string"==typeof(s=i)?(a=/[ ,]/,s.split(a).filter(function(t){return 0<t.length})):s:D(i)?(o=r,!1===i?[]:o):r})},F=tinymce.util.Tools.resolve("tinymce.geom.Rect"),U=function(t,e){return{rect:t,position:e}},V=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=V(r,s),U(a,o)):(n=F.intersect(l,n))?((o=F.findBestRelativePosition(r,n,l,e))?(s=F.relativePosition(r,n,o),a=V(r,s)):a=V(r,n),U(a,o)):null},Y=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)},X=function(t,e,n,i){var r;return"function"==typeof t?(r=t({elementRect:m(e),contentAreaRect:m(n),panelRect:m(i)}),f(r)):i},j=function(t){return t.panelRect},J=function(t){return z.getToolbarItemsOr(t,"selection_toolbar",["bold","italic","|","quicklink","h2","h3","blockquote"])},G=function(t){return z.getToolbarItemsOr(t,"insert_toolbar",["quickimage","quicktable"])},K=function(t){return z.getHandlerOr(t,"inline_toolbar_position_handler",j)},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=M.baseURL+"/skins/",e?n+e:n+"lightgray")},Q=function(t){return!1===t.settings.skin},tt=function(i,r){var t=Z(i),e=function(){var t,e,n;e=r,n=function(){t._skinLoaded=!0,T(t),e()},(t=i).initialized?n():t.on("init",n)};Q(i)?e():(v.DOM.styleSheetLoader.load(t+"/skin.min.css",e),i.contentCSS.push(t+"/content.inline.min.css"))},et=function(t){var e,n,i,r,o=t.contextToolbars;return a.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=l(t,[w(i[0],r),E("text"),H(i,"insert"),_(i,r)]))&&n.rect?n:null},it=function(i,r){return function(){var t,e,n;i.removed||(n=i,document.activeElement!==n.getBody())||(t=et(i),(e=nt(i,t))?r.show(i,e.id,e.rect,t):r.hide())}},rt=function(t,e){var n,i,r,o,s,a=c.throttle(it(t,e),0),l=c.throttle((r=it(n=t,i=e),function(){n.removed||i.inForm()||r()}),0),u=(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",a),t.on("nodeChange mouseup",l),t.on("ResizeEditor keyup",a),t.on("ResizeWindow",u),v.DOM.bind(h.container,"scroll",u),t.on("remove",function(){v.DOM.unbind(h.container,"scroll",u),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=l(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(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},lt=function(t){return function(){return t}},ut=lt(!1),ct=lt(!0),dt=ut,ft=ct,ht=function(){return mt},mt=(i={fold:function(t,e){return t()},is:dt,isSome:dt,isNone:ft,getOr:n=function(t){return t},getOrThunk:e=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:n,orThunk:e,map:ht,ap:ht,each:function(){},bind:ht,flatten:ht,exists:dt,forall:ft,filter:ht,equals:t=function(t){return t.isNone()},equals_:t,toArray:function(){return[]},toString:lt("none()")},Object.freeze&&Object.freeze(i),i),gt=function(n){var t=function(){return n},e=function(){return r},i=function(t){return t(n)},r={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ft,isNone:dt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return gt(t(n))},ap:function(t){return t.fold(ht,function(t){return gt(t(n))})},each:function(t){t(n)},bind:i,flatten:t,exists:i,forall:i,filter:function(t){return t(n)?r:mt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(dt,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},pt={some:gt,none:ht,from:function(t){return null===t||t===undefined?mt:gt(t)}},vt=function(e){return function(t){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}(t)===e}},bt=vt("function"),yt=vt("number"),xt=(r=Array.prototype.indexOf)===undefined?function(t,e){return Et(t,e)}:function(t,e){return r.call(t,e)},wt=function(t,e){return kt(t,e).isSome()},_t=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},Rt=function(t,e){for(var n=0,i=t.length;n<i;n++)e(t[n],n,t)},Ct=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},kt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(e(t[n],n,t))return pt.some(n);return pt.none()},Et=function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},Ht=Array.prototype.push,Tt=(Array.prototype.slice,bt(Array.from)&&Array.from,0),St={id:function(){return"mceu_"+Tt++},create:function(t,e,n){var i=document.createElement(t);return v.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 v.DOM.createFragment(t)},getWindowSize:function(){return v.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 v.DOM.getPos(t,e||St.getContainer())},getContainer:function(){return h.container?h.container:document.body},getViewPort:function(t){return v.DOM.getViewPort(t)},get:function(t){return document.getElementById(t)},addClass:function(t,e){return v.DOM.addClass(t,e)},removeClass:function(t,e){return v.DOM.removeClass(t,e)},hasClass:function(t,e){return v.DOM.hasClass(t,e)},toggleClass:function(t,e,n){return v.DOM.toggleClass(t,e,n)},css:function(t,e,n){return v.DOM.setStyle(t,e,n)},getRuntimeStyle:function(t,e){return v.DOM.getStyle(t,e,!0)},on:function(t,e,n,i){return v.DOM.bind(t,e,n,i)},off:function(t,e,n){return v.DOM.unbind(t,e,n)},fire:function(t,e,n){return v.DOM.fire(t,e,n)},innerHtml:function(t,e){v.DOM.setHTML(t,e)}},Mt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Nt=tinymce.util.Tools.resolve("tinymce.util.Class"),Ot=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Pt=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})},Wt=function(i,t){function e(t){var e=parseFloat(function(t){var e=i.ownerDocument.defaultView;if(e){var n=e.getComputedStyle(i,null);return n?(t=t.replace(/[A-Z]/g,function(t){return"-"+t}),n.getPropertyValue(t)):null}return i.currentStyle[t]}(t));return isNaN(e)?0:e}return{top:e(t+"TopWidth"),right:e(t+"RightWidth"),bottom:e(t+"BottomWidth"),left:e(t+"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++)0<e&&(t+=" "),t+=this.prefix+this.cls[e];return t};var Bt,Lt,It,zt=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Ft=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Ut=/^\s*|\s*$/g,Vt=Nt.extend({init:function(t){var o=this.match;function s(t,e,n){var i;function r(t){t&&e.push(t)}return r(function(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}((i=zt.exec(t.replace(Ut,"")))[1])),r(function(e){if(e)return function(t){return t._name===e}}(i[2])),r(function(n){if(n)return n=n.split("."),function(t){for(var e=n.length;e--;)if(!t.classes.contains(n[e]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(t){var e=t[n]?t[n]():"";return i?"="===i?e===r:"*="===i?0<=e.indexOf(r):"~="===i?0<=(" "+e+" ").indexOf(" "+r+" "):"!="===i?e!==r:"^="===i?0===e.indexOf(r):"$="===i&&e.substr(e.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var e;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(e=a(i[1],[]),function(t){return!o(t,e)}):(i=i[2],function(t,e,n){return"first"===i?0===e:"last"===i?e===n-1:"even"===i?e%2==0:"odd"===i?e%2==1:!!t[i]&&t[i]()})}(i[7])),e.pseudo=!!i[7],e.direct=n,e}function a(t,e){var n,i,r,o=[];do{if(Ft.exec(""),(i=Ft.exec(t))&&(t=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,e),t=[],r=0;r<o.length;r++)">"!==o[r]&&t.push(s(o[r],[],">"===o[r-1]));return e.push(t),e}this._selectors=a(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;0<=r;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,u=[],i=this._selectors;function c(t,e,n){var i,r,o,s,a,l=e[n];for(i=0,r=t.length;i<r;i++){for(a=t[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===e.length-1?u.push(a):a.items&&c(a.items(),e,n+1);else if(l.direct)return;a.items&&c(a.items(),e,n)}}if(t.items){for(e=0,n=i.length;e<n;e++)c(t.items(),i[e],0);1<n&&(u=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}(u))}return Bt||(Bt=Vt.Collection),new Bt(u)}}),qt=Array.prototype.push,Yt=Array.prototype.slice;It={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(e){var t,n,i,r,o=[];for("string"==typeof e?(e=new Vt(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 Lt(o)},slice:function(){return new Lt(Yt.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(e,n){var t;return n!==undefined?(this.each(function(t){t[e]&&t[e](n)}),this):(t=this[0])&&t[e]?t[e]():void 0},exec:function(e){var n=R.toArray(arguments).slice(1);return this.each(function(t){t[e]&&t[e].apply(t,n)}),this},remove:function(){for(var t=this.length;t--;)this[t].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)})}},R.each("fire on off show hide append prepend before after reflow".split(" "),function(n){It[n]=function(){var e=R.toArray(arguments);return this.each(function(t){n in t&&t[n].apply(t,e)}),this}}),R.each("text name disabled active selected checked visible parent value data".split(" "),function(e){It[e]=function(t){return this.prop(e,t)}}),Lt=Nt.extend(It);var $t=Vt.Collection=Lt,Xt=function(t){this.create=t.create};Xt.create=function(r,o){return new Xt({create:function(e,n){var i,t=function(t){e.set(n,t.value)};return e.on("change:"+n,function(t){r.set(o,t.value)}),r.on("change:"+o,t),(i=e._bindings)||(i=e._bindings=[],e.on("destroy",function(){for(var t=i.length;t--;)i[t]()})),i.push(function(){r.off("change:"+o,t)}),r.get(o)}})};var jt=tinymce.util.Tools.resolve("tinymce.util.Observable");function Jt(t){return 0<t.nodeType}var Gt,Kt,Zt=Nt.extend({Mixins:[jt],init:function(t){var e,n;for(e in t=t||{})(n=t[e])instanceof Xt&&(t[e]=n.create(this,e));this.data=t},set:function(e,n){var i,r,o=this.data[e];if(n instanceof Xt&&(n=n.create(this,e)),"object"==typeof e){for(i in e)this.set(i,e[i]);return this}return function t(e,n){var i,r;if(e===n)return!0;if(null===e||null===n)return e===n;if("object"!=typeof e||"object"!=typeof n)return e===n;if(R.isArray(n)){if(e.length!==n.length)return!1;for(i=e.length;i--;)if(!t(e[i],n[i]))return!1}if(Jt(e)||Jt(n))return e===n;for(i in r={},n){if(!t(e[i],n[i]))return!1;r[i]=!0}for(i in e)if(!r[i]&&!t(e[i],n[i]))return!1;return!0}(o,n)||(this.data[e]=n,r={target:this,name:e,value:n,oldValue:o},this.fire("change:"+e,r),this.fire("change",r)),this},get:function(t){return this.data[t]},has:function(t){return t in this.data},bind:function(t){return Xt.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,c.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"!==v.DOM.getStyle(e,"position",!0)){var n=v.DOM.getPos(e),i=e.scrollLeft-n.x,r=e.scrollTop-n.y;return pt.some({x:i,y:r})}return pt.none()},setUiContainer:function(t,e){var n=v.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(e){var t,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=e=R.extend({},i.Defaults,e),i._id=e.id||"mceu_"+oe++,i._aria={role:e.role},i._elmCache={},i.$=Mt,i.state=new Zt({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Zt(e.data),i.classes=new At(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)),R.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=Pt(e.border),i.paddingBox=Pt(e.padding),i.marginBox=Pt(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var t=ne.getUiContainer(this);return t||St.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||Wt(f,"border"),c.paddingBox=c.paddingBox||Wt(f,"padding"),c.marginBox=c.marginBox||Wt(f,"margin"),u=St.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=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),t.height=(0<=u?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=(0<=u?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=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var t=this;t.parent()._lastRect=null,St.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]=Mt("#"+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 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&&Mt(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 Mt(t).before(this.renderHtml()),this.postRender(),this},renderTo:function(t){return Mt(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=Mt(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)._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),e=(t=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(n){return n._eventDispatcher||(n._eventDispatcher=new Ot({scope:n,toggleEvent:function(t,e){e&&Ot.isNative(t)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[t]=!0,n.state.get("rendered")&&le(n))}})),n._eventDispatcher}function le(a){var t,e,n,l,i,r;function o(t){var e=a.getParentCtrl(t.target);e&&e.fire(t.type,t)}function s(){var t=l._lastHoverCtrl;t&&(t.fire("mouseleave",{target:t.getEl()}),t.parents().each(function(t){t.fire("mouseleave",{target:t.getEl()})}),l._lastHoverCtrl=null)}function u(t){var e,n,i,r=a.getParentCtrl(t.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(e=i.length-1;s<=e;e--)(o=i[e]).fire("mouseleave",{target:o.getEl()})}for(e=s;e<n.length;e++)(r=n[e]).fire("mouseenter",{target:r.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=a.fire("wheel",t)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),t=0,e=n.length;!l&&t<e;t++)l=n[t]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,e=t,t=0;t<e;t++)n[t]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||re?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(Mt(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(Mt(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):ie?Mt(a.getEl()).on("mousewheel",c):Mt(a.getEl()).on("DOMMouseScroll",c)}}}R.each("text title visible disabled active value".split(" "),function(e){se[e]=function(t){return 0===arguments.length?this.state.get(e):(void 0!==t&&this.state.set(e,t),this)}});var ue=Kt=Nt.extend(se),ce=function(t){return"static"===St.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=St.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=St.getSize(i)).width,l=f.height,u=(f=St.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;return{x:Math.max(t.pageXOffset,document.body.scrollLeft,document.documentElement.scrollLeft),y:Math.max(t.pageYOffset,document.body.scrollTop,document.documentElement.scrollTop),w:t.innerWidth||document.documentElement.clientWidth,h: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(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return e[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)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:e<t+n&&(t=e-n)<0?0:t}if(n.settings.constrainToViewport){var r=me(this),o=n.layoutRect();t=i(t,r.w+r.x,o.w),e=i(e,r.h+r.y,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 e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._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(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==ve.tooltips&&(r.on("mouseenter",function(t){var e=r.tooltip().moveTo(-65535);if(t.control===r){var n=e.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===n),e.classes.toggle("tooltip-nw","bc-tl"===n),e.classes.toggle("tooltip-ne","bc-tr"===n),e.moveRel(r.getEl(),n)}else e.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.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 e=this;function n(t){e.aria("disabled",t),e.classes.toggle("disabled",t)}function i(t){e.aria("pressed",t),e.classes.toggle("active",t)}return e.state.on("change:disabled",function(t){n(t.value)}),e.state.on("change:active",function(t){i(t.value)}),e.state.get("disabled")&&n(!0),e.state.get("active")&&i(!0),e._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),be=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 e=this;function n(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(t){n(t.value)}),n(e.state.get("value")),e._super()}}),ye=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||0<t.timeout)&&!t.closeButton?e.closeButton=!1:(e.classes.add("has-close"),e.closeButton=!0),t.progressBar&&(e.progressBar=new be),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 c.setTimeout(function(){t.$el.addClass(t.classPrefix+"in"),ye(t,t.state.get("text"))},100),t._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().firstChild.innerHTML=t.value,ye(e,t.value)}),e.progressBar&&(e.progressBar.bindStates(),e.progressBar.state.on("change:value",function(t){ye(e,e.state.get("text"))})),e._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(o){var s=function(t){return t.inline?t.getElement():t.getContentAreaContainer()};return{open:function(t,e){var n,i=R.extend(t,{maxWidth:(n=s(o),St.getSize(n).width)}),r=new xe(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),e()},i.timeout)),r.on("close",function(){e()}),r.renderTo(),r},close:function(t){t.close()},reposition:function(t){Rt(t,function(t){t.moveTo(0,0)}),function(n){if(0<n.length){var t=n.slice(0,1)[0],e=s(o);t.moveRel(e,"tc-tc"),Rt(n,function(t,e){0<e&&t.moveRel(n[e-1].getEl(),"bc-tc")})}}(t)},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,h){var m,g,e,p,v,b,y,x=h.document||document;h=h||{};var w=x.getElementById(h.handle||t);e=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=(e=x,u=Math.max,n=e.documentElement,i=e.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});_e(t),t.preventDefault(),g=t.button,c=w,b=t.screenX,y=t.screenY,d=window.getComputedStyle?window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=Mt("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),Mt(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(t)},v=function(t){if(_e(t),t.button!==g)return p(t);t.deltaX=t.screenX-b,t.deltaY=t.screenY-y,t.preventDefault(),h.drag(t)},p=function(t){_e(t),Mt(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(t)},this.destroy=function(){Mt(w).off()},Mt(w).on("mousedown touchstart",e)}var Ce=tinymce.util.Tools.resolve("tinymce.ui.Factory"),ke=function(t){return!!t.getAttribute("data-mce-tabstop")};function Ee(t){var o,r,n=t.root;function i(t){return t&&1===t.nodeType}try{o=document.activeElement}catch(e){o=document.body}function s(t){return i(t=t||o)?t.getAttribute("role"):null}function a(t){for(var e,n=t||o;n=n.parentNode;)if(e=s(n))return e}function l(t){var e=o;if(i(e))return e.getAttribute("aria-"+t)}function u(t){var e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function c(e){var r=[];return function t(e){if(1===e.nodeType&&"none"!==e.style.display&&!e.disabled){var n;(u(n=e)&&!n.hidden||ke(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(e);for(var i=0;i<e.childNodes.length;i++)t(e.childNodes[i])}}(e||n.getEl()),r}function d(t){var e,n;(n=(t=t||r).parents().toArray()).unshift(t);for(var i=0;i<n.length&&!(e=n[i]).settings.ariaRoot;i++);return e}function f(t,e){return t<0?t=e.length-1:t>=e.length&&(t=0),e[t]&&e[t].focus(),t}function h(t,e){var n=-1,i=d();e=e||c(i.getEl());for(var r=0;r<e.length;r++)e[r]===o&&(n=r);n+=t,i.lastAriaIndex=f(n,e)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var t=s(),e=a();"tablist"===e?h(1,c(o.parentNode)):"menuitem"===t&&"menu"===e&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var t=s(),e=a();"menuitem"===t&&"menubar"===e?y():"button"===t&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(t){t=t||{},r.fire("click",{target:o,aria:t})}return r=n.getParentCtrl(o),n.on("keydown",function(t){function e(t,e){u(o)||ke(o)||"slider"!==s(o)&&!1!==e(t)&&t.preventDefault()}if(!t.isDefaultPrevented())switch(t.keyCode){case 37:e(t,m);break;case 39:e(t,g);break;case 38:e(t,p);break;case 40:e(t,v);break;case 27:b();break;case 14:case 13:case 32:e(t,y);break;case 9:!function(t){if("tablist"===a()){var e=c(r.getEl("body"))[0];e&&e.focus()}else h(t.shiftKey?-1:1)}(t),t.preventDefault()}}),n.on("focusin",function(t){o=t.target,r=t.control}),{focusFirst:function(t){var e=d(t),n=c(e.getEl());e.settings.ariaRemember&&"lastAriaIndex"in e?f(e.lastAriaIndex,n):f(0,n)}}}var He,Te,Se,Me,Ne={},Oe=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=Ne[t]=Ne[t]||new Vt(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}0<=r&&((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 i=this;return i.items().each(function(t,e){var n;t.parent(i),t.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&e<=n.childNodes.length-1?Mt(n.childNodes[e]).before(t.renderHtml()):Mt(n).append(t.renderHtml()),t.postRender(),te.add(t))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},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),0<=e&&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 i={};return this.find("*").each(function(t){var e=t.name(),n=t.value();e&&void 0!==n&&(i[e]=n)}),i},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}}),Pe={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,t;function e(t,e,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+t)){if(f=e.toLowerCase(),h=n.toLowerCase(),Mt(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void Mt(a).css("display","none");Mt(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+t+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+e]+v,d[h]=u,Mt(a).css(d),(d={})[f]=s["scroll"+e]*c,d[h]=u*c,Mt(l).css(d)}}t=p.getEl("body"),m=t.scrollWidth>t.clientWidth,g=t.scrollHeight>t.clientHeight,e("h","Left","Width","contentW",m,"Height"),e("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function t(s,a,l,u,c){var d,t=p._id+"-scroll"+s,e=p.classPrefix;Mt(p.getEl()).append('<div id="'+t+'" class="'+e+"scrollbar "+e+"scrollbar-"+s+'"><div id="'+t+'t" class="'+e+'scrollbar-thumb"></div></div>'),p.draghelper=new Re(t+"t",{start:function(){d=p.getEl("body")["scroll"+a],Mt("#"+t).addClass(e+"active")},drag:function(t){var e,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,e=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+t["delta"+u]/e},stop:function(){Mt("#"+t).removeClass(e+"active")}})}p.classes.add("scroll"),t("v","Top","Height","Y","Width"),t("h","Left","Width","X","Height")}(),p.on("wheel",function(t){var e=p.getEl("body");e.scrollLeft+=10*(t.deltaX||0),e.scrollTop+=10*t.deltaY,n()}),Mt(p.getEl("body")).on("scroll",n)),n())}},We=Oe.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[Pe],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=St.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 Ie(){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)},Mt(document).on("click touchstart",He))}function ze(r){var t=St.getViewPort().y;function e(t,e){for(var n,i=0;i<Ae.length;i++)if(Ae[i]!==r)for(n=Ae[i].parent();n&&(n=n.parent());)n===r&&Ae[i].fixed(t).moveBy(0,e).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>t&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),e(!1,r._autoFixY-t)):(r._autoFixY=r.layoutRect().y,r._autoFixY<t&&(r.fixed(!0).layoutRect({y:0}).repaint(),e(!0,t-r._autoFixY))))}function Fe(t,e){var n,i,r=Ue.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=Mt("#"+e.classPrefix+"modal-block",e.getContainerElm())[0];i?Mt(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),Me=!1),Ue.currentZIndex=r}var Ue=We.extend({Mixins:[ge,De],init:function(t){var i=this;i._super(t),(i._eventsRoot=i).classes.add("floatpanel"),t.autohide&&(Ie(),function(){if(!Se){var t=document.documentElement,e=t.clientWidth,n=t.clientHeight;Se=function(){document.all&&e===t.clientWidth&&n===t.clientHeight||(e=t.clientWidth,n=t.clientHeight,Ue.hideAll())},Mt(window).on("resize",Se)}}(),Ae.push(i)),t.autofix&&(Te||(Te=function(){var t;for(t=Ae.length;t--;)ze(Ae[t])},Mt(window).on("scroll",Te)),i.on("move",function(){ze(this)})),i.on("postrender show",function(t){if(t.control===i){var e,n=i.classPrefix;i.modal&&!Me&&((e=Mt("#"+n+"modal-block",i.getContainerElm()))[0]||(e=Mt('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),c.setTimeout(function(){e.addClass(n+"in"),Mt(i.getEl()).addClass(n+"in")}),Me=!0),Fe(!0,i)}}),i.on("show",function(){i.parents().each(function(t){if(t.state.get("fixed"))return i.fixed(!0),!1})}),t.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",t.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(t){var e=this;if(e.state.get("fixed")!==t){if(e.state.get("rendered")){var n=St.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 Ve(this),Fe(!1,this),this._super()},hideAll:function(){Ue.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Fe(!1,this)),this},remove:function(){Ve(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Ve(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)}Ue.hideAll=function(){for(var t=Ae.length;t--;){var e=Ae[t];e&&e.settings.autohide&&(e.hide(),Ae.splice(t,1))}};var qe=[],Ye="";function $e(t){var e,n=Mt("meta[name=viewport]")[0];!1!==h.overrideViewPort&&(n||((n=document.createElement("meta")).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(e=n.getAttribute("content"))&&void 0!==Ye&&(Ye=e),n.setAttribute("content",t?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":Ye))}function Xe(t,e){(function(){for(var t=0;t<qe.length;t++)if(qe[t]._fullscreen)return!0;return!1})()&&!1===e&&Mt([document.documentElement,document.body]).removeClass(t+"fullscreen")}var je=Ue.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 n=this;n._super(t),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),t.buttons&&(n.statusbar=new We({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:t.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(t){var e=n.classPrefix+"close";(St.hasClass(t.target,e)||St.hasClass(t.target.parentNode,e))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(t){t.control===n&&Ue.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",t.title),n._fullscreen=!1},recalc:function(){var t,e,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(St.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=St.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=St.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 n,e,i=this,r=document.documentElement,o=i.classPrefix;if(t!==i._fullscreen)if(Mt(window).on("resize",function(){var t;if(i._fullscreen)if(n)i._timer||(i._timer=c.setTimeout(function(){var t=St.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),i._timer=0},50));else{t=(new Date).getTime();var e=St.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),50<(new Date).getTime()-t&&(n=!0)}}),e=i.layoutRect(),i._fullscreen=t){i._initial={x:e.x,y:e.y,w:e.w,h:e.h},i.borderBox=Pt("0"),i.getEl("head").style.display="none",e.deltaH-=e.headerH+2,Mt([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=St.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Pt(i.settings.border),i.getEl("head").style.display="",e.deltaH+=e.headerH,Mt([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,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new Re(n._id+"-dragh",{start:function(){e={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(t){n.moveTo(e.x+t.deltaX,e.y+t.deltaY)}}),n.on("submit",function(t){t.isDefaultPrevented()||n.close()}),qe.push(n),$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(),Xe(e.classPrefix,!1),t=qe.length;t--;)qe[t]===e&&qe.splice(t,1);$e(0<qe.length)},getContentWindow:function(){var t=this.getEl().getElementsByTagName("iframe")[0];return t?t.contentWindow:null}});!function(){if(!h.desktop){var n={w:window.innerWidth,h:window.innerHeight};c.setInterval(function(){var t=window.innerWidth,e=window.innerHeight;n.w===t&&n.h===e||(n={w:t,h:e},Mt(window).trigger("resize"))},100)}Mt(window).on("resize",function(){var t,e,n=St.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,Ke,Ze=je.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,i=t.callback||function(){};function n(t,e,n){return{type:"button",text:t,subtype:n?"primary":"",onClick:function(t){t.control.parents()[1].close(),i(e)}}}switch(t.buttons){case Ze.OK_CANCEL:e=[n("Ok",!0,!0),n("Cancel",!1)];break;case Ze.YES_NO:case Ze.YES_NO_CANCEL:e=[n("Yes",1,!0),n("No",0)],t.buttons===Ze.YES_NO_CANCEL&&e.push(n("Cancel",-1));break;default:e=[n("Ok",!0,!0)]}return new je({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(){i(!1)}}).renderTo(document.body).reflow()},alert:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,Ze.msgBox(t)},confirm:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,t.buttons=Ze.OK_CANCEL,Ze.msgBox(t)}}}),Qe=function(t,e){return{renderUI:function(){return st(t,e)},getNotificationManagerImpl:function(){return we(t)},getWindowManagerImpl:function(){return{open:function(n,t,e){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new je(n)).on("close",function(){e(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(t){var e=t.name();e in n.data&&t.value(n.data[e])})}),i.features=n||{},i.params=t||{},i=i.renderTo(document.body).reflow()},alert:function(t,e,n){var i;return(i=Ze.alert(t,function(){e()})).on("close",function(){n(i)}),i},confirm:function(t,e,n){var i;return(i=Ze.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}}}}},tn="undefined"!=typeof window?window:Function("return this;")(),en=function(t,e){return function(t,e){for(var n=e!==undefined&&null!==e?e:tn,i=0;i<t.length&&n!==undefined&&null!==n;++i)n=n[t[i]];return n}(t.split("."),e)},nn=function(t,e){var n=en(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n},rn=tinymce.util.Tools.resolve("tinymce.util.Promise"),on=function(n){return new rn(function(t){var e=new(nn("FileReader"));e.onloadend=function(){t(e.result.split(",")[1])},e.readAsDataURL(n)})},sn=function(){return new rn(function(e){var t;(t=document.createElement("input")).type="file",t.style.position="fixed",t.style.left=0,t.style.top=0,t.style.opacity=.001,document.body.appendChild(t),t.onchange=function(t){e(Array.prototype.slice.call(t.target.files))},t.click(),t.parentNode.removeChild(t)})},an=0,ln=function(t){return t+an+++(e=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+Date.now().toString(36)+e()+e()+e());var e},un=function(r,o){var s={};function t(t){var e,n,i;n=o[t?"startContainer":"endContainer"],i=o[t?"startOffset":"endOffset"],1===n.nodeType&&(e=r.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(i=Math.min(i,n.childNodes.length-1),t?n.insertBefore(e,n.childNodes[i]):r.insertAfter(e,n.childNodes[i])):n.appendChild(e),n=e,i=0),s[t?"startContainer":"endContainer"]=n,s[t?"startOffset":"endOffset"]=i}return t(!0),o.collapsed||t(),s},cn=function(r,o){function t(t){var e,n,i;e=i=o[t?"startContainer":"endContainer"],n=o[t?"startOffset":"endOffset"],e&&(1===e.nodeType&&(n=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}(e),e=e.parentNode,r.remove(i)),o[t?"startContainer":"endContainer"]=e,o[t?"startOffset":"endOffset"]=n)}t(!0),t();var e=r.createRng();return e.setStart(o.startContainer,o.startOffset),o.endContainer&&e.setEnd(o.endContainer,o.endOffset),e},dn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),fn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),hn=function(t){return"A"===t.nodeName&&t.hasAttribute("href")},mn=function(t){var e,n,i,r,o,s,a,l;return r=t.selection,o=t.dom,s=r.getRng(),a=o,l=fn.getNode(s.startContainer,s.startOffset),e=a.getParent(l,hn)||l,n=fn.getNode(s.endContainer,s.endOffset),i=t.getBody(),R.grep(function(t,e,n){var i,r,o=[];for(i=new dn(e,t),r=e;r&&(1===r.nodeType&&o.push(r),r!==n);r=i.next());return o}(i,e,n),hn)},gn=function(t){var e,n,i,r,o;n=mn(e=t),r=e.dom,o=e.selection,i=un(r,o.getRng()),R.each(n,function(t){e.dom.remove(t,!0)}),o.setRng(cn(r,i))},pn=function(t){t.selection.collapse(!1)},vn=function(t){t.focus(),gn(t),pn(t)},bn=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),pn(r)):(i=e,(n=t).execCommand("mceInsertLink",!1,{href:i}),pn(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)}))},xn=function(t,e){t.execCommand("FormatBlock",!1,e)},wn=function(t,e,n){var i,r;r=(i=t.editorUpload.blobCache).create(ln("mceu"),n,e),i.add(r),t.insertContent(t.dom.createHTML("img",{src:r.blobUri()}))},_n=function(t,e){0===e.trim().length?vn(t):bn(t,e)},Rn=vn,Cn=function(n,t){n.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){t.showForm(n,"quicklink")}}),n.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){sn().then(function(t){var e=t[0];on(e).then(function(t){wn(n,t,e)})})}}),n.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){t.hide(),yn(n,2,2)}}),function(e){for(var t=function(t){return function(){xn(e,t)}},n=1;n<6;n++){var i="h"+n;e.addButton(i,{text:i.toUpperCase(),tooltip:"Heading "+n,stateSelector:i,onclick:t(i),onPostRender:function(){this.getEl().firstChild.firstChild.style.fontWeight="bold"}})}}(n)},kn=function(){var t=h.container;if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var e=v.DOM.getPos(t),n=e.x-t.scrollLeft,i=e.y-t.scrollTop;return pt.some({x:n,y:i})}return pt.none()},En=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())},Hn=function(t){return/^https?:\/\//.test(t.trim())},Tn=function(t,e){return!Hn(e)&&En(e)?(n=t,i=e,new rn(function(e){n.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){e(!0===t?"http://"+i:i)})})):rn.resolve(e);var n,i},Sn=function(r,e){var t,n,i,o={};return t="quicklink",n={items:[{type:"button",name:"unlink",icon:"unlink",onclick:function(){r.focus(),Rn(r),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(t){if(t.control===this){var e,n="";(e=r.dom.getParent(r.selection.getStart(),"a[href]"))&&(n=r.dom.getAttrib(e,"href")),this.fromJSON({linkurl:n}),i=this.find("#unlink"),e?i.show():i.hide(),this.find("#linkurl")[0].focus()}var i},onsubmit:function(t){Tn(r,t.data.linkurl).then(function(t){r.undoManager.transact(function(){t===o.href&&(o.attach(),o={}),_n(r,t)}),e()})}},(i=Ce.create(R.extend({type:"form",layout:"flex",direction:"row",padding:5,name:t,spacing:3},n))).on("show",function(){i.find("textbox").eq(0).each(function(t){t.focus()})}),i},Mn=function(n,t,e){var o,i,s=[];if(e)return R.each(B(i=e)?i:P(i)?i.split(/[ ,]/):[],function(t){if("|"===t)o=null;else if(n.buttons[t]){o||(o={type:"buttongroup",items:[]},s.push(o));var e=n.buttons[t];A(e)&&(e=e()),e.type=e.type||"button",(e=Ce.create(e)).on("postRender",(i=n,r=e,function(){var e,t,n=(t=function(t,e){return{selector:t,handler:e}},(e=r).settings.stateSelector?t(e.settings.stateSelector,function(t){e.active(t)}):e.settings.disabledStateSelector?t(e.settings.disabledStateSelector,function(t){e.disabled(t)}):null);null!==n&&i.selection.selectorChanged(n.selector,n.handler)})),o.items.push(e)}var i,r}),Ce.create({type:"toolbar",layout:"flow",name:t,items:s})},Nn=function(){var l,c,o=function(t){return 0<t.items().length},u=function(t,e){var n,i,r=(n=t,i=e,R.map(i,function(t){return Mn(n,t.id,t.items)})).concat([Mn(t,"text",J(t)),Mn(t,"insert",G(t)),Sn(t,p)]);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(r,o),oncancel:function(){t.focus()}})},d=function(t){t&&t.show()},f=function(t,e){t.moveTo(e.x,e.y)},h=function(n,i){i=i?i.substr(0,2):"",R.each({t:"down",b:"up",c:"center"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(0,1))}),"cr"===i?(n.classes.toggle("arrow-left",!0),n.classes.toggle("arrow-right",!1)):"cl"===i?(n.classes.toggle("arrow-left",!1),n.classes.toggle("arrow-right",!0)):R.each({l:"left",r:"right"},function(t,e){n.classes.toggle("arrow-"+t,e===i.substr(1,1))})},m=function(t,e){var n=t.items().filter("#"+e);return 0<n.length&&(n[0].show(),t.reflow(),!0)},g=function(t,e,n,i){var r,o,s,a;if(a=K(n),r=y(n),o=v.DOM.getRect(t.getEl()),s="insert"===e?Y(i,r,o):$(i,r,o)){var l=kn().getOr({x:0,y:0}),u={x:s.rect.x-l.x,y:s.rect.y-l.y,w:s.rect.w,h:s.rect.h};return f(t,X(a,c=i,r,u)),h(t,s.position),!0}return!1},p=function(){l&&l.hide()};return{show:function(t,e,n,i){var r,o,s,a;l||(S(t),(l=u(t,i)).renderTo().reflow().moveTo(n.x,n.y),t.nodeChanged()),o=e,s=t,a=n,d(r=l),r.items().hide(),m(r,o)?!1===g(r,o,s,a)&&p():p()},showForm:function(t,e){if(l){if(l.items().hide(),!m(l,e))return void p();var n,i,r,o=void 0;d(l),l.items().hide(),m(l,e),r=K(t),n=y(t),o=v.DOM.getRect(l.getEl()),(i=$(c,n,o))&&(o=i.rect,f(l,X(r,c,n,o)),h(l,i.position))}},reposition:function(t,e,n){l&&g(l,e,t,n)},inForm:function(){return l&&l.visible()&&0<l.items().filter("form:visible").length},hide:p,focus:function(){l&&l.find("toolbar:visible").eq(0).each(function(t){t.focus(!0)})},remove:function(){l&&(l.remove(),l=null)}}},On=Nt.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=On.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)}}),Wn=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 o=this,n=o.$,i=o.classPrefix+"txt";function s(t){var e=n("span."+i,o.getEl());t?(e[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),e=n("span."+i,o.getEl())),e.html(o.encode(t))):e.remove(),o.classes.toggle("btn-has-text",!!t)}return o.state.on("change:text",function(t){s(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Dn=Wn.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 n=this,e=St.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),Mt(e).on("change",function(t){var e=t.target.files;n.value=function(){return e.length?n.settings.multiple?e:e[0]:null},t.preventDefault(),e.length&&n.fire("change",t)}),Mt(e).on("click",function(t){t.stopPropagation()}),Mt(n.getEl("button")).on("click",function(t){t.stopPropagation(),e.click()}),n.getEl().appendChild(e)},remove:function(){Mt(this.getEl("button")).off(),Mt(this.getEl("input")).off(),this._super()}}),An=Oe.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>"}}),Bn=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 o=this;function e(t){o.classes.toggle("checked",t),o.aria("checked",t)}return o.state.on("change:text",function(t){o.getEl("al").firstChild.data=o.translate(t.value)}),o.state.on("change:checked change:value",function(t){o.fire("change"),e(t.value)}),o.state.on("change:icon",function(t){var e=t.value,n=o.classPrefix;if(void 0===e)return o.settings.icon;e=(o.settings.icon=e)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];e?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=e):r&&i.removeChild(r)}),o.state.get("checked")&&e(!0),o._super()}}),Ln=tinymce.util.Tools.resolve("tinymce.util.VK"),In=ve.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(t){var e=t.target,n=r.getEl();if(Mt.contains(n,e)||e===n)for(;e&&e!==n;)e.id&&-1!==e.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),t.aria&&r.menu.items()[0].focus())),e=e.parentNode}),r.on("keydown",function(t){var e;13===t.keyCode&&"INPUT"===t.target.nodeName&&(t.preventDefault(),r.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),r.fire("submit",{data:e.toJSON()}))}),r.on("keyup",function(t){if("INPUT"===t.target.nodeName){var e=r.state.get("value"),n=t.target.value;n!==e&&(r.state.set("value",n),r.fire("autocomplete",t))}}),r.on("mouseover",function(t){var e=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==t.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=e.text(n).show().testMoveRel(t.target,["bc-tc","bc-tl","bc-tr"]);e.classes.toggle("tooltip-n","bc-tc"===i),e.classes.toggle("tooltip-nw","bc-tl"===i),e.classes.toggle("tooltip-ne","bc-tr"===i),e.moveRel(t.target,i)}})},statusLevel:function(t){return 0<arguments.length&&this.state.set("statusLevel",t),this.state.get("statusLevel")},statusMessage:function(t){return 0<arguments.length&&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(St.getRuntimeStyle(a,"padding-right"),10)-parseInt(St.getRuntimeStyle(a,"padding-left"),10)),t=r?o.w-St.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(e=n.layoutRect().h-2+"px"),Mt(a).css({width:t-s,lineHeight:e}),n._super(),n},postRender:function(){var e=this;return Mt(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._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,i){var r=this;if(0!==t.length){r.menu?r.menu.items().remove():r.menu=Ce.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),R.each(t,function(t){var e,n;r.menu.add({text:t.title,url:t.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(e=t.value,n=t.title,function(){r.fire("selectitem",{title:n,value:e})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(t){t.control.parent()===r.menu&&(t.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var e=r.layoutRect().w;r.menu.layoutRect({w:e,minW:0,maxW:e}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(t){r.getEl("inp").value!==t.value&&(r.getEl("inp").value=t.value)}),r.state.on("change:disabled",function(t){r.getEl("inp").disabled=t.value}),r.state.on("change:statusLevel",function(t){var e=r.getEl("status"),n=r.classPrefix,i=t.value;St.css(e,"display","none"===i?"none":""),St.toggleClass(e,n+"i-checkmark","ok"===i),St.toggleClass(e,n+"i-warning","warn"===i),St.toggleClass(e,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),St.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(t){r.menu&&r.menu.visible()&&(t.stopPropagation(),r.hideMenu())});var n=function(t,e){e&&0<e.items().length&&e.items().eq(t)[0].focus()};return r.on("keydown",function(t){var e=t.keyCode;"INPUT"===t.target.nodeName&&(e===Ln.DOWN?(t.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):e===Ln.UP&&(t.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){Mt(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),zn=In.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 e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}}),Fn=Wn.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 Ue(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","tc-bc","tc-br","tc-bl"]));e.panel.classes.toggle("start","l"===i.substr(-1)),e.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);e.panel.classes.toggle("bottom",!r),e.panel.classes.toggle("top",r),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()}}),Un=v.DOM,Vn=Fn.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 e=this,n=e.settings.onclick;return e.on("click",function(t){t.aria&&"down"===t.aria.key||t.control!==e||Un.getParent(t.target,"."+e.classPrefix+"open")||(t.stopImmediatePropagation(),n.call(e,t))}),delete e.settings.onclick,e._super()}}),qn=tinymce.util.Tools.resolve("tinymce.util.Color"),Yn=ve.extend({Defaults:{classes:"widget colorpicker"},init:function(t){this._super(t)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(t,e){var n,i,r=St.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 c(t,e){var n=(360-t.h)/360;St.css(r,{top:100*n+"%"}),e||St.css(s,{left:t.s+"%",top:100-t.v+"%"}),o.style.background=qn({s:100,v:100,h:t.h}).toHex(),a.color().parse({s:t.s,v:t.v,h:t.h})}function t(t){var e;e=u(o,t),n.s=100*e.x,n.v=100*(1-e.y),c(n),a.fire("change")}function e(t){var e;e=u(i,t),(n=l.toHsv()).h=360*(1-e.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new Re(a._id+"-sv",{start:t,drag:t}),a._hdraghelper=new Re(a._id+"-h",{start:e,drag:e}),a._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=qn()),this._color},renderHtml:function(){var t,e=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return t='<div id="'+e+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var t,e,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",t=0,e=(i=s.split(",")).length-1;t<e;t++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/e+"%;"+n+i[t]+",endColorstr="+i[t+1]+");-ms-"+n+i[t]+",endColorstr="+i[t+1]+')"></div>';return r}()+'<div id="'+e+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+e+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+t+"</div>"}}),$n=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=St.create("div",t,"<span>"+this.translate(n.text)+"</span>"),n.height&&St.css(e,"height",n.height+"px"),n.width&&St.css(e,"width",n.width+"px"),e.className=this.classes,e.outerHTML},postRender:function(){var i=this,t=function(t){t.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(t){t.preventDefault()}),i.$el.on("dragenter",t),i.$el.on("dragleave",t),i.$el.on("drop",function(t){if(t.preventDefault(),!i.state.get("disabled")){var e=function(t){var e=i.settings.accept;if("string"!=typeof e)return t;var n=new RegExp("("+e.split(/\s*,\s*/).join("|")+")$","i");return R.grep(t,function(t){return n.test(t.name)})}(t.dataTransfer.files);i.value=function(){return e.length?i.settings.multiple?e:e[0]:null},e.length&&i.fire("change",t)}})},remove:function(){this.$el.off(),this._super()}}),Xn=ve.extend({init:function(t){var n=this;t.delimiter||(t.delimiter="\xbb"),n._super(t),n.classes.add("path"),n.canFocus=!0,n.on("click",function(t){var e;(e=t.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[e],index:e})}),n.row(n.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 e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(t){var e,n,i=t||[],r="",o=this.classPrefix;for(e=0,n=i.length;e<n;e++)r+=(0<e?'<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}}),jn=Xn.extend({postRender:function(){var o=this,s=o.settings.editor;function a(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!==s.settings.elementpath&&(o.on("select",function(t){s.focus(),s.selection.select(this.row()[t.index].element),s.nodeChanged()}),s.on("nodeChange",function(t){for(var e=[],n=t.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||e.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(e)})),o._super()}}),Jn=Oe.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>"}}),Gn=Oe.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 i=this,t=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),t.each(function(t){var e,n=t.settings.label;n&&((e=new Jn(R.extend({items:{type:"label",id:t._id+"-l",text:n,flex:0,forId:t._id,disabled:t.disabled()}},i.settings.formItemDefaults))).type="formitem",t.aria("labelledby",t._id+"-l"),"undefined"==typeof t.settings.flex&&(t.settings.flex=1),i.replace(t,e),e.add(t))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function t(){var t,e,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(t){var e=t.items()[0],n=e.getEl().clientWidth;i=i<n?n:i,r.push(e)}),e=n.settings.labelGap||0,t=r.length;t--;)r[t].settings.minWidth=i+e}n._super(),n.on("show",t),t()}}),Kn=Gn.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>"}}),Zn=0,Qn=function(t){if(null===t||t===undefined)throw new Error("Node cannot be null or undefined");return{dom:lt(t)}},ti={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)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){var i=t.dom();return pt.from(i.elementFromPoint(e,n)).map(Qn)}},ei=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE),ni=(Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),ii=(Node.TEXT_NODE,Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,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 oi(i(1),i(2))}),ri=function(){return oi(0,0)},oi=function(t,e){return{major:t,minor:e}},si={nu:oi,detect:function(t,e){var n=String(e).toLowerCase();return 0===t.length?ri():ii(t,n)},unknown:ri},ai="Firefox",li=function(t,e){return function(){return e===t}},ui=function(t){var e=t.current;return{current:e,version:t.version,isEdge:li("Edge",e),isChrome:li("Chrome",e),isIE:li("IE",e),isOpera:li("Opera",e),isFirefox:li(ai,e),isSafari:li("Safari",e)}},ci={unknown:function(){return ui({current:undefined,version:si.unknown()})},nu:ui,edge:lt("Edge"),chrome:lt("Chrome"),ie:lt("IE"),opera:lt("Opera"),firefox:lt(ai),safari:lt("Safari")},di="Windows",fi="Android",hi="Solaris",mi="FreeBSD",gi=function(t,e){return function(){return e===t}},pi=function(t){var e=t.current;return{current:e,version:t.version,isWindows:gi(di,e),isiOS:gi("iOS",e),isAndroid:gi(fi,e),isOSX:gi("OSX",e),isLinux:gi("Linux",e),isSolaris:gi(hi,e),isFreeBSD:gi(mi,e)}},vi={unknown:function(){return pi({current:undefined,version:si.unknown()})},nu:pi,windows:lt(di),ios:lt("iOS"),android:lt(fi),linux:lt("Linux"),osx:lt("OSX"),solaris:lt(hi),freebsd:lt(mi)},bi=function(t,e){var n=String(e).toLowerCase();return function(t,e){for(var n=0,i=t.length;n<i;n++){var r=t[n];if(e(r,n,t))return pt.some(r)}return pt.none()}(t,function(t){return t.search(n)})},yi=function(t,n){return bi(t,n).map(function(t){var e=si.detect(t.versionRegexes,n);return{current:t.name,version:e}})},xi=function(t,n){return bi(t,n).map(function(t){var e=si.detect(t.versionRegexes,n);return{current:t.name,version:e}})},wi=function(t,e){return-1!==t.indexOf(e)},_i=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Ri=function(e){return function(t){return wi(t,e)}},Ci=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return wi(t,"edge/")&&wi(t,"chrome")&&wi(t,"safari")&&wi(t,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,_i],search:function(t){return wi(t,"chrome")&&!wi(t,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return wi(t,"msie")||wi(t,"trident")}},{name:"Opera",versionRegexes:[_i,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Ri("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Ri("firefox")},{name:"Safari",versionRegexes:[_i,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(wi(t,"safari")||wi(t,"mobile/"))&&wi(t,"applewebkit")}}],ki=[{name:"Windows",search:Ri("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return wi(t,"iphone")||wi(t,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Ri("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Ri("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Ri("linux"),versionRegexes:[]},{name:"Solaris",search:Ri("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Ri("freebsd"),versionRegexes:[]}],Ei={browsers:lt(Ci),oses:lt(ki)},Hi=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=Ei.browsers(),h=Ei.oses(),m=yi(f,t).fold(ci.unknown,ci.nu),g=xi(h,t).fold(vi.unknown,vi.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(r),isiPhone:lt(o),isTablet:lt(l),isPhone:lt(c),isTouch:lt(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:lt(d)})}},Ti=(Ke=!(Je=function(){var t=navigator.userAgent;return Hi(t)}),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Ke||(Ke=!0,Ge=Je.apply(null,t)),Ge}),Si=ni,Mi=ei,Ni=function(t){return t.nodeType!==Si&&t.nodeType!==Mi||0===t.childElementCount},Oi=(Ti().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),R.trim),Pi=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}},Wi=Pi("true"),Di=Pi("false"),Ai=function(t,e,n,i,r){return{type:t,title:e,url:n,level:i,attach:r}},Bi=function(t){return t.innerText||t.textContent},Li=function(t){return t.id?t.id:(e="h",n=(new Date).getTime(),e+"_"+Math.floor(1e9*Math.random())+ ++Zn+String(n));var e,n},Ii=function(t){return(e=t)&&"A"===e.nodeName&&(e.id||e.name)&&Fi(t);var e},zi=function(t){return t&&/^(H[1-6])$/.test(t.nodeName)},Fi=function(t){return function(t){for(;t=t.parentNode;){var e=t.contentEditable;if(e&&"inherit"!==e)return Wi(t)}return!1}(t)&&!Di(t)},Ui=function(t){return zi(t)&&Fi(t)},Vi=function(t){var e,n=Li(t);return Ai("header",Bi(t),"#"+n,zi(e=t)?parseInt(e.nodeName.substr(1),10):0,function(){t.id=n})},qi=function(t){var e=t.id||t.name,n=Bi(t);return Ai("anchor",n||"#"+e,"#"+e,0,at)},Yi=function(t){var e,n,i,r,o,s;return e="h1,h2,h3,h4,h5,h6,a:not([href])",n=t,_t((Ti().browser.isIE(),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}("element","offset"),i=ti.fromDom(n),r=e,s=(o=i)===undefined?document:o.dom(),Ni(s)?[]:_t(s.querySelectorAll(r),ti.fromDom)),function(t){return t.dom()})},$i=function(t){return 0<Oi(t.title).length},Xi=function(t){var e,n=Yi(t);return Ct((e=n,_t(Ct(e,Ui),Vi)).concat(_t(Ct(n,Ii),qi)),$i)},ji={},Ji=function(t){return{title:t.title,value:{title:{raw:t.title},url:t.url,attach:t.attach}}},Gi=function(t,e){return{title:t,value:{title:t,url:e,attach:at}}},Ki=function(t,e,n){var i=e in t?t[e]:n;return!1===i?null:i},Zi=function(t,i,r,e){var n,o,s,a,l,u,c={title:"-"},d=function(t){var e=t.hasOwnProperty(r)?t[r]:[],n=Ct(e,function(t){return e=t,!wt(i,function(t){return t.url===e});var e});return R.map(n,function(t){return{title:t,value:{title:t,url:t,attach:at}}})},f=function(e){var t,n=Ct(i,function(t){return t.type===e});return t=n,R.map(t,Ji)};return!1===e.typeahead_urls?[]:"file"===r?(n=[tr(t,d(ji)),tr(t,f("header")),tr(t,(a=f("anchor"),l=Ki(e,"anchor_top","#top"),u=Ki(e,"anchor_bottom","#bottom"),null!==l&&a.unshift(Gi("<top>",l)),null!==u&&a.push(Gi("<bottom>",u)),a))],o=function(t,e){return 0===t.length||0===e.length?t.concat(e):t.concat(c,e)},s=[],Rt(n,function(t){s=o(s,t)}),s):tr(t,d(ji))},Qi=function(t,e){var n,i,r,o=ji[e];/^https?/.test(t)&&(o?(n=o,i=t,r=xt(n,i),-1===r?pt.none():pt.some(r)).isNone()&&(ji[e]=o.slice(0,5).concat(t)):ji[e]=[t])},tr=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},er=function(o,t,n){var i=t.filepicker_validator_handler;i&&o.state.on("change:value",function(t){var e;0!==(e=t.value).length?i({url:e,type:n},function(t){var e,n,i,r=(n=(e=t).status,i=e.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},nr=In.extend({Statics:{clearHistory:function(){ji={}}},init:function(t){var e,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:M.activeEditor,d=c.settings,f=t.filetype;t.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=R.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(e=function(){n(u.getEl("inp").id,u.value(),f,window)}):e=function(){var t=u.fire("beforecall").meta;t=R.extend({filetype:f},t),n.call(c,function(t,e){u.value(t).fire("change",{meta:e})},u.value(),t)}),e&&(t.icon="browse",t.onaction=e),u._super(t),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(t){var e=Xi(s),n=Zi(t,e,a,o);r.showAutoComplete(n,t)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(t){var e=t.value;r.value(e.url);var n,i=(n=e.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:e.attach}}):r.fire("change",{meta:{text:i,attach:e.attach}}),r.focus()}),r.on("click",function(t){0===r.value().length&&"INPUT"===t.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(t){t.isDefaultPrevented()||Qi(r.value(),a)})}),er(u,d,f)}}),ir=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()})}}),rr=Pn.extend({recalc:function(t){var e,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,T,S,M,N,O,P,W,D,A,B,L=[],I=Math.max,z=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",T="deltaH",S="contentH",W="left",O="w",M="x",N="innerW",P="minW",D="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",k="maxW",H="innerW",E="left",T="deltaW",S="contentW",W="top",O="h",M="y",N="innerH",P="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,0<(g=h.settings.flex)&&(c+=g,m[k]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[W]+m[P]+o[D])&&(w=p);if((y={})[R]=d<0?r[R]-d+r[T]:r[H]-d+r[T],y[P]=w+r[A],y[S]=r[H]-d,y[B]=w,y.minW=z(y.minW,r.maxW),y.minH=z(y.minH,r.maxH),y.minW=I(y.minW,r.startMinWidth),y.minH=I(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,e=0,n=L.length;e<n;e++)(v=(m=(h=L[e]).layoutRect())[k])<(p=m[R]+m.flex*b)?(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[M]=o[W],e=0,n=i.length;e<n;e++)p=(m=(h=i[e]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[O]/2):"stretch"===a?(y[O]=I(m[P]||0,r[N]-o[W]-o[D]),y[M]=o[W]):"end"===a&&(y[M]=r[N]-m[O]-o.top),0<m.flex&&(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,t.layoutRect(y),this.recalc(t),null===t._lastRect){var F=t.parent();F&&(F._lastRect=null,F.recalc())}}}),or=On.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}}),sr=function(t,e){return n=e,r=(i=t)===undefined?document:i.dom(),Ni(r)?pt.none():pt.from(r.querySelector(n)).map(ti.fromDom);var n,i,r},ar=function(t,e){return function(){t.execCommand("mceToggleFormat",!1,e)}},lr=function(t,e,n){var i=function(t){n(t,e)};t.formatter?t.formatter.formatChanged(e,i):t.on("init",function(){t.formatter.formatChanged(e,i)})},ur=function(t,n){return function(e){lr(t,n,function(t){e.control.active(t)})}},cr=function(i){var e=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",t=[{text:"Left",icon:"alignleft",onclick:ar(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:ar(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:ar(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:ar(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:t}),i.addButton("align",{type:"menubutton",icon:r,menu:t,onShowMenu:function(t){var n=t.control.menu;R.each(e,function(e,t){n.items().eq(t).each(function(t){return t.active(i.formatter.match(e))})})},onPostRender:function(t){var n=t.control;R.each(e,function(e,t){lr(i,e,function(t){n.icon(r),t&&n.icon(e)})})}}),R.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,e){i.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:ur(i,e)})})},dr=function(t){return t?t.split(",")[0]:""},fr=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(t){var e,n,i,r,o=l.queryCommandValue("FontName"),s=(e=u,r=(n=o)?n.toLowerCase():"",R.each(e,function(t){t.value.toLowerCase()===r&&(i=t.value)}),R.each(e,function(t){i||dr(t.value).toLowerCase()!==dr(r).toLowerCase()||(i=t.value)}),i);a.value(s||null),!s&&o&&a.text(dr(o))})}},hr=function(n){n.addButton("fontselect",function(){var t,e=(t=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(n.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(t,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:e,fixedWidth:!0,onPostRender:fr(n,e),onselect:function(t){t.control.settings.value&&n.execCommand("FontName",!1,t.control.settings.value)}}})},mr=function(t){hr(t)},gr=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},pr=function(t,e,n){var i;return R.each(t,function(t){t.value===n?i=n:t.value===e&&(i=e)}),i},vr=function(n){n.addButton("fontsizeselect",function(){var t,s,a,e=(t=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",R.map(t.split(" "),function(t){var e=t,n=t,i=t.split("=");return 1<i.length&&(e=i[0],n=i[1]),{text:e,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:(s=n,a=e,function(){var o=this;s.on("init nodeChange",function(t){var e,n,i,r;if(e=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=gr(e,i),r=pr(a,n,e);o.value(r||null),r||o.text(n)})}),onclick:function(t){t.control.settings.value&&n.execCommand("FontSize",!1,t.control.settings.value)}}})},br=function(t){vr(t)},yr=function(n,t){var i=t.length;return R.each(t,function(t){t.menu&&(t.hidden=0===yr(n,t.menu));var e=t.format;e&&(t.hidden=!n.formatter.canApply(e)),t.hidden&&i--}),i},xr=function(n,t){var i=t.items().length;return t.items().each(function(t){t.menu&&t.visible(0<xr(n,t.menu)),!t.menu&&t.settings.menu&&t.visible(0<yr(n,t.settings.menu));var e=t.settings.format;e&&t.visible(n.formatter.canApply(e)),t.visible()||i--}),i},wr=function(t){var i,r,o,e,s,n,a,l,u=(r=0,o=[],e=[{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"}]}],s=function(t){var i=[];if(t)return R.each(t,function(t){var e={text:t.title,icon:t.icon};if(t.items)e.menu=s(t.items);else{var n=t.format||"custom"+r++;t.format||(t.name=n,o.push(t)),e.format=n,e.cmd=t.cmd}i.push(e)}),i},(i=t).on("init",function(){R.each(o,function(t){i.formatter.register(t.name,t)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(e.concat(i.settings.style_formats)):s(e):s(i.settings.style_formats||e),onPostRender:function(t){i.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var t,e;(t=n.settings.format)&&(n.disabled(!i.formatter.canApply(t)),n.active(i.formatter.match(t))),(e=n.settings.cmd)&&n.active(i.queryCommandState(e))})},onclick:function(){this.settings.format&&ar(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,t.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=t).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&xr(a,this.menu)}})},_r=function(n,t){return function(){var r,o,s,e=[];return R.each(t,function(t){e.push({text:t[0],value:t[1],textStyle:function(){return n.formatter.getCssText(t[1])}})}),{type:"listbox",text:t[0][0],values:e,fixedWidth:!0,onselect:function(t){if(t.control){var e=t.control.value();ar(n,e)()}},onPostRender:(r=n,o=e,function(){var e=this;r.on("nodeChange",function(t){var n=r.formatter,i=null;R.each(t.parents,function(e){if(R.each(o,function(t){if(s?n.matchNode(e,s,{value:t.value})&&(i=t.value):n.matchNode(e,t.value)&&(i=t.value),i)return!1}),i)return!1}),e.value(i)})})}}},Rr=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:ar(e,t[1]),textStyle:function(){return e.formatter.getCssText(t[1])}}}))}),t.addButton("formatselect",_r(t,i))},Cr=function(e,t){var n,i;if("string"==typeof t)i=t.split(" ");else if(R.isArray(t))return 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);Ht.apply(e,t[n])}return e}(R.map(t,function(t){return Cr(e,t)}));return n=R.grep(i,function(t){return"|"===t||t in e.menuItems}),R.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},kr=function(t){return t&&"-"===t.text},Er=function(t){var e=Ct(t,function(t,e,n){return!kr(t)||!kr(n[e-1])});return Ct(e,function(t,e,n){return!kr(t)||0<e&&e<n.length-1})},Hr=function(t){var e,n,i,r,o=t.settings.insert_button_items;return Er(o?Cr(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))},Tr=function(t){var e;(e=t).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Hr(e)),this.menu.renderNew()}})},Sr=function(t){var n,i,r;n=t,R.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,e){n.addButton(e,{active:!1,tooltip:t,onPostRender:ur(n,e),onclick:ar(n,e)})}),i=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){i.addButton(e,{tooltip:t[0],cmd:t[1]})}),r=t,R.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(t,e){r.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:ur(r,e)})})},Mr=function(t){var n;Sr(t),n=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,e){n.addMenuItem(e,{text:t[0],icon:e,shortcut:t[2],cmd:t[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:ar(n,"code")})},Nr=function(n,i){return function(){var t=this,e=function(){var t="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[t]()};t.disabled(!e()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){t.disabled(n.readonly||!e())})}},Or=function(t){var e,n;(e=t).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Nr(e,"undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Nr(e,"redo"),cmd:"redo"}),(n=t).addButton("undo",{tooltip:"Undo",onPostRender:Nr(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:Nr(n,"redo"),cmd:"redo"})},Pr=function(t){var e,n;(e=t).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=e,function(){var e=this;n.on("VisualAid",function(t){e.active(t.hasVisual)}),e.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Wr={setup:function(t){var e;t.rtl&&(ue.rtl=!0),t.on("mousedown progressstate",function(){Ue.hideAll()}),(e=t).settings.ui_container&&(h.container=sr(ti.fromDom(document.body),e.settings.ui_container).fold(lt(null),function(t){return t.dom()})),ve.tooltips=!h.iOS,ue.translate=function(t){return M.translate(t)},Rr(t),cr(t),Mr(t),Or(t),br(t),mr(t),wr(t),Pr(t),Tr(t)}},Dr=Pn.extend({recalc:function(t){var e,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,T,S=[],M=[];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),b=e.spacingH||e.spacing||0,y=e.spacingV||e.spacing||0,x=e.alignH||e.align,w=e.alignV||e.align,p=t.paddingBox,T="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++)S.push(0);for(f=0;f<n;f++)M.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,S[d]=C>S[d]?C:S[d],M[f]=k>M[f]?k:M[f];for(E=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=S[d]+(0<d?b:0),E-=(0<d?b:0)+S[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[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 N;o.autoResize&&((l=t.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===e.packV?0:0<H?Math.floor(H/n):0;var O=0,P=e.flexWidths;if(P)for(d=0;d<P.length;d++)O+=P[d];else O=i;var W=E/O;for(d=0;d<i;d++)S[d]+=P?P[d]*W:W;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;d<i&&(c=r[T?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(S[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,t.layoutRect(l),this.recalc(t),null===t._lastRect){var D=t.parent();D&&(D._lastRect=null,D.recalc())}}}),Ar=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()):c.setTimeout(function(){n.html(t)}),this}}),Br=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 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()}}),Lr=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&&(St.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,St.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 e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Ir=Oe.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()}}),zr=Ir.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),Fr=Wn.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){"hide"===t.type&&t.control.parent()===n&&n.classes.remove("opened-under"),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"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&r<i.y+i.h&&n.classes.add("opened-under"),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 zr?"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 r=this;return r.on("click",function(t){t.control===r&&function(t,e){for(;t;){if(e===t)return!0;t=t.parentNode}return!1}(t.target,r.getEl())&&(r.focus(),r.showMenu(!t.aria),t.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(t){var e,n=t.control,i=r.parent();n&&i&&n instanceof Fr&&n.parent()===i&&(i.items().filter("MenuButton").each(function(t){t.hideMenu&&t!==n&&(t.menu&&t.menu.visible()&&(e=!0),t.hideMenu())}),e&&(n.focus(),n.showMenu()))}),r._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 Ur(i,r){var o,s,a=this,l=ue.classPrefix;a.show=function(t,e){function n(){o&&(Mt(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),e&&e())}return a.hide(),o=!0,t?s=c.setTimeout(n,t):n(),a},a.hide=function(){var t=i.lastChild;return c.clearTimeout(s),t&&-1!==t.className.indexOf("throbber")&&t.parentNode.removeChild(t),o=!1,a}}var Vr=Ue.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!==h.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,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new Ur(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=e=(new Date).getTime(),n.settings.itemsFactory(function(t){0!==t.length?n.requestTime===e&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(t),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(t){var e=t.settings;if(e.icon||e.image||e.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(t){t.control===n&&("show"===t.type?c.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),qr=Fr.extend({init:function(i){var e,r,o,n,s=this;s._super(i),i=s.settings,s._values=e=i.values,e&&("undefined"!=typeof i.value&&function t(e){for(var n=0;n<e.length;n++){if(r=e[n].selected||i.value===e[n].value)return o=o||e[n].text,s.state.set("value",e[n].value),!0;if(e[n].menu&&t(e[n].menu))return!0}}(e),!r&&0<e.length&&(o=e[0].text,s.state.set("value",e[0].value)),s.state.set("menu",e)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(t){var e=t.control;n&&(t.lastControl=n),i.multiple?e.active(!e.active()):s.value(t.control.value()),n=e})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function e(t){return wt(t,function(t){return t.menu?e(t.menu):t.value===n})}(this.settings.values)?null===n&&this.state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function(t){var e,n;e=t.control,n=i.value(),e instanceof Vr&&e.items().each(function(t){t.hasMenus()||t.active(t.value()===n)})}),i.state.on("change:value",function(e){var n=function t(e,n){var i;if(e)for(var r=0;r<e.length;r++){if(e[r].value===n)return e[r];if(e[r].menu&&(i=t(e[r].menu,n)))return i}}(i.state.get("menu"),e.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),Yr=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 e,n=this,t=n.settings,i=n.parent();if(i.items().each(function(t){t!==n&&t.hideMenu()}),t.menu){(e=n.menu)?e.show():((e=t.menu).length?e={type:"menu",items:e}:e.type=e.type||"menu",i.settings.itemDefaults&&(e.itemDefaults=i.settings.itemDefaults),(e=n.menu=Ce.create(e).parent(n).renderTo()).reflow(),e.on("cancel",function(t){t.stopPropagation(),n.focus(),e.hide()}),e.on("show hide",function(t){t.control.items&&t.control.items().each(function(t){t.active(t.settings.selected)})}).fire("show"),e.on("hide",function(t){t.control===e&&n.classes.remove("selected")}),e.submenu=!0),e._parentMenu=i,e.classes.add("menu-sub");var r=e.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);e.moveRel(n.getEl(),r),r="menu-sub-"+(e.rel=r),e.classes.remove(e._lastRel).add(r),e._lastRel=r,n.classes.add("selected"),n.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,a="",l=i.shortcut,u=e.encode(i.url);function c(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(t){var e=i.match||"";return e?t.replace(new RegExp(c(e),"gi"),function(t){return"!mce~match["+t+"]mce~match!"}):t}function f(t){return t.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&e.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(t){var e,n,i={};for(i=h.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("+")}(l)),s=r+"ico "+r+"i-"+(e.settings.icon||"none"),t="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(e.encode(d(o))),u=f(e.encode(d(u))),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1">'+t+("-"!==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,n=e.settings,t=n.textStyle;if("function"==typeof t&&(t=t.call(this)),t){var i=e.getEl("text");i&&(i.setAttribute("style",t),e._textStyle=t)}return e.on("mouseenter click",function(t){t.control===e&&(n.menu||"click"!==t.type?(e.showMenu(),t.aria&&e.menu.focus(!0)):(e.fire("select"),c.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},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()}}),$r=Bn.extend({Defaults:{classes:"radio",role:"radio"}}),Xr=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 e=this;e._super(),e.resizeDragHelper=new Re(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 jr(t){var e="";if(t)for(var n=0;n<t.length;n++)e+='<option value="'+t[n]+'">'+t[n]+"</option>";return e}var Jr=ve.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(t){var n=this;n._super(t),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.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=jr(e._options),e.size&&(n=' size = "'+e.size+'"'),'<select id="'+e._id+'" class="'+e.classes+'"'+n+">"+t+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(t){e.getEl().innerHTML=jr(t.value)}),e._super()}});function Gr(t,e,n){return t<e&&(t=e),n<t&&(t=n),t}function Kr(t,e,n){t.setAttribute("aria-"+e,n)}function Zr(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)-St.getSize(s)[i])*((e-t._minValue)/(t._maxValue-t._minValue))+"px",s.style[r]=o,s.style.height=t.layoutRect().h+"px",Kr(s,"valuenow",e),Kr(s,"valuetext",""+t.settings.previewFilter(e)),Kr(s,"valuemin",t._minValue),Kr(s,"valuemax",t._maxValue)}var Qr=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=yt(t.minValue)?t.minValue:0,e._maxValue=yt(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(o,s){function e(t){var e,n,i,r;e=Gr(e=(((e=m.value())+(r=n=o))/((i=s)-r)+.05*t)*(i-n)-n,o,s),m.value(e),m.fire("dragstart",{value:e}),m.fire("drag",{value:e}),m.fire("dragend",{value:e})}m.on("keydown",function(t){switch(t.keyCode){case 37:case 38:e(-1);break;case 39:case 40:e(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)-St.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(t){var e=t[n]-u;f=Gr(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(),Zr(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){Zr(e,t.value)}),e._super()}}),to=ve.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),eo=Fr.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,Mt(t).css({width:i.w-St.getSize(e).width,height:i.h-2}),Mt(e).css({height:i.h-2}),this},activeMenu:function(t){Mt(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 n=this.settings.onclick;return this.on("click",function(t){var e=t.target;if(t.control===this)for(;e;){if(t.aria&&"down"!==t.aria.key||"BUTTON"===e.nodeName&&-1===e.className.indexOf("open"))return t.stopImmediatePropagation(),void(n&&n.call(this,t));e=e.parentNode}}),delete this.settings.onclick,this._super()}}),no=or.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),io=We.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var t;this.activeTabId&&(t=this.getEl(this.activeTabId),Mt(t).removeClass(this.classPrefix+"active"),t.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(t=this.getEl("t"+n)).setAttribute("aria-selected","true"),Mt(t).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(t,e){n!==e&&t.hide()})},renderHtml:function(){var i=this,t=i._layout,r="",o=i.classPrefix;return i.preRender(),t.preRender(i),i.items().each(function(t,e){var n=i._id+"-t"+e;t.aria("role","tabpanel"),t.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+i.encode(t.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+t.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(t){var e=t.target.parentNode;if(e&&e.id===i._id+"-head")for(var n=e.childNodes.length;n--;)e.childNodes[n]===t.target&&i.activateTab(n)})},initLayoutRect:function(){var t,e,n,i=this;e=(e=St.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=St.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}}),ro=ve.extend({init:function(t){var n=this;n._super(t),n.classes.add("textbox"),t.multiline?n.classes.add("multiline"):(n.on("keydown",function(t){var e;13===t.keyCode&&(t.preventDefault(),n.parents().reverse().each(function(t){if(t.toJSON)return e=t,!1}),n.fire("submit",{data:e.toJSON()}))}),n.on("keyup",function(t){n.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 e,t,n=this,i=n.settings;return e={id:n._id,hidefocus:"1"},R.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=St.create(i.multiline?"textarea":"input",e)).value=n.state.get("value"),t.className=n.classes.toString(),t.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 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()}}),oo=function(){return{Selector:Vt,Collection:$t,ReflowQueue:te,Control:ue,Factory:Ce,KeyboardNavigation:Ee,Container:Oe,DragHelper:Re,Scrollable:Pe,Panel:We,Movable:ge,Resizable:De,FloatPanel:Ue,Window:je,MessageBox:Ze,Tooltip:pe,Widget:ve,Progress:be,Notification:xe,Layout:On,AbsoluteLayout:Pn,Button:Wn,ButtonGroup:An,Checkbox:Bn,ComboBox:In,ColorBox:zn,PanelButton:Fn,ColorButton:Vn,ColorPicker:Yn,Path:Xn,ElementPath:jn,FormItem:Jn,Form:Gn,FieldSet:Kn,FilePicker:nr,FitLayout:ir,FlexLayout:rr,FlowLayout:or,FormatControls:Wr,GridLayout:Dr,Iframe:Ar,InfoBox:Br,Label:Lr,Toolbar:Ir,MenuBar:zr,MenuButton:Fr,MenuItem:Yr,Throbber:Ur,Menu:Vr,ListBox:qr,Radio:$r,ResizeHandle:Xr,SelectBox:Jr,Slider:Qr,Spacer:to,SplitButton:eo,StackLayout:no,TabPanel:io,TextBox:ro,DropZone:$n,BrowseButton:Dn}},so=function(n){n.ui?R.each(oo(),function(t,e){n.ui[e]=t}):n.ui=oo()};R.each(oo(),function(t,e){Ce.add(e,t)}),so(window.tinymce?window.tinymce:{}),o.add("inlite",function(t){var e=Nn();return Wr.setup(t),Cn(t,e),Qe(t,e)})}();
\ No newline at end of file
Index: src/js/_enqueues/vendor/tinymce/themes/modern/theme.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/themes/modern/theme.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/themes/modern/theme.js	(working copy)
@@ -1,10041 +1,9627 @@
 (function () {
 var modern = (function () {
-  'use strict';
+    'use strict';
 
-  var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');
+    var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');
 
-  var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');
+    var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');
 
-  var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
 
-  var isBrandingEnabled = function (editor) {
-    return editor.getParam('branding', true, 'boolean');
-  };
-  var hasMenubar = function (editor) {
-    return getMenubar(editor) !== false;
-  };
-  var getMenubar = function (editor) {
-    return editor.getParam('menubar');
-  };
-  var hasStatusbar = function (editor) {
-    return editor.getParam('statusbar', true, 'boolean');
-  };
-  var getToolbarSize = function (editor) {
-    return editor.getParam('toolbar_items_size');
-  };
-  var isReadOnly = function (editor) {
-    return editor.getParam('readonly', false, 'boolean');
-  };
-  var getFixedToolbarContainer = function (editor) {
-    return editor.getParam('fixed_toolbar_container');
-  };
-  var getInlineToolbarPositionHandler = function (editor) {
-    return editor.getParam('inline_toolbar_position_handler');
-  };
-  var getMenu = function (editor) {
-    return editor.getParam('menu');
-  };
-  var getRemovedMenuItems = function (editor) {
-    return editor.getParam('removed_menuitems', '');
-  };
-  var getMinWidth = function (editor) {
-    return editor.getParam('min_width', 100, 'number');
-  };
-  var getMinHeight = function (editor) {
-    return editor.getParam('min_height', 100, 'number');
-  };
-  var getMaxWidth = function (editor) {
-    return editor.getParam('max_width', 65535, 'number');
-  };
-  var getMaxHeight = function (editor) {
-    return editor.getParam('max_height', 65535, 'number');
-  };
-  var isSkinDisabled = function (editor) {
-    return editor.settings.skin === false;
-  };
-  var isInline = function (editor) {
-    return editor.getParam('inline', false, 'boolean');
-  };
-  var getResize = function (editor) {
-    var resize = editor.getParam('resize', 'vertical');
-    if (resize === false) {
-      return 'none';
-    } else if (resize === 'both') {
-      return 'both';
-    } else {
-      return 'vertical';
-    }
-  };
-  var getSkinUrl = function (editor) {
-    var settings = editor.settings;
-    var skin = settings.skin;
-    var skinUrl = settings.skin_url;
-    if (skin !== false) {
-      var skinName = skin ? skin : 'lightgray';
-      if (skinUrl) {
-        skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);
+    var isBrandingEnabled = function (editor) {
+      return editor.getParam('branding', true, 'boolean');
+    };
+    var hasMenubar = function (editor) {
+      return getMenubar(editor) !== false;
+    };
+    var getMenubar = function (editor) {
+      return editor.getParam('menubar');
+    };
+    var hasStatusbar = function (editor) {
+      return editor.getParam('statusbar', true, 'boolean');
+    };
+    var getToolbarSize = function (editor) {
+      return editor.getParam('toolbar_items_size');
+    };
+    var isReadOnly = function (editor) {
+      return editor.getParam('readonly', false, 'boolean');
+    };
+    var getFixedToolbarContainer = function (editor) {
+      return editor.getParam('fixed_toolbar_container');
+    };
+    var getInlineToolbarPositionHandler = function (editor) {
+      return editor.getParam('inline_toolbar_position_handler');
+    };
+    var getMenu = function (editor) {
+      return editor.getParam('menu');
+    };
+    var getRemovedMenuItems = function (editor) {
+      return editor.getParam('removed_menuitems', '');
+    };
+    var getMinWidth = function (editor) {
+      return editor.getParam('min_width', 100, 'number');
+    };
+    var getMinHeight = function (editor) {
+      return editor.getParam('min_height', 100, 'number');
+    };
+    var getMaxWidth = function (editor) {
+      return editor.getParam('max_width', 65535, 'number');
+    };
+    var getMaxHeight = function (editor) {
+      return editor.getParam('max_height', 65535, 'number');
+    };
+    var isSkinDisabled = function (editor) {
+      return editor.settings.skin === false;
+    };
+    var isInline = function (editor) {
+      return editor.getParam('inline', false, 'boolean');
+    };
+    var getResize = function (editor) {
+      var resize = editor.getParam('resize', 'vertical');
+      if (resize === false) {
+        return 'none';
+      } else if (resize === 'both') {
+        return 'both';
       } else {
-        skinUrl = global$1.baseURL + '/skins/' + skinName;
+        return 'vertical';
       }
-    }
-    return skinUrl;
-  };
-  var getIndexedToolbars = function (settings, defaultToolbar) {
-    var toolbars = [];
-    for (var i = 1; i < 10; i++) {
-      var toolbar = settings['toolbar' + i];
-      if (!toolbar) {
-        break;
+    };
+    var getSkinUrl = function (editor) {
+      var settings = editor.settings;
+      var skin = settings.skin;
+      var skinUrl = settings.skin_url;
+      if (skin !== false) {
+        var skinName = skin ? skin : 'lightgray';
+        if (skinUrl) {
+          skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);
+        } else {
+          skinUrl = global$1.baseURL + '/skins/' + skinName;
+        }
       }
-      toolbars.push(toolbar);
-    }
-    var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];
-    return toolbars.length > 0 ? toolbars : mainToolbar;
-  };
-  var getToolbars = function (editor) {
-    var toolbar = editor.getParam('toolbar');
-    var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';
-    if (toolbar === false) {
-      return [];
-    } else if (global$2.isArray(toolbar)) {
-      return global$2.grep(toolbar, function (toolbar) {
-        return toolbar.length > 0;
-      });
-    } else {
-      return getIndexedToolbars(editor.settings, defaultToolbar);
-    }
-  };
+      return skinUrl;
+    };
+    var getIndexedToolbars = function (settings, defaultToolbar) {
+      var toolbars = [];
+      for (var i = 1; i < 10; i++) {
+        var toolbar = settings['toolbar' + i];
+        if (!toolbar) {
+          break;
+        }
+        toolbars.push(toolbar);
+      }
+      var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];
+      return toolbars.length > 0 ? toolbars : mainToolbar;
+    };
+    var getToolbars = function (editor) {
+      var toolbar = editor.getParam('toolbar');
+      var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';
+      if (toolbar === false) {
+        return [];
+      } else if (global$2.isArray(toolbar)) {
+        return global$2.grep(toolbar, function (toolbar) {
+          return toolbar.length > 0;
+        });
+      } else {
+        return getIndexedToolbars(editor.settings, defaultToolbar);
+      }
+    };
 
-  var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
 
-  var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');
+    var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');
 
-  var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');
+    var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');
 
-  var fireSkinLoaded = function (editor) {
-    return editor.fire('SkinLoaded');
-  };
-  var fireResizeEditor = function (editor) {
-    return editor.fire('ResizeEditor');
-  };
-  var fireBeforeRenderUI = function (editor) {
-    return editor.fire('BeforeRenderUI');
-  };
-  var $_5hpmustzjjgwefnb = {
-    fireSkinLoaded: fireSkinLoaded,
-    fireResizeEditor: fireResizeEditor,
-    fireBeforeRenderUI: fireBeforeRenderUI
-  };
+    var fireSkinLoaded = function (editor) {
+      return editor.fire('SkinLoaded');
+    };
+    var fireResizeEditor = function (editor) {
+      return editor.fire('ResizeEditor');
+    };
+    var fireBeforeRenderUI = function (editor) {
+      return editor.fire('BeforeRenderUI');
+    };
+    var Events = {
+      fireSkinLoaded: fireSkinLoaded,
+      fireResizeEditor: fireResizeEditor,
+      fireBeforeRenderUI: fireBeforeRenderUI
+    };
 
-  var focus = function (panel, type) {
-    return function () {
-      var item = panel.find(type)[0];
-      if (item) {
-        item.focus(true);
-      }
+    var focus = function (panel, type) {
+      return function () {
+        var item = panel.find(type)[0];
+        if (item) {
+          item.focus(true);
+        }
+      };
     };
-  };
-  var addKeys = function (editor, panel) {
-    editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));
-    editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));
-    editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));
-    panel.on('cancel', function () {
-      editor.focus();
-    });
-  };
-  var $_azwbz4u0jjgwefnc = { addKeys: addKeys };
+    var addKeys = function (editor, panel) {
+      editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));
+      editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));
+      editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));
+      panel.on('cancel', function () {
+        editor.focus();
+      });
+    };
+    var A11y = { addKeys: addKeys };
 
-  var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');
+    var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');
 
-  var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');
+    var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');
 
-  var noop = function () {
-    var x = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-      x[_i] = arguments[_i];
-    }
-  };
-
-  var compose = function (fa, fb) {
-    return function () {
-      var x = [];
+    var noop = function () {
+      var args = [];
       for (var _i = 0; _i < arguments.length; _i++) {
-        x[_i] = arguments[_i];
+        args[_i] = arguments[_i];
       }
-      return fa(fb.apply(null, arguments));
     };
-  };
-  var constant = function (value) {
-    return function () {
-      return value;
+    var constant = function (value) {
+      return function () {
+        return value;
+      };
     };
-  };
+    var never = constant(false);
+    var always = constant(true);
 
+    var never$1 = never;
+    var always$1 = always;
+    var none = function () {
+      return NONE;
+    };
+    var NONE = function () {
+      var eq = function (o) {
+        return o.isNone();
+      };
+      var call$$1 = function (thunk) {
+        return thunk();
+      };
+      var id = function (n) {
+        return n;
+      };
+      var noop$$1 = function () {
+      };
+      var nul = function () {
+        return null;
+      };
+      var undef = function () {
+        return undefined;
+      };
+      var me = {
+        fold: function (n, s) {
+          return n();
+        },
+        is: never$1,
+        isSome: never$1,
+        isNone: always$1,
+        getOr: id,
+        getOrThunk: call$$1,
+        getOrDie: function (msg) {
+          throw new Error(msg || 'error: getOrDie called on none.');
+        },
+        getOrNull: nul,
+        getOrUndefined: undef,
+        or: id,
+        orThunk: call$$1,
+        map: none,
+        ap: none,
+        each: noop$$1,
+        bind: none,
+        flatten: none,
+        exists: never$1,
+        forall: always$1,
+        filter: none,
+        equals: eq,
+        equals_: eq,
+        toArray: function () {
+          return [];
+        },
+        toString: 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,
+        getOrNull: constant_a,
+        getOrUndefined: 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 curry = function (f) {
-    var x = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-      x[_i - 1] = arguments[_i];
-    }
-    var args = new Array(arguments.length - 1);
-    for (var i = 1; i < arguments.length; i++)
-      args[i - 1] = arguments[i];
-    return function () {
-      var x = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        x[_i] = arguments[_i];
+    var getUiContainerDelta = function (ctrl) {
+      var uiContainer = getUiContainer(ctrl);
+      if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
+        var containerPos = global$3.DOM.getPos(uiContainer);
+        var dx = uiContainer.scrollLeft - containerPos.x;
+        var dy = uiContainer.scrollTop - containerPos.y;
+        return Option.some({
+          x: dx,
+          y: dy
+        });
+      } else {
+        return Option.none();
       }
-      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 never = constant(false);
-  var always = constant(true);
-
-  var never$1 = never;
-  var always$1 = always;
-  var none = function () {
-    return NONE;
-  };
-  var NONE = function () {
-    var eq = function (o) {
-      return o.isNone();
+    var setUiContainer = function (editor, ctrl) {
+      var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];
+      ctrl.getRoot().uiContainer = uiContainer;
     };
-    var call$$1 = function (thunk) {
-      return thunk();
+    var getUiContainer = function (ctrl) {
+      return ctrl ? ctrl.getRoot().uiContainer : null;
     };
-    var id = function (n) {
-      return n;
+    var inheritUiContainer = function (fromCtrl, toCtrl) {
+      return toCtrl.uiContainer = getUiContainer(fromCtrl);
     };
-    var noop$$1 = function () {
+    var UiContainer = {
+      getUiContainerDelta: getUiContainerDelta,
+      setUiContainer: setUiContainer,
+      getUiContainer: getUiContainer,
+      inheritUiContainer: inheritUiContainer
     };
-    var nul = function () {
-      return null;
+
+    var createToolbar = function (editor, items, size) {
+      var toolbarItems = [];
+      var buttonGroup;
+      if (!items) {
+        return;
+      }
+      global$2.each(items.split(/[ ,]/), function (item) {
+        var itemName;
+        var bindSelectorChanged = function () {
+          var selection = editor.selection;
+          if (item.settings.stateSelector) {
+            selection.selectorChanged(item.settings.stateSelector, function (state) {
+              item.active(state);
+            }, true);
+          }
+          if (item.settings.disabledStateSelector) {
+            selection.selectorChanged(item.settings.disabledStateSelector, function (state) {
+              item.disabled(state);
+            });
+          }
+        };
+        if (item === '|') {
+          buttonGroup = null;
+        } else {
+          if (!buttonGroup) {
+            buttonGroup = {
+              type: 'buttongroup',
+              items: []
+            };
+            toolbarItems.push(buttonGroup);
+          }
+          if (editor.buttons[item]) {
+            itemName = item;
+            item = editor.buttons[itemName];
+            if (typeof item === 'function') {
+              item = item();
+            }
+            item.type = item.type || 'button';
+            item.size = size;
+            item = global$4.create(item);
+            buttonGroup.items.push(item);
+            if (editor.initialized) {
+              bindSelectorChanged();
+            } else {
+              editor.on('init', bindSelectorChanged);
+            }
+          }
+        }
+      });
+      return {
+        type: 'toolbar',
+        layout: 'flow',
+        items: toolbarItems
+      };
     };
-    var undef = function () {
-      return undefined;
+    var createToolbars = function (editor, size) {
+      var toolbars = [];
+      var addToolbar = function (items) {
+        if (items) {
+          toolbars.push(createToolbar(editor, items, size));
+        }
+      };
+      global$2.each(getToolbars(editor), function (toolbar) {
+        addToolbar(toolbar);
+      });
+      if (toolbars.length) {
+        return {
+          type: 'panel',
+          layout: 'stack',
+          classes: 'toolbar-grp',
+          ariaRoot: true,
+          ariaRemember: true,
+          items: toolbars
+        };
+      }
     };
-    var me = {
-      fold: function (n, s) {
-        return n();
-      },
-      is: never$1,
-      isSome: never$1,
-      isNone: always$1,
-      getOr: id,
-      getOrThunk: call$$1,
-      getOrDie: function (msg) {
-        throw new Error(msg || 'error: getOrDie called on none.');
-      },
-      getOrNull: nul,
-      getOrUndefined: undef,
-      or: id,
-      orThunk: call$$1,
-      map: none,
-      ap: none,
-      each: noop$$1,
-      bind: none,
-      flatten: none,
-      exists: never$1,
-      forall: always$1,
-      filter: none,
-      equals: eq,
-      equals_: eq,
-      toArray: function () {
-        return [];
-      },
-      toString: constant('none()')
+    var Toolbar = {
+      createToolbar: createToolbar,
+      createToolbars: createToolbars
     };
-    if (Object.freeze)
-      Object.freeze(me);
-    return me;
-  }();
-  var some = function (a) {
-    var constant_a = function () {
-      return a;
+
+    var DOM = global$3.DOM;
+    var toClientRect = function (geomRect) {
+      return {
+        left: geomRect.x,
+        top: geomRect.y,
+        width: geomRect.w,
+        height: geomRect.h,
+        right: geomRect.x + geomRect.w,
+        bottom: geomRect.y + geomRect.h
+      };
     };
-    var self = function () {
-      return me;
+    var hideAllFloatingPanels = function (editor) {
+      global$2.each(editor.contextToolbars, function (toolbar) {
+        if (toolbar.panel) {
+          toolbar.panel.hide();
+        }
+      });
     };
-    var map = function (f) {
-      return some(f(a));
+    var movePanelTo = function (panel, pos) {
+      panel.moveTo(pos.left, pos.top);
     };
-    var bind = function (f) {
-      return f(a);
+    var togglePositionClass = function (panel, relPos, predicate) {
+      relPos = relPos ? relPos.substr(0, 2) : '';
+      global$2.each({
+        t: 'down',
+        b: 'up'
+      }, function (cls, pos) {
+        panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));
+      });
+      global$2.each({
+        l: 'left',
+        r: 'right'
+      }, function (cls, pos) {
+        panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));
+      });
     };
-    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,
-      getOrNull: constant_a,
-      getOrUndefined: constant_a,
-      or: self,
-      orThunk: self,
-      map: map,
-      ap: function (optfab) {
-        return optfab.fold(none, function (fab) {
-          return some(fab(a));
+    var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {
+      panelRect = toClientRect({
+        x: x,
+        y: y,
+        w: panelRect.w,
+        h: panelRect.h
+      });
+      if (handler) {
+        panelRect = handler({
+          elementRect: toClientRect(elementRect),
+          contentAreaRect: toClientRect(contentAreaRect),
+          panelRect: panelRect
         });
-      },
-      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 panelRect;
     };
-    return me;
-  };
-  var from = function (value) {
-    return value === null || value === undefined ? NONE : some(value);
-  };
-  var Option = {
-    some: some,
-    none: none,
-    from: from
-  };
-
-  var getUiContainerDelta = function (ctrl) {
-    var uiContainer = getUiContainer(ctrl);
-    if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {
-      var containerPos = global$3.DOM.getPos(uiContainer);
-      var dx = uiContainer.scrollLeft - containerPos.x;
-      var dy = uiContainer.scrollTop - containerPos.y;
-      return Option.some({
-        x: dx,
-        y: dy
-      });
-    } else {
-      return Option.none();
-    }
-  };
-  var setUiContainer = function (editor, ctrl) {
-    var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];
-    ctrl.getRoot().uiContainer = uiContainer;
-  };
-  var getUiContainer = function (ctrl) {
-    return ctrl ? ctrl.getRoot().uiContainer : null;
-  };
-  var inheritUiContainer = function (fromCtrl, toCtrl) {
-    return toCtrl.uiContainer = getUiContainer(fromCtrl);
-  };
-  var $_6344qfu4jjgwefnr = {
-    getUiContainerDelta: getUiContainerDelta,
-    setUiContainer: setUiContainer,
-    getUiContainer: getUiContainer,
-    inheritUiContainer: inheritUiContainer
-  };
-
-  var createToolbar = function (editor, items, size) {
-    var toolbarItems = [];
-    var buttonGroup;
-    if (!items) {
-      return;
-    }
-    global$2.each(items.split(/[ ,]/), function (item) {
-      var itemName;
-      var bindSelectorChanged = function () {
-        var selection = editor.selection;
-        if (item.settings.stateSelector) {
-          selection.selectorChanged(item.settings.stateSelector, function (state) {
-            item.active(state);
-          }, true);
+    var addContextualToolbars = function (editor) {
+      var scrollContainer;
+      var getContextToolbars = function () {
+        return editor.contextToolbars || [];
+      };
+      var getElementRect = function (elm) {
+        var pos, targetRect, root;
+        pos = DOM.getPos(editor.getContentAreaContainer());
+        targetRect = editor.dom.getRect(elm);
+        root = editor.dom.getRoot();
+        if (root.nodeName === 'BODY') {
+          targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;
+          targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;
         }
-        if (item.settings.disabledStateSelector) {
-          selection.selectorChanged(item.settings.disabledStateSelector, function (state) {
-            item.disabled(state);
-          });
+        targetRect.x += pos.x;
+        targetRect.y += pos.y;
+        return targetRect;
+      };
+      var reposition = function (match, shouldShow) {
+        var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;
+        var handler = getInlineToolbarPositionHandler(editor);
+        if (editor.removed) {
+          return;
         }
+        if (!match || !match.toolbar.panel) {
+          hideAllFloatingPanels(editor);
+          return;
+        }
+        testPositions = [
+          'bc-tc',
+          'tc-bc',
+          'tl-bl',
+          'bl-tl',
+          'tr-br',
+          'br-tr'
+        ];
+        panel = match.toolbar.panel;
+        if (shouldShow) {
+          panel.show();
+        }
+        elementRect = getElementRect(match.element);
+        panelRect = DOM.getRect(panel.getEl());
+        contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());
+        var delta = UiContainer.getUiContainerDelta(panel).getOr({
+          x: 0,
+          y: 0
+        });
+        elementRect.x += delta.x;
+        elementRect.y += delta.y;
+        panelRect.x += delta.x;
+        panelRect.y += delta.y;
+        contentAreaRect.x += delta.x;
+        contentAreaRect.y += delta.y;
+        smallElementWidthThreshold = 25;
+        if (DOM.getStyle(match.element, 'display', true) !== 'inline') {
+          var clientRect = match.element.getBoundingClientRect();
+          elementRect.w = clientRect.width;
+          elementRect.h = clientRect.height;
+        }
+        if (!editor.inline) {
+          contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;
+        }
+        if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {
+          elementRect = global$6.inflate(elementRect, 0, 8);
+        }
+        relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);
+        elementRect = global$6.clamp(elementRect, contentAreaRect);
+        if (relPos) {
+          relRect = global$6.relativePosition(panelRect, elementRect, relPos);
+          movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));
+        } else {
+          contentAreaRect.h += panelRect.h;
+          elementRect = global$6.intersect(contentAreaRect, elementRect);
+          if (elementRect) {
+            relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [
+              'bc-tc',
+              'bl-tl',
+              'br-tr'
+            ]);
+            if (relPos) {
+              relRect = global$6.relativePosition(panelRect, elementRect, relPos);
+              movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));
+            } else {
+              movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));
+            }
+          } else {
+            panel.hide();
+          }
+        }
+        togglePositionClass(panel, relPos, function (pos1, pos2) {
+          return pos1 === pos2;
+        });
       };
-      if (item === '|') {
-        buttonGroup = null;
-      } else {
-        if (!buttonGroup) {
-          buttonGroup = {
-            type: 'buttongroup',
-            items: []
+      var repositionHandler = function (show) {
+        return function () {
+          var execute = function () {
+            if (editor.selection) {
+              reposition(findFrontMostMatch(editor.selection.getNode()), show);
+            }
           };
-          toolbarItems.push(buttonGroup);
+          global$7.requestAnimationFrame(execute);
+        };
+      };
+      var bindScrollEvent = function (panel) {
+        if (!scrollContainer) {
+          var reposition_1 = repositionHandler(true);
+          var uiContainer_1 = UiContainer.getUiContainer(panel);
+          scrollContainer = editor.selection.getScrollContainer() || editor.getWin();
+          DOM.bind(scrollContainer, 'scroll', reposition_1);
+          DOM.bind(uiContainer_1, 'scroll', reposition_1);
+          editor.on('remove', function () {
+            DOM.unbind(scrollContainer, 'scroll', reposition_1);
+            DOM.unbind(uiContainer_1, 'scroll', reposition_1);
+          });
         }
-        if (editor.buttons[item]) {
-          itemName = item;
-          item = editor.buttons[itemName];
-          if (typeof item === 'function') {
-            item = item();
+      };
+      var showContextToolbar = function (match) {
+        var panel;
+        if (match.toolbar.panel) {
+          match.toolbar.panel.show();
+          reposition(match);
+          return;
+        }
+        panel = global$4.create({
+          type: 'floatpanel',
+          role: 'dialog',
+          classes: 'tinymce tinymce-inline arrow',
+          ariaLabel: 'Inline toolbar',
+          layout: 'flex',
+          direction: 'column',
+          align: 'stretch',
+          autohide: false,
+          autofix: true,
+          fixed: true,
+          border: 1,
+          items: Toolbar.createToolbar(editor, match.toolbar.items),
+          oncancel: function () {
+            editor.focus();
           }
-          item.type = item.type || 'button';
-          item.size = size;
-          item = global$4.create(item);
-          buttonGroup.items.push(item);
-          if (editor.initialized) {
-            bindSelectorChanged();
+        });
+        UiContainer.setUiContainer(editor, panel);
+        bindScrollEvent(panel);
+        match.toolbar.panel = panel;
+        panel.renderTo().reflow();
+        reposition(match);
+      };
+      var hideAllContextToolbars = function () {
+        global$2.each(getContextToolbars(), function (toolbar) {
+          if (toolbar.panel) {
+            toolbar.panel.hide();
+          }
+        });
+      };
+      var findFrontMostMatch = function (targetElm) {
+        var i, y, parentsAndSelf;
+        var toolbars = getContextToolbars();
+        parentsAndSelf = editor.$(targetElm).parents().add(targetElm);
+        for (i = parentsAndSelf.length - 1; i >= 0; i--) {
+          for (y = toolbars.length - 1; y >= 0; y--) {
+            if (toolbars[y].predicate(parentsAndSelf[i])) {
+              return {
+                toolbar: toolbars[y],
+                element: parentsAndSelf[i]
+              };
+            }
+          }
+        }
+        return null;
+      };
+      editor.on('click keyup setContent ObjectResized', function (e) {
+        if (e.type === 'setcontent' && !e.selection) {
+          return;
+        }
+        global$7.setEditorTimeout(editor, function () {
+          var match;
+          match = findFrontMostMatch(editor.selection.getNode());
+          if (match) {
+            hideAllContextToolbars();
+            showContextToolbar(match);
           } else {
-            editor.on('init', bindSelectorChanged);
+            hideAllContextToolbars();
           }
+        });
+      });
+      editor.on('blur hide contextmenu', hideAllContextToolbars);
+      editor.on('ObjectResizeStart', function () {
+        var match = findFrontMostMatch(editor.selection.getNode());
+        if (match && match.toolbar.panel) {
+          match.toolbar.panel.hide();
         }
-      }
-    });
-    return {
-      type: 'toolbar',
-      layout: 'flow',
-      items: toolbarItems
+      });
+      editor.on('ResizeEditor ResizeWindow', repositionHandler(true));
+      editor.on('nodeChange', repositionHandler(false));
+      editor.on('remove', function () {
+        global$2.each(getContextToolbars(), function (toolbar) {
+          if (toolbar.panel) {
+            toolbar.panel.remove();
+          }
+        });
+        editor.contextToolbars = {};
+      });
+      editor.shortcuts.add('ctrl+F9', '', function () {
+        var match = findFrontMostMatch(editor.selection.getNode());
+        if (match && match.toolbar.panel) {
+          match.toolbar.panel.items()[0].focus();
+        }
+      });
     };
-  };
-  var createToolbars = function (editor, size) {
-    var toolbars = [];
-    var addToolbar = function (items) {
-      if (items) {
-        toolbars.push(createToolbar(editor, items, size));
-      }
+    var ContextToolbars = { addContextualToolbars: addContextualToolbars };
+
+    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;
     };
-    global$2.each(getToolbars(editor), function (toolbar) {
-      addToolbar(toolbar);
-    });
-    if (toolbars.length) {
-      return {
-        type: 'panel',
-        layout: 'stack',
-        classes: 'toolbar-grp',
-        ariaRoot: true,
-        ariaRemember: true,
-        items: toolbars
+    var isType = function (type) {
+      return function (value) {
+        return typeOf(value) === type;
       };
-    }
-  };
-  var $_4udolhu7jjgwefo1 = {
-    createToolbar: createToolbar,
-    createToolbars: createToolbars
-  };
+    };
+    var isFunction = isType('function');
+    var isNumber = isType('number');
 
-  var DOM = global$3.DOM;
-  var toClientRect = function (geomRect) {
-    return {
-      left: geomRect.x,
-      top: geomRect.y,
-      width: geomRect.w,
-      height: geomRect.h,
-      right: geomRect.x + geomRect.w,
-      bottom: geomRect.y + geomRect.h
+    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 hideAllFloatingPanels = function (editor) {
-    global$2.each(editor.contextToolbars, function (toolbar) {
-      if (toolbar.panel) {
-        toolbar.panel.hide();
+    var exists = function (xs, pred) {
+      return findIndex(xs, pred).isSome();
+    };
+    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);
       }
-    });
-  };
-  var movePanelTo = function (panel, pos) {
-    panel.moveTo(pos.left, pos.top);
-  };
-  var togglePositionClass = function (panel, relPos, predicate) {
-    relPos = relPos ? relPos.substr(0, 2) : '';
-    global$2.each({
-      t: 'down',
-      b: 'up'
-    }, function (cls, pos) {
-      panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));
-    });
-    global$2.each({
-      l: 'left',
-      r: 'right'
-    }, function (cls, pos) {
-      panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));
-    });
-  };
-  var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {
-    panelRect = toClientRect({
-      x: x,
-      y: y,
-      w: panelRect.w,
-      h: panelRect.h
-    });
-    if (handler) {
-      panelRect = handler({
-        elementRect: toClientRect(elementRect),
-        contentAreaRect: toClientRect(contentAreaRect),
-        panelRect: panelRect
-      });
-    }
-    return panelRect;
-  };
-  var addContextualToolbars = function (editor) {
-    var scrollContainer;
-    var getContextToolbars = function () {
-      return editor.contextToolbars || [];
+      return r;
     };
-    var getElementRect = function (elm) {
-      var pos, targetRect, root;
-      pos = DOM.getPos(editor.getContentAreaContainer());
-      targetRect = editor.dom.getRect(elm);
-      root = editor.dom.getRoot();
-      if (root.nodeName === 'BODY') {
-        targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;
-        targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;
+    var each = function (xs, f) {
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        f(x, i, xs);
       }
-      targetRect.x += pos.x;
-      targetRect.y += pos.y;
-      return targetRect;
     };
-    var reposition = function (match, shouldShow) {
-      var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;
-      var handler = getInlineToolbarPositionHandler(editor);
-      if (editor.removed) {
-        return;
+    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);
+        }
       }
-      if (!match || !match.toolbar.panel) {
-        hideAllFloatingPanels(editor);
-        return;
-      }
-      testPositions = [
-        'bc-tc',
-        'tc-bc',
-        'tl-bl',
-        'bl-tl',
-        'tr-br',
-        'br-tr'
-      ];
-      panel = match.toolbar.panel;
-      if (shouldShow) {
-        panel.show();
-      }
-      elementRect = getElementRect(match.element);
-      panelRect = DOM.getRect(panel.getEl());
-      contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());
-      var delta = $_6344qfu4jjgwefnr.getUiContainerDelta(panel).getOr({
-        x: 0,
-        y: 0
+      return r;
+    };
+    var foldl = function (xs, f, acc) {
+      each(xs, function (x) {
+        acc = f(acc, x);
       });
-      elementRect.x += delta.x;
-      elementRect.y += delta.y;
-      panelRect.x += delta.x;
-      panelRect.y += delta.y;
-      contentAreaRect.x += delta.x;
-      contentAreaRect.y += delta.y;
-      smallElementWidthThreshold = 25;
-      if (DOM.getStyle(match.element, 'display', true) !== 'inline') {
-        var clientRect = match.element.getBoundingClientRect();
-        elementRect.w = clientRect.width;
-        elementRect.h = clientRect.height;
+      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);
+        }
       }
-      if (!editor.inline) {
-        contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;
+      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);
+        }
       }
-      if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {
-        elementRect = global$6.inflate(elementRect, 0, 8);
-      }
-      relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);
-      elementRect = global$6.clamp(elementRect, contentAreaRect);
-      if (relPos) {
-        relRect = global$6.relativePosition(panelRect, elementRect, relPos);
-        movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));
-      } else {
-        contentAreaRect.h += panelRect.h;
-        elementRect = global$6.intersect(contentAreaRect, elementRect);
-        if (elementRect) {
-          relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [
-            'bc-tc',
-            'bl-tl',
-            'br-tr'
-          ]);
-          if (relPos) {
-            relRect = global$6.relativePosition(panelRect, elementRect, relPos);
-            movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));
-          } else {
-            movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));
-          }
-        } else {
-          panel.hide();
+      return Option.none();
+    };
+    var slowIndexOf = function (xs, x) {
+      for (var i = 0, len = xs.length; i < len; ++i) {
+        if (xs[i] === x) {
+          return i;
         }
       }
-      togglePositionClass(panel, relPos, function (pos1, pos2) {
-        return pos1 === pos2;
-      });
+      return -1;
     };
-    var repositionHandler = function (show) {
-      return function () {
-        var execute = function () {
-          if (editor.selection) {
-            reposition(findFrontMostMatch(editor.selection.getNode()), show);
-          }
-        };
-        global$7.requestAnimationFrame(execute);
+    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 slice = Array.prototype.slice;
+    var from$1 = isFunction(Array.from) ? Array.from : function (x) {
+      return slice.call(x);
+    };
+
+    var defaultMenus = {
+      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 code'
+      },
+      table: { title: 'Table' },
+      help: { title: 'Help' }
+    };
+    var delimiterMenuNamePair = function () {
+      return {
+        name: '|',
+        item: { text: '|' }
       };
     };
-    var bindScrollEvent = function (panel) {
-      if (!scrollContainer) {
-        var reposition_1 = repositionHandler(true);
-        var uiContainer_1 = $_6344qfu4jjgwefnr.getUiContainer(panel);
-        scrollContainer = editor.selection.getScrollContainer() || editor.getWin();
-        DOM.bind(scrollContainer, 'scroll', reposition_1);
-        DOM.bind(uiContainer_1, 'scroll', reposition_1);
-        editor.on('remove', function () {
-          DOM.unbind(scrollContainer, 'scroll', reposition_1);
-          DOM.unbind(uiContainer_1, 'scroll', reposition_1);
-        });
-      }
+    var createMenuNameItemPair = function (name, item) {
+      var menuItem = item ? {
+        name: name,
+        item: item
+      } : null;
+      return name === '|' ? delimiterMenuNamePair() : menuItem;
     };
-    var showContextToolbar = function (match) {
-      var panel;
-      if (match.toolbar.panel) {
-        match.toolbar.panel.show();
-        reposition(match);
-        return;
-      }
-      panel = global$4.create({
-        type: 'floatpanel',
-        role: 'dialog',
-        classes: 'tinymce tinymce-inline arrow',
-        ariaLabel: 'Inline toolbar',
-        layout: 'flex',
-        direction: 'column',
-        align: 'stretch',
-        autohide: false,
-        autofix: true,
-        fixed: true,
-        border: 1,
-        items: $_4udolhu7jjgwefo1.createToolbar(editor, match.toolbar.items),
-        oncancel: function () {
-          editor.focus();
-        }
-      });
-      $_6344qfu4jjgwefnr.setUiContainer(editor, panel);
-      bindScrollEvent(panel);
-      match.toolbar.panel = panel;
-      panel.renderTo().reflow();
-      reposition(match);
+    var hasItemName = function (namedMenuItems, name) {
+      return findIndex(namedMenuItems, function (namedMenuItem) {
+        return namedMenuItem.name === name;
+      }).isSome();
     };
-    var hideAllContextToolbars = function () {
-      global$2.each(getContextToolbars(), function (toolbar) {
-        if (toolbar.panel) {
-          toolbar.panel.hide();
-        }
+    var isSeparator = function (namedMenuItem) {
+      return namedMenuItem && namedMenuItem.item.text === '|';
+    };
+    var cleanupMenu = function (namedMenuItems, removedMenuItems) {
+      var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {
+        return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;
       });
+      var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {
+        return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);
+      });
+      return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {
+        return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;
+      });
     };
-    var findFrontMostMatch = function (targetElm) {
-      var i, y, parentsAndSelf;
-      var toolbars = getContextToolbars();
-      parentsAndSelf = editor.$(targetElm).parents().add(targetElm);
-      for (i = parentsAndSelf.length - 1; i >= 0; i--) {
-        for (y = toolbars.length - 1; y >= 0; y--) {
-          if (toolbars[y].predicate(parentsAndSelf[i])) {
-            return {
-              toolbar: toolbars[y],
-              element: parentsAndSelf[i]
-            };
+    var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {
+      var menuButton, menu, namedMenuItems, isUserDefined;
+      if (menus) {
+        menu = menus[context];
+        isUserDefined = true;
+      } else {
+        menu = defaultMenus[context];
+      }
+      if (menu) {
+        menuButton = { text: menu.title };
+        namedMenuItems = [];
+        global$2.each((menu.items || '').split(/[ ,]/), function (name) {
+          var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);
+          if (namedMenuItem) {
+            namedMenuItems.push(namedMenuItem);
           }
+        });
+        if (!isUserDefined) {
+          global$2.each(editorMenuItems, function (item, name) {
+            if (item.context === context && !hasItemName(namedMenuItems, name)) {
+              if (item.separator === 'before') {
+                namedMenuItems.push(delimiterMenuNamePair());
+              }
+              if (item.prependToContext) {
+                namedMenuItems.unshift(createMenuNameItemPair(name, item));
+              } else {
+                namedMenuItems.push(createMenuNameItemPair(name, item));
+              }
+              if (item.separator === 'after') {
+                namedMenuItems.push(delimiterMenuNamePair());
+              }
+            }
+          });
         }
+        menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {
+          return menuItem.item;
+        });
+        if (!menuButton.menu.length) {
+          return null;
+        }
       }
-      return null;
+      return menuButton;
     };
-    editor.on('click keyup setContent ObjectResized', function (e) {
-      if (e.type === 'setcontent' && !e.selection) {
-        return;
-      }
-      global$7.setEditorTimeout(editor, function () {
-        var match;
-        match = findFrontMostMatch(editor.selection.getNode());
-        if (match) {
-          hideAllContextToolbars();
-          showContextToolbar(match);
-        } else {
-          hideAllContextToolbars();
+    var getDefaultMenubar = function (editor) {
+      var name;
+      var defaultMenuBar = [];
+      var menu = getMenu(editor);
+      if (menu) {
+        for (name in menu) {
+          defaultMenuBar.push(name);
         }
-      });
-    });
-    editor.on('blur hide contextmenu', hideAllContextToolbars);
-    editor.on('ObjectResizeStart', function () {
-      var match = findFrontMostMatch(editor.selection.getNode());
-      if (match && match.toolbar.panel) {
-        match.toolbar.panel.hide();
+      } else {
+        for (name in defaultMenus) {
+          defaultMenuBar.push(name);
+        }
       }
-    });
-    editor.on('ResizeEditor ResizeWindow', repositionHandler(true));
-    editor.on('nodeChange', repositionHandler(false));
-    editor.on('remove', function () {
-      global$2.each(getContextToolbars(), function (toolbar) {
-        if (toolbar.panel) {
-          toolbar.panel.remove();
+      return defaultMenuBar;
+    };
+    var createMenuButtons = function (editor) {
+      var menuButtons = [];
+      var defaultMenuBar = getDefaultMenubar(editor);
+      var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));
+      var menubar = getMenubar(editor);
+      var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;
+      for (var i = 0; i < enabledMenuNames.length; i++) {
+        var menuItems = enabledMenuNames[i];
+        var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);
+        if (menu) {
+          menuButtons.push(menu);
         }
-      });
-      editor.contextToolbars = {};
-    });
-    editor.shortcuts.add('ctrl+shift+e > ctrl+shift+p', '', function () {
-      var match = findFrontMostMatch(editor.selection.getNode());
-      if (match && match.toolbar.panel) {
-        match.toolbar.panel.items()[0].focus();
       }
-    });
-  };
-  var $_g1gegqu1jjgwefne = { addContextualToolbars: addContextualToolbars };
-
-  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 = function (type) {
-    return function (value) {
-      return typeOf(value) === type;
+      return menuButtons;
     };
-  };
+    var Menubar = { createMenuButtons: createMenuButtons };
 
-
-
-
-
-
-  var isFunction = isType('function');
-  var isNumber = isType('number');
-
-  var rawIndexOf = function () {
-    var pIndexOf = Array.prototype.indexOf;
-    var fastIndex = function (xs, x) {
-      return pIndexOf.call(xs, x);
+    var DOM$1 = global$3.DOM;
+    var getSize = function (elm) {
+      return {
+        width: elm.clientWidth,
+        height: elm.clientHeight
+      };
     };
-    var slowIndex = function (xs, x) {
-      return slowIndexOf(xs, x);
+    var resizeTo = function (editor, width, height) {
+      var containerElm, iframeElm, containerSize, iframeSize;
+      containerElm = editor.getContainer();
+      iframeElm = editor.getContentAreaContainer().firstChild;
+      containerSize = getSize(containerElm);
+      iframeSize = getSize(iframeElm);
+      if (width !== null) {
+        width = Math.max(getMinWidth(editor), width);
+        width = Math.min(getMaxWidth(editor), width);
+        DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));
+        DOM$1.setStyle(iframeElm, 'width', width);
+      }
+      height = Math.max(getMinHeight(editor), height);
+      height = Math.min(getMaxHeight(editor), height);
+      DOM$1.setStyle(iframeElm, 'height', height);
+      Events.fireResizeEditor(editor);
     };
-    return pIndexOf === undefined ? slowIndex : fastIndex;
-  }();
-  var indexOf = function (xs, x) {
-    var r = rawIndexOf(xs, x);
-    return r === -1 ? Option.none() : Option.some(r);
-  };
+    var resizeBy = function (editor, dw, dh) {
+      var elm = editor.getContentAreaContainer();
+      resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);
+    };
+    var Resize = {
+      resizeTo: resizeTo,
+      resizeBy: resizeBy
+    };
 
-  var exists = function (xs, pred) {
-    return findIndex(xs, pred).isSome();
-  };
+    var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
 
-
-  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 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);
+    var api = function (elm) {
+      return {
+        element: function () {
+          return elm;
+        }
+      };
+    };
+    var trigger = function (sidebar, panel, callbackName) {
+      var callback = sidebar.settings[callbackName];
+      if (callback) {
+        callback(api(panel.getEl('body')));
       }
-    }
-    return r;
-  };
-
-
-  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 slice = Array.prototype.slice;
-  var reverse = function (xs) {
-    var r = slice.call(xs, 0);
-    r.reverse();
-    return r;
-  };
-
-
-
-
-
-
-  var from$1 = isFunction(Array.from) ? Array.from : function (x) {
-    return slice.call(x);
-  };
-
-  var defaultMenus = {
-    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 code'
-    },
-    table: { title: 'Table' },
-    help: { title: 'Help' }
-  };
-  var delimiterMenuNamePair = function () {
-    return {
-      name: '|',
-      item: { text: '|' }
     };
-  };
-  var createMenuNameItemPair = function (name, item) {
-    var menuItem = item ? {
-      name: name,
-      item: item
-    } : null;
-    return name === '|' ? delimiterMenuNamePair() : menuItem;
-  };
-  var hasItemName = function (namedMenuItems, name) {
-    return findIndex(namedMenuItems, function (namedMenuItem) {
-      return namedMenuItem.name === name;
-    }).isSome();
-  };
-  var isSeparator = function (namedMenuItem) {
-    return namedMenuItem && namedMenuItem.item.text === '|';
-  };
-  var cleanupMenu = function (namedMenuItems, removedMenuItems) {
-    var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {
-      return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;
-    });
-    var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {
-      return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);
-    });
-    return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {
-      return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;
-    });
-  };
-  var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {
-    var menuButton, menu, namedMenuItems, isUserDefined;
-    if (menus) {
-      menu = menus[context];
-      isUserDefined = true;
-    } else {
-      menu = defaultMenus[context];
-    }
-    if (menu) {
-      menuButton = { text: menu.title };
-      namedMenuItems = [];
-      global$2.each((menu.items || '').split(/[ ,]/), function (name) {
-        var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);
-        if (namedMenuItem) {
-          namedMenuItems.push(namedMenuItem);
+    var hidePanels = function (name, container, sidebars) {
+      global$2.each(sidebars, function (sidebar) {
+        var panel = container.items().filter('#' + sidebar.name)[0];
+        if (panel && panel.visible() && sidebar.name !== name) {
+          trigger(sidebar, panel, 'onhide');
+          panel.visible(false);
         }
       });
-      if (!isUserDefined) {
-        global$2.each(editorMenuItems, function (item, name) {
-          if (item.context === context && !hasItemName(namedMenuItems, name)) {
-            if (item.separator === 'before') {
-              namedMenuItems.push(delimiterMenuNamePair());
-            }
-            if (item.prependToContext) {
-              namedMenuItems.unshift(createMenuNameItemPair(name, item));
-            } else {
-              namedMenuItems.push(createMenuNameItemPair(name, item));
-            }
-            if (item.separator === 'after') {
-              namedMenuItems.push(delimiterMenuNamePair());
-            }
-          }
-        });
-      }
-      menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {
-        return menuItem.item;
+    };
+    var deactivateButtons = function (toolbar) {
+      toolbar.items().each(function (ctrl) {
+        ctrl.active(false);
       });
-      if (!menuButton.menu.length) {
-        return null;
-      }
-    }
-    return menuButton;
-  };
-  var getDefaultMenubar = function (editor) {
-    var name;
-    var defaultMenuBar = [];
-    var menu = getMenu(editor);
-    if (menu) {
-      for (name in menu) {
-        defaultMenuBar.push(name);
-      }
-    } else {
-      for (name in defaultMenus) {
-        defaultMenuBar.push(name);
-      }
-    }
-    return defaultMenuBar;
-  };
-  var createMenuButtons = function (editor) {
-    var menuButtons = [];
-    var defaultMenuBar = getDefaultMenubar(editor);
-    var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));
-    var menubar = getMenubar(editor);
-    var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;
-    for (var i = 0; i < enabledMenuNames.length; i++) {
-      var menuItems = enabledMenuNames[i];
-      var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);
-      if (menu) {
-        menuButtons.push(menu);
-      }
-    }
-    return menuButtons;
-  };
-  var $_bahgsqu8jjgwefo4 = { createMenuButtons: createMenuButtons };
-
-  var DOM$1 = global$3.DOM;
-  var getSize = function (elm) {
-    return {
-      width: elm.clientWidth,
-      height: elm.clientHeight
     };
-  };
-  var resizeTo = function (editor, width, height) {
-    var containerElm, iframeElm, containerSize, iframeSize;
-    containerElm = editor.getContainer();
-    iframeElm = editor.getContentAreaContainer().firstChild;
-    containerSize = getSize(containerElm);
-    iframeSize = getSize(iframeElm);
-    if (width !== null) {
-      width = Math.max(getMinWidth(editor), width);
-      width = Math.min(getMaxWidth(editor), width);
-      DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));
-      DOM$1.setStyle(iframeElm, 'width', width);
-    }
-    height = Math.max(getMinHeight(editor), height);
-    height = Math.min(getMaxHeight(editor), height);
-    DOM$1.setStyle(iframeElm, 'height', height);
-    $_5hpmustzjjgwefnb.fireResizeEditor(editor);
-  };
-  var resizeBy = function (editor, dw, dh) {
-    var elm = editor.getContentAreaContainer();
-    resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);
-  };
-  var $_sd6u0ubjjgwefok = {
-    resizeTo: resizeTo,
-    resizeBy: resizeBy
-  };
-
-  var global$8 = tinymce.util.Tools.resolve('tinymce.Env');
-
-  var api = function (elm) {
-    return {
-      element: function () {
-        return elm;
-      }
+    var findSidebar = function (sidebars, name) {
+      return global$2.grep(sidebars, function (sidebar) {
+        return sidebar.name === name;
+      })[0];
     };
-  };
-  var trigger = function (sidebar, panel, callbackName) {
-    var callback = sidebar.settings[callbackName];
-    if (callback) {
-      callback(api(panel.getEl('body')));
-    }
-  };
-  var hidePanels = function (name, container, sidebars) {
-    global$2.each(sidebars, function (sidebar) {
-      var panel = container.items().filter('#' + sidebar.name)[0];
-      if (panel && panel.visible() && sidebar.name !== name) {
-        trigger(sidebar, panel, 'onhide');
-        panel.visible(false);
-      }
-    });
-  };
-  var deactivateButtons = function (toolbar) {
-    toolbar.items().each(function (ctrl) {
-      ctrl.active(false);
-    });
-  };
-  var findSidebar = function (sidebars, name) {
-    return global$2.grep(sidebars, function (sidebar) {
-      return sidebar.name === name;
-    })[0];
-  };
-  var showPanel = function (editor, name, sidebars) {
-    return function (e) {
-      var btnCtrl = e.control;
-      var container = btnCtrl.parents().filter('panel')[0];
-      var panel = container.find('#' + name)[0];
-      var sidebar = findSidebar(sidebars, name);
-      hidePanels(name, container, sidebars);
-      deactivateButtons(btnCtrl.parent());
-      if (panel && panel.visible()) {
-        trigger(sidebar, panel, 'onhide');
-        panel.hide();
-        btnCtrl.active(false);
-      } else {
-        if (panel) {
-          panel.show();
-          trigger(sidebar, panel, 'onshow');
+    var showPanel = function (editor, name, sidebars) {
+      return function (e) {
+        var btnCtrl = e.control;
+        var container = btnCtrl.parents().filter('panel')[0];
+        var panel = container.find('#' + name)[0];
+        var sidebar = findSidebar(sidebars, name);
+        hidePanels(name, container, sidebars);
+        deactivateButtons(btnCtrl.parent());
+        if (panel && panel.visible()) {
+          trigger(sidebar, panel, 'onhide');
+          panel.hide();
+          btnCtrl.active(false);
         } else {
-          panel = global$4.create({
-            type: 'container',
-            name: name,
-            layout: 'stack',
-            classes: 'sidebar-panel',
-            html: ''
-          });
-          container.prepend(panel);
-          trigger(sidebar, panel, 'onrender');
-          trigger(sidebar, panel, 'onshow');
+          if (panel) {
+            panel.show();
+            trigger(sidebar, panel, 'onshow');
+          } else {
+            panel = global$4.create({
+              type: 'container',
+              name: name,
+              layout: 'stack',
+              classes: 'sidebar-panel',
+              html: ''
+            });
+            container.prepend(panel);
+            trigger(sidebar, panel, 'onrender');
+            trigger(sidebar, panel, 'onshow');
+          }
+          btnCtrl.active(true);
         }
-        btnCtrl.active(true);
-      }
-      $_5hpmustzjjgwefnb.fireResizeEditor(editor);
+        Events.fireResizeEditor(editor);
+      };
     };
-  };
-  var isModernBrowser = function () {
-    return !global$8.ie || global$8.ie >= 11;
-  };
-  var hasSidebar = function (editor) {
-    return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;
-  };
-  var createSidebar = function (editor) {
-    var buttons = global$2.map(editor.sidebars, function (sidebar) {
-      var settings = sidebar.settings;
+    var isModernBrowser = function () {
+      return !global$8.ie || global$8.ie >= 11;
+    };
+    var hasSidebar = function (editor) {
+      return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;
+    };
+    var createSidebar = function (editor) {
+      var buttons = global$2.map(editor.sidebars, function (sidebar) {
+        var settings = sidebar.settings;
+        return {
+          type: 'button',
+          icon: settings.icon,
+          image: settings.image,
+          tooltip: settings.tooltip,
+          onclick: showPanel(editor, sidebar.name, editor.sidebars)
+        };
+      });
       return {
-        type: 'button',
-        icon: settings.icon,
-        image: settings.image,
-        tooltip: settings.tooltip,
-        onclick: showPanel(editor, sidebar.name, editor.sidebars)
+        type: 'panel',
+        name: 'sidebar',
+        layout: 'stack',
+        classes: 'sidebar',
+        items: [{
+            type: 'toolbar',
+            layout: 'stack',
+            classes: 'sidebar-toolbar',
+            items: buttons
+          }]
       };
-    });
-    return {
-      type: 'panel',
-      name: 'sidebar',
-      layout: 'stack',
-      classes: 'sidebar',
-      items: [{
-          type: 'toolbar',
-          layout: 'stack',
-          classes: 'sidebar-toolbar',
-          items: buttons
-        }]
     };
-  };
-  var $_b7ut9jucjjgwefom = {
-    hasSidebar: hasSidebar,
-    createSidebar: createSidebar
-  };
+    var Sidebar = {
+      hasSidebar: hasSidebar,
+      createSidebar: createSidebar
+    };
 
-  var fireSkinLoaded$1 = function (editor) {
-    var done = function () {
-      editor._skinLoaded = true;
-      $_5hpmustzjjgwefnb.fireSkinLoaded(editor);
+    var fireSkinLoaded$1 = function (editor) {
+      var done = function () {
+        editor._skinLoaded = true;
+        Events.fireSkinLoaded(editor);
+      };
+      return function () {
+        if (editor.initialized) {
+          done();
+        } else {
+          editor.on('init', done);
+        }
+      };
     };
-    return function () {
-      if (editor.initialized) {
-        done();
-      } else {
-        editor.on('init', done);
-      }
-    };
-  };
-  var $_awdosmuejjgwefop = { fireSkinLoaded: fireSkinLoaded$1 };
+    var SkinLoaded = { fireSkinLoaded: fireSkinLoaded$1 };
 
-  var DOM$2 = global$3.DOM;
-  var switchMode = function (panel) {
-    return function (e) {
-      panel.find('*').disabled(e.mode === 'readonly');
+    var DOM$2 = global$3.DOM;
+    var switchMode = function (panel) {
+      return function (e) {
+        panel.find('*').disabled(e.mode === 'readonly');
+      };
     };
-  };
-  var editArea = function (border) {
-    return {
-      type: 'panel',
-      name: 'iframe',
-      layout: 'stack',
-      classes: 'edit-area',
-      border: border,
-      html: ''
+    var editArea = function (border) {
+      return {
+        type: 'panel',
+        name: 'iframe',
+        layout: 'stack',
+        classes: 'edit-area',
+        border: border,
+        html: ''
+      };
     };
-  };
-  var editAreaContainer = function (editor) {
-    return {
-      type: 'panel',
-      layout: 'stack',
-      classes: 'edit-aria-container',
-      border: '1 0 0 0',
-      items: [
-        editArea('0'),
-        $_b7ut9jucjjgwefom.createSidebar(editor)
-      ]
-    };
-  };
-  var render = function (editor, theme, args) {
-    var panel, resizeHandleCtrl, startSize;
-    if (isSkinDisabled(editor) === false && args.skinUiCss) {
-      DOM$2.styleSheetLoader.load(args.skinUiCss, $_awdosmuejjgwefop.fireSkinLoaded(editor));
-    } else {
-      $_awdosmuejjgwefop.fireSkinLoaded(editor)();
-    }
-    panel = theme.panel = global$4.create({
-      type: 'panel',
-      role: 'application',
-      classes: 'tinymce',
-      style: 'visibility: hidden',
-      layout: 'stack',
-      border: 1,
-      items: [
-        {
-          type: 'container',
-          classes: 'top-part',
-          items: [
-            hasMenubar(editor) === false ? null : {
-              type: 'menubar',
-              border: '0 0 1 0',
-              items: $_bahgsqu8jjgwefo4.createMenuButtons(editor)
-            },
-            $_4udolhu7jjgwefo1.createToolbars(editor, getToolbarSize(editor))
-          ]
-        },
-        $_b7ut9jucjjgwefom.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')
-      ]
-    });
-    $_6344qfu4jjgwefnr.setUiContainer(editor, panel);
-    if (getResize(editor) !== 'none') {
-      resizeHandleCtrl = {
-        type: 'resizehandle',
-        direction: getResize(editor),
-        onResizeStart: function () {
-          var elm = editor.getContentAreaContainer().firstChild;
-          startSize = {
-            width: elm.clientWidth,
-            height: elm.clientHeight
-          };
-        },
-        onResize: function (e) {
-          if (getResize(editor) === 'both') {
-            $_sd6u0ubjjgwefok.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);
-          } else {
-            $_sd6u0ubjjgwefok.resizeTo(editor, null, startSize.height + e.deltaY);
-          }
-        }
-      };
-    }
-    if (hasStatusbar(editor)) {
-      var linkHtml = '<a href="https://www.tinymce.com/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">tinymce</a>';
-      var html = global$5.translate([
-        'Powered by {0}',
-        linkHtml
-      ]);
-      var brandingLabel = isBrandingEnabled(editor) ? {
-        type: 'label',
-        classes: 'branding',
-        html: ' ' + html
-      } : null;
-      panel.add({
+    var editAreaContainer = function (editor) {
+      return {
         type: 'panel',
-        name: 'statusbar',
-        classes: 'statusbar',
-        layout: 'flow',
+        layout: 'stack',
+        classes: 'edit-aria-container',
         border: '1 0 0 0',
-        ariaRoot: true,
         items: [
+          editArea('0'),
+          Sidebar.createSidebar(editor)
+        ]
+      };
+    };
+    var render = function (editor, theme, args) {
+      var panel, resizeHandleCtrl, startSize;
+      if (isSkinDisabled(editor) === false && args.skinUiCss) {
+        DOM$2.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));
+      } else {
+        SkinLoaded.fireSkinLoaded(editor)();
+      }
+      panel = theme.panel = global$4.create({
+        type: 'panel',
+        role: 'application',
+        classes: 'tinymce',
+        style: 'visibility: hidden',
+        layout: 'stack',
+        border: 1,
+        items: [
           {
-            type: 'elementpath',
-            editor: editor
+            type: 'container',
+            classes: 'top-part',
+            items: [
+              hasMenubar(editor) === false ? null : {
+                type: 'menubar',
+                border: '0 0 1 0',
+                items: Menubar.createMenuButtons(editor)
+              },
+              Toolbar.createToolbars(editor, getToolbarSize(editor))
+            ]
           },
-          resizeHandleCtrl,
-          brandingLabel
+          Sidebar.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')
         ]
       });
-    }
-    $_5hpmustzjjgwefnb.fireBeforeRenderUI(editor);
-    editor.on('SwitchMode', switchMode(panel));
-    panel.renderBefore(args.targetNode).reflow();
-    if (isReadOnly(editor)) {
-      editor.setMode('readonly');
-    }
-    if (args.width) {
-      DOM$2.setStyle(panel.getEl(), 'width', args.width);
-    }
-    editor.on('remove', function () {
-      panel.remove();
-      panel = null;
-    });
-    $_azwbz4u0jjgwefnc.addKeys(editor, panel);
-    $_g1gegqu1jjgwefne.addContextualToolbars(editor);
-    return {
-      iframeContainer: panel.find('#iframe')[0].getEl(),
-      editorContainer: panel.getEl()
-    };
-  };
-  var $_vxdgetvjjgwefn7 = { render: render };
-
-  var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
-
-  var count = 0;
-  var funcs = {
-    id: function () {
-      return 'mceu_' + count++;
-    },
-    create: function (name$$1, attrs, children) {
-      var elm = document.createElement(name$$1);
-      global$3.DOM.setAttribs(elm, attrs);
-      if (typeof children === 'string') {
-        elm.innerHTML = children;
-      } else {
-        global$2.each(children, function (child) {
-          if (child.nodeType) {
-            elm.appendChild(child);
+      UiContainer.setUiContainer(editor, panel);
+      if (getResize(editor) !== 'none') {
+        resizeHandleCtrl = {
+          type: 'resizehandle',
+          direction: getResize(editor),
+          onResizeStart: function () {
+            var elm = editor.getContentAreaContainer().firstChild;
+            startSize = {
+              width: elm.clientWidth,
+              height: elm.clientHeight
+            };
+          },
+          onResize: function (e) {
+            if (getResize(editor) === 'both') {
+              Resize.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);
+            } else {
+              Resize.resizeTo(editor, null, startSize.height + e.deltaY);
+            }
           }
+        };
+      }
+      if (hasStatusbar(editor)) {
+        var linkHtml = '<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">Tiny</a>';
+        var html = global$5.translate([
+          'Powered by {0}',
+          linkHtml
+        ]);
+        var brandingLabel = isBrandingEnabled(editor) ? {
+          type: 'label',
+          classes: 'branding',
+          html: ' ' + html
+        } : null;
+        panel.add({
+          type: 'panel',
+          name: 'statusbar',
+          classes: 'statusbar',
+          layout: 'flow',
+          border: '1 0 0 0',
+          ariaRoot: true,
+          items: [
+            {
+              type: 'elementpath',
+              editor: editor
+            },
+            resizeHandleCtrl,
+            brandingLabel
+          ]
         });
       }
-      return elm;
-    },
-    createFragment: function (html) {
-      return global$3.DOM.createFragment(html);
-    },
-    getWindowSize: function () {
-      return global$3.DOM.getViewPort();
-    },
-    getSize: function (elm) {
-      var width, height;
-      if (elm.getBoundingClientRect) {
-        var rect = elm.getBoundingClientRect();
-        width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);
-        height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);
-      } else {
-        width = elm.offsetWidth;
-        height = elm.offsetHeight;
+      Events.fireBeforeRenderUI(editor);
+      editor.on('SwitchMode', switchMode(panel));
+      panel.renderBefore(args.targetNode).reflow();
+      if (isReadOnly(editor)) {
+        editor.setMode('readonly');
       }
+      if (args.width) {
+        DOM$2.setStyle(panel.getEl(), 'width', args.width);
+      }
+      editor.on('remove', function () {
+        panel.remove();
+        panel = null;
+      });
+      A11y.addKeys(editor, panel);
+      ContextToolbars.addContextualToolbars(editor);
       return {
-        width: width,
-        height: height
+        iframeContainer: panel.find('#iframe')[0].getEl(),
+        editorContainer: panel.getEl()
       };
-    },
-    getPos: function (elm, root) {
-      return global$3.DOM.getPos(elm, root || funcs.getContainer());
-    },
-    getContainer: function () {
-      return global$8.container ? global$8.container : document.body;
-    },
-    getViewPort: function (win) {
-      return global$3.DOM.getViewPort(win);
-    },
-    get: function (id) {
-      return document.getElementById(id);
-    },
-    addClass: function (elm, cls) {
-      return global$3.DOM.addClass(elm, cls);
-    },
-    removeClass: function (elm, cls) {
-      return global$3.DOM.removeClass(elm, cls);
-    },
-    hasClass: function (elm, cls) {
-      return global$3.DOM.hasClass(elm, cls);
-    },
-    toggleClass: function (elm, cls, state) {
-      return global$3.DOM.toggleClass(elm, cls, state);
-    },
-    css: function (elm, name$$1, value) {
-      return global$3.DOM.setStyle(elm, name$$1, value);
-    },
-    getRuntimeStyle: function (elm, name$$1) {
-      return global$3.DOM.getStyle(elm, name$$1, true);
-    },
-    on: function (target, name$$1, callback, scope) {
-      return global$3.DOM.bind(target, name$$1, callback, scope);
-    },
-    off: function (target, name$$1, callback) {
-      return global$3.DOM.unbind(target, name$$1, callback);
-    },
-    fire: function (target, name$$1, args) {
-      return global$3.DOM.fire(target, name$$1, args);
-    },
-    innerHtml: function (elm, html) {
-      global$3.DOM.setHTML(elm, html);
-    }
-  };
+    };
+    var Iframe = { render: render };
 
-  var isStatic = function (elm) {
-    return funcs.getRuntimeStyle(elm, 'position') === 'static';
-  };
-  var isFixed = function (ctrl) {
-    return ctrl.state.get('fixed');
-  };
-  function calculateRelativePosition(ctrl, targetElm, rel) {
-    var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
-    viewport = getWindowViewPort();
-    pos = funcs.getPos(targetElm, $_6344qfu4jjgwefnr.getUiContainer(ctrl));
-    x = pos.x;
-    y = pos.y;
-    if (isFixed(ctrl) && isStatic(document.body)) {
-      x -= viewport.x;
-      y -= viewport.y;
-    }
-    ctrlElm = ctrl.getEl();
-    size = funcs.getSize(ctrlElm);
-    selfW = size.width;
-    selfH = size.height;
-    size = funcs.getSize(targetElm);
-    targetW = size.width;
-    targetH = size.height;
-    rel = (rel || '').split('');
-    if (rel[0] === 'b') {
-      y += targetH;
-    }
-    if (rel[1] === 'r') {
-      x += targetW;
-    }
-    if (rel[0] === 'c') {
-      y += Math.round(targetH / 2);
-    }
-    if (rel[1] === 'c') {
-      x += Math.round(targetW / 2);
-    }
-    if (rel[3] === 'b') {
-      y -= selfH;
-    }
-    if (rel[4] === 'r') {
-      x -= selfW;
-    }
-    if (rel[3] === 'c') {
-      y -= Math.round(selfH / 2);
-    }
-    if (rel[4] === 'c') {
-      x -= Math.round(selfW / 2);
-    }
-    return {
-      x: x,
-      y: y,
-      w: selfW,
-      h: selfH
+    var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');
+
+    var count = 0;
+    var funcs = {
+      id: function () {
+        return 'mceu_' + count++;
+      },
+      create: function (name$$1, attrs, children) {
+        var elm = document.createElement(name$$1);
+        global$3.DOM.setAttribs(elm, attrs);
+        if (typeof children === 'string') {
+          elm.innerHTML = children;
+        } else {
+          global$2.each(children, function (child) {
+            if (child.nodeType) {
+              elm.appendChild(child);
+            }
+          });
+        }
+        return elm;
+      },
+      createFragment: function (html) {
+        return global$3.DOM.createFragment(html);
+      },
+      getWindowSize: function () {
+        return global$3.DOM.getViewPort();
+      },
+      getSize: function (elm) {
+        var width, height;
+        if (elm.getBoundingClientRect) {
+          var rect = elm.getBoundingClientRect();
+          width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);
+          height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);
+        } else {
+          width = elm.offsetWidth;
+          height = elm.offsetHeight;
+        }
+        return {
+          width: width,
+          height: height
+        };
+      },
+      getPos: function (elm, root) {
+        return global$3.DOM.getPos(elm, root || funcs.getContainer());
+      },
+      getContainer: function () {
+        return global$8.container ? global$8.container : document.body;
+      },
+      getViewPort: function (win) {
+        return global$3.DOM.getViewPort(win);
+      },
+      get: function (id) {
+        return document.getElementById(id);
+      },
+      addClass: function (elm, cls) {
+        return global$3.DOM.addClass(elm, cls);
+      },
+      removeClass: function (elm, cls) {
+        return global$3.DOM.removeClass(elm, cls);
+      },
+      hasClass: function (elm, cls) {
+        return global$3.DOM.hasClass(elm, cls);
+      },
+      toggleClass: function (elm, cls, state) {
+        return global$3.DOM.toggleClass(elm, cls, state);
+      },
+      css: function (elm, name$$1, value) {
+        return global$3.DOM.setStyle(elm, name$$1, value);
+      },
+      getRuntimeStyle: function (elm, name$$1) {
+        return global$3.DOM.getStyle(elm, name$$1, true);
+      },
+      on: function (target, name$$1, callback, scope) {
+        return global$3.DOM.bind(target, name$$1, callback, scope);
+      },
+      off: function (target, name$$1, callback) {
+        return global$3.DOM.unbind(target, name$$1, callback);
+      },
+      fire: function (target, name$$1, args) {
+        return global$3.DOM.fire(target, name$$1, args);
+      },
+      innerHtml: function (elm, html) {
+        global$3.DOM.setHTML(elm, html);
+      }
     };
-  }
-  var getUiContainerViewPort = function (customUiContainer) {
-    return {
-      x: 0,
-      y: 0,
-      w: customUiContainer.scrollWidth - 1,
-      h: customUiContainer.scrollHeight - 1
+
+    var isStatic = function (elm) {
+      return funcs.getRuntimeStyle(elm, 'position') === 'static';
     };
-  };
-  var getWindowViewPort = function () {
-    var win = window;
-    var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);
-    var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
-    var w = win.innerWidth || document.documentElement.clientWidth;
-    var h = win.innerHeight || document.documentElement.clientHeight;
-    return {
-      x: x,
-      y: y,
-      w: x + w,
-      h: y + h
+    var isFixed = function (ctrl) {
+      return ctrl.state.get('fixed');
     };
-  };
-  var getViewPortRect = function (ctrl) {
-    var customUiContainer = $_6344qfu4jjgwefnr.getUiContainer(ctrl);
-    return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();
-  };
-  var $_3fnh5iukjjgwefpt = {
-    testMoveRel: function (elm, rels) {
-      var viewPortRect = getViewPortRect(this);
-      for (var i = 0; i < rels.length; i++) {
-        var pos = calculateRelativePosition(this, elm, rels[i]);
-        if (isFixed(this)) {
-          if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
-            return rels[i];
-          }
-        } else {
-          if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {
-            return rels[i];
-          }
-        }
+    function calculateRelativePosition(ctrl, targetElm, rel) {
+      var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
+      viewport = getWindowViewPort();
+      pos = funcs.getPos(targetElm, UiContainer.getUiContainer(ctrl));
+      x = pos.x;
+      y = pos.y;
+      if (isFixed(ctrl) && isStatic(document.body)) {
+        x -= viewport.x;
+        y -= viewport.y;
       }
-      return rels[0];
-    },
-    moveRel: function (elm, rel) {
-      if (typeof rel !== 'string') {
-        rel = this.testMoveRel(elm, rel);
+      ctrlElm = ctrl.getEl();
+      size = funcs.getSize(ctrlElm);
+      selfW = size.width;
+      selfH = size.height;
+      size = funcs.getSize(targetElm);
+      targetW = size.width;
+      targetH = size.height;
+      rel = (rel || '').split('');
+      if (rel[0] === 'b') {
+        y += targetH;
       }
-      var pos = calculateRelativePosition(this, elm, rel);
-      return this.moveTo(pos.x, pos.y);
-    },
-    moveBy: function (dx, dy) {
-      var self$$1 = this, rect = self$$1.layoutRect();
-      self$$1.moveTo(rect.x + dx, rect.y + dy);
-      return self$$1;
-    },
-    moveTo: function (x, y) {
-      var self$$1 = this;
-      function constrain(value, max, size) {
-        if (value < 0) {
-          return 0;
-        }
-        if (value + size > max) {
-          value = max - size;
-          return value < 0 ? 0 : value;
-        }
-        return value;
+      if (rel[1] === 'r') {
+        x += targetW;
       }
-      if (self$$1.settings.constrainToViewport) {
-        var viewPortRect = getViewPortRect(this);
-        var layoutRect = self$$1.layoutRect();
-        x = constrain(x, viewPortRect.w, layoutRect.w);
-        y = constrain(y, viewPortRect.h, layoutRect.h);
+      if (rel[0] === 'c') {
+        y += Math.round(targetH / 2);
       }
-      var uiContainer = $_6344qfu4jjgwefnr.getUiContainer(self$$1);
-      if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {
-        x -= uiContainer.scrollLeft;
-        y -= uiContainer.scrollTop;
+      if (rel[1] === 'c') {
+        x += Math.round(targetW / 2);
       }
-      if (uiContainer) {
-        x += 1;
-        y += 1;
+      if (rel[3] === 'b') {
+        y -= selfH;
       }
-      if (self$$1.state.get('rendered')) {
-        self$$1.layoutRect({
-          x: x,
-          y: y
-        }).repaint();
-      } else {
-        self$$1.settings.x = x;
-        self$$1.settings.y = y;
+      if (rel[4] === 'r') {
+        x -= selfW;
       }
-      self$$1.fire('move', {
-        x: x,
-        y: y
-      });
-      return self$$1;
-    }
-  };
-
-  var global$10 = tinymce.util.Tools.resolve('tinymce.util.Class');
-
-  var global$11 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');
-
-  var $_fbr241uqjjgwefqo = {
-    parseBox: function (value) {
-      var len;
-      var radix = 10;
-      if (!value) {
-        return;
+      if (rel[3] === 'c') {
+        y -= Math.round(selfH / 2);
       }
-      if (typeof value === 'number') {
-        value = value || 0;
-        return {
-          top: value,
-          left: value,
-          bottom: value,
-          right: value
-        };
+      if (rel[4] === 'c') {
+        x -= Math.round(selfW / 2);
       }
-      value = value.split(' ');
-      len = value.length;
-      if (len === 1) {
-        value[1] = value[2] = value[3] = value[0];
-      } else if (len === 2) {
-        value[2] = value[0];
-        value[3] = value[1];
-      } else if (len === 3) {
-        value[3] = value[1];
-      }
       return {
-        top: parseInt(value[0], radix) || 0,
-        right: parseInt(value[1], radix) || 0,
-        bottom: parseInt(value[2], radix) || 0,
-        left: parseInt(value[3], radix) || 0
+        x: x,
+        y: y,
+        w: selfW,
+        h: selfH
       };
-    },
-    measureBox: function (elm, prefix) {
-      function getStyle(name) {
-        var defaultView = elm.ownerDocument.defaultView;
-        if (defaultView) {
-          var computedStyle = defaultView.getComputedStyle(elm, null);
-          if (computedStyle) {
-            name = name.replace(/[A-Z]/g, function (a) {
-              return '-' + a;
-            });
-            return computedStyle.getPropertyValue(name);
+    }
+    var getUiContainerViewPort = function (customUiContainer) {
+      return {
+        x: 0,
+        y: 0,
+        w: customUiContainer.scrollWidth - 1,
+        h: customUiContainer.scrollHeight - 1
+      };
+    };
+    var getWindowViewPort = function () {
+      var win = window;
+      var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);
+      var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
+      var w = win.innerWidth || document.documentElement.clientWidth;
+      var h = win.innerHeight || document.documentElement.clientHeight;
+      return {
+        x: x,
+        y: y,
+        w: w,
+        h: h
+      };
+    };
+    var getViewPortRect = function (ctrl) {
+      var customUiContainer = UiContainer.getUiContainer(ctrl);
+      return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();
+    };
+    var Movable = {
+      testMoveRel: function (elm, rels) {
+        var viewPortRect = getViewPortRect(this);
+        for (var i = 0; i < rels.length; i++) {
+          var pos = calculateRelativePosition(this, elm, rels[i]);
+          if (isFixed(this)) {
+            if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
+              return rels[i];
+            }
           } else {
-            return null;
+            if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {
+              return rels[i];
+            }
           }
         }
-        return elm.currentStyle[name];
+        return rels[0];
+      },
+      moveRel: function (elm, rel) {
+        if (typeof rel !== 'string') {
+          rel = this.testMoveRel(elm, rel);
+        }
+        var pos = calculateRelativePosition(this, elm, rel);
+        return this.moveTo(pos.x, pos.y);
+      },
+      moveBy: function (dx, dy) {
+        var self$$1 = this, rect = self$$1.layoutRect();
+        self$$1.moveTo(rect.x + dx, rect.y + dy);
+        return self$$1;
+      },
+      moveTo: function (x, y) {
+        var self$$1 = this;
+        function constrain(value, max, size) {
+          if (value < 0) {
+            return 0;
+          }
+          if (value + size > max) {
+            value = max - size;
+            return value < 0 ? 0 : value;
+          }
+          return value;
+        }
+        if (self$$1.settings.constrainToViewport) {
+          var viewPortRect = getViewPortRect(this);
+          var layoutRect = self$$1.layoutRect();
+          x = constrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
+          y = constrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
+        }
+        var uiContainer = UiContainer.getUiContainer(self$$1);
+        if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {
+          x -= uiContainer.scrollLeft;
+          y -= uiContainer.scrollTop;
+        }
+        if (uiContainer) {
+          x += 1;
+          y += 1;
+        }
+        if (self$$1.state.get('rendered')) {
+          self$$1.layoutRect({
+            x: x,
+            y: y
+          }).repaint();
+        } else {
+          self$$1.settings.x = x;
+          self$$1.settings.y = y;
+        }
+        self$$1.fire('move', {
+          x: x,
+          y: y
+        });
+        return self$$1;
       }
-      function getSide(name) {
-        var val = parseFloat(getStyle(name));
-        return isNaN(val) ? 0 : val;
-      }
-      return {
-        top: getSide(prefix + 'TopWidth'),
-        right: getSide(prefix + 'RightWidth'),
-        bottom: getSide(prefix + 'BottomWidth'),
-        left: getSide(prefix + 'LeftWidth')
-      };
-    }
-  };
+    };
 
-  function noop$1() {
-  }
-  function ClassList(onchange) {
-    this.cls = [];
-    this.cls._map = {};
-    this.onchange = onchange || noop$1;
-    this.prefix = '';
-  }
-  global$2.extend(ClassList.prototype, {
-    add: function (cls) {
-      if (cls && !this.contains(cls)) {
-        this.cls._map[cls] = true;
-        this.cls.push(cls);
-        this._change();
-      }
-      return this;
-    },
-    remove: function (cls) {
-      if (this.contains(cls)) {
-        var i = void 0;
-        for (i = 0; i < this.cls.length; i++) {
-          if (this.cls[i] === cls) {
-            break;
+    var global$a = tinymce.util.Tools.resolve('tinymce.util.Class');
+
+    var global$b = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');
+
+    var BoxUtils = {
+      parseBox: function (value) {
+        var len;
+        var radix = 10;
+        if (!value) {
+          return;
+        }
+        if (typeof value === 'number') {
+          value = value || 0;
+          return {
+            top: value,
+            left: value,
+            bottom: value,
+            right: value
+          };
+        }
+        value = value.split(' ');
+        len = value.length;
+        if (len === 1) {
+          value[1] = value[2] = value[3] = value[0];
+        } else if (len === 2) {
+          value[2] = value[0];
+          value[3] = value[1];
+        } else if (len === 3) {
+          value[3] = value[1];
+        }
+        return {
+          top: parseInt(value[0], radix) || 0,
+          right: parseInt(value[1], radix) || 0,
+          bottom: parseInt(value[2], radix) || 0,
+          left: parseInt(value[3], radix) || 0
+        };
+      },
+      measureBox: function (elm, prefix) {
+        function getStyle(name) {
+          var defaultView = elm.ownerDocument.defaultView;
+          if (defaultView) {
+            var computedStyle = defaultView.getComputedStyle(elm, null);
+            if (computedStyle) {
+              name = name.replace(/[A-Z]/g, function (a) {
+                return '-' + a;
+              });
+              return computedStyle.getPropertyValue(name);
+            } else {
+              return null;
+            }
           }
+          return elm.currentStyle[name];
         }
-        this.cls.splice(i, 1);
-        delete this.cls._map[cls];
-        this._change();
-      }
-      return this;
-    },
-    toggle: function (cls, state) {
-      var curState = this.contains(cls);
-      if (curState !== state) {
-        if (curState) {
-          this.remove(cls);
-        } else {
-          this.add(cls);
+        function getSide(name) {
+          var val = parseFloat(getStyle(name));
+          return isNaN(val) ? 0 : val;
         }
-        this._change();
+        return {
+          top: getSide(prefix + 'TopWidth'),
+          right: getSide(prefix + 'RightWidth'),
+          bottom: getSide(prefix + 'BottomWidth'),
+          left: getSide(prefix + 'LeftWidth')
+        };
       }
-      return this;
-    },
-    contains: function (cls) {
-      return !!this.cls._map[cls];
-    },
-    _change: function () {
-      delete this.clsValue;
-      this.onchange.call(this);
-    }
-  });
-  ClassList.prototype.toString = function () {
-    var value;
-    if (this.clsValue) {
-      return this.clsValue;
-    }
-    value = '';
-    for (var i = 0; i < this.cls.length; i++) {
-      if (i > 0) {
-        value += ' ';
-      }
-      value += this.prefix + this.cls[i];
-    }
-    return value;
-  };
+    };
 
-  function unique(array) {
-    var uniqueItems = [];
-    var i = array.length, item;
-    while (i--) {
-      item = array[i];
-      if (!item.__checked) {
-        uniqueItems.push(item);
-        item.__checked = 1;
-      }
+    function noop$1() {
     }
-    i = uniqueItems.length;
-    while (i--) {
-      delete uniqueItems[i].__checked;
+    function ClassList(onchange) {
+      this.cls = [];
+      this.cls._map = {};
+      this.onchange = onchange || noop$1;
+      this.prefix = '';
     }
-    return uniqueItems;
-  }
-  var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
-  var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;
-  var whiteSpace = /^\s*|\s*$/g;
-  var Collection;
-  var Selector = global$10.extend({
-    init: function (selector) {
-      var match = this.match;
-      function compileNameFilter(name) {
-        if (name) {
-          name = name.toLowerCase();
-          return function (item) {
-            return name === '*' || item.type === name;
-          };
+    global$2.extend(ClassList.prototype, {
+      add: function (cls) {
+        if (cls && !this.contains(cls)) {
+          this.cls._map[cls] = true;
+          this.cls.push(cls);
+          this._change();
         }
-      }
-      function compileIdFilter(id) {
-        if (id) {
-          return function (item) {
-            return item._name === id;
-          };
+        return this;
+      },
+      remove: function (cls) {
+        if (this.contains(cls)) {
+          var i = void 0;
+          for (i = 0; i < this.cls.length; i++) {
+            if (this.cls[i] === cls) {
+              break;
+            }
+          }
+          this.cls.splice(i, 1);
+          delete this.cls._map[cls];
+          this._change();
         }
+        return this;
+      },
+      toggle: function (cls, state) {
+        var curState = this.contains(cls);
+        if (curState !== state) {
+          if (curState) {
+            this.remove(cls);
+          } else {
+            this.add(cls);
+          }
+          this._change();
+        }
+        return this;
+      },
+      contains: function (cls) {
+        return !!this.cls._map[cls];
+      },
+      _change: function () {
+        delete this.clsValue;
+        this.onchange.call(this);
       }
-      function compileClassesFilter(classes) {
-        if (classes) {
-          classes = classes.split('.');
-          return function (item) {
-            var i = classes.length;
-            while (i--) {
-              if (!item.classes.contains(classes[i])) {
-                return false;
-              }
-            }
-            return true;
-          };
+    });
+    ClassList.prototype.toString = function () {
+      var value;
+      if (this.clsValue) {
+        return this.clsValue;
+      }
+      value = '';
+      for (var i = 0; i < this.cls.length; i++) {
+        if (i > 0) {
+          value += ' ';
         }
+        value += this.prefix + this.cls[i];
       }
-      function compileAttrFilter(name, cmp, check) {
-        if (name) {
-          return function (item) {
-            var value = item[name] ? item[name]() : '';
-            return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;
-          };
+      return value;
+    };
+
+    function unique(array) {
+      var uniqueItems = [];
+      var i = array.length, item;
+      while (i--) {
+        item = array[i];
+        if (!item.__checked) {
+          uniqueItems.push(item);
+          item.__checked = 1;
         }
       }
-      function compilePsuedoFilter(name) {
-        var notSelectors;
-        if (name) {
-          name = /(?:not\((.+)\))|(.+)/i.exec(name);
-          if (!name[1]) {
-            name = name[2];
-            return function (item, index, length) {
-              return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;
+      i = uniqueItems.length;
+      while (i--) {
+        delete uniqueItems[i].__checked;
+      }
+      return uniqueItems;
+    }
+    var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
+    var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;
+    var whiteSpace = /^\s*|\s*$/g;
+    var Collection;
+    var Selector = global$a.extend({
+      init: function (selector) {
+        var match = this.match;
+        function compileNameFilter(name) {
+          if (name) {
+            name = name.toLowerCase();
+            return function (item) {
+              return name === '*' || item.type === name;
             };
           }
-          notSelectors = parseChunks(name[1], []);
-          return function (item) {
-            return !match(item, notSelectors);
-          };
         }
-      }
-      function compile(selector, filters, direct) {
-        var parts;
-        function add(filter) {
-          if (filter) {
-            filters.push(filter);
+        function compileIdFilter(id) {
+          if (id) {
+            return function (item) {
+              return item._name === id;
+            };
           }
         }
-        parts = expression.exec(selector.replace(whiteSpace, ''));
-        add(compileNameFilter(parts[1]));
-        add(compileIdFilter(parts[2]));
-        add(compileClassesFilter(parts[3]));
-        add(compileAttrFilter(parts[4], parts[5], parts[6]));
-        add(compilePsuedoFilter(parts[7]));
-        filters.pseudo = !!parts[7];
-        filters.direct = direct;
-        return filters;
-      }
-      function parseChunks(selector, selectors) {
-        var parts = [];
-        var extra, matches, i;
-        do {
-          chunker.exec('');
-          matches = chunker.exec(selector);
-          if (matches) {
-            selector = matches[3];
-            parts.push(matches[1]);
-            if (matches[2]) {
-              extra = matches[3];
-              break;
+        function compileClassesFilter(classes) {
+          if (classes) {
+            classes = classes.split('.');
+            return function (item) {
+              var i = classes.length;
+              while (i--) {
+                if (!item.classes.contains(classes[i])) {
+                  return false;
+                }
+              }
+              return true;
+            };
+          }
+        }
+        function compileAttrFilter(name, cmp, check) {
+          if (name) {
+            return function (item) {
+              var value = item[name] ? item[name]() : '';
+              return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;
+            };
+          }
+        }
+        function compilePsuedoFilter(name) {
+          var notSelectors;
+          if (name) {
+            name = /(?:not\((.+)\))|(.+)/i.exec(name);
+            if (!name[1]) {
+              name = name[2];
+              return function (item, index, length) {
+                return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;
+              };
             }
+            notSelectors = parseChunks(name[1], []);
+            return function (item) {
+              return !match(item, notSelectors);
+            };
           }
-        } while (matches);
-        if (extra) {
-          parseChunks(extra, selectors);
         }
-        selector = [];
-        for (i = 0; i < parts.length; i++) {
-          if (parts[i] !== '>') {
-            selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+        function compile(selector, filters, direct) {
+          var parts;
+          function add(filter) {
+            if (filter) {
+              filters.push(filter);
+            }
           }
+          parts = expression.exec(selector.replace(whiteSpace, ''));
+          add(compileNameFilter(parts[1]));
+          add(compileIdFilter(parts[2]));
+          add(compileClassesFilter(parts[3]));
+          add(compileAttrFilter(parts[4], parts[5], parts[6]));
+          add(compilePsuedoFilter(parts[7]));
+          filters.pseudo = !!parts[7];
+          filters.direct = direct;
+          return filters;
         }
-        selectors.push(selector);
-        return selectors;
-      }
-      this._selectors = parseChunks(selector, []);
-    },
-    match: function (control, selectors) {
-      var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
-      selectors = selectors || this._selectors;
-      for (i = 0, l = selectors.length; i < l; i++) {
-        selector = selectors[i];
-        sl = selector.length;
-        item = control;
-        count = 0;
-        for (si = sl - 1; si >= 0; si--) {
-          filters = selector[si];
-          while (item) {
-            if (filters.pseudo) {
-              siblings = item.parent().items();
-              index = length = siblings.length;
-              while (index--) {
-                if (siblings[index] === item) {
+        function parseChunks(selector, selectors) {
+          var parts = [];
+          var extra, matches, i;
+          do {
+            chunker.exec('');
+            matches = chunker.exec(selector);
+            if (matches) {
+              selector = matches[3];
+              parts.push(matches[1]);
+              if (matches[2]) {
+                extra = matches[3];
+                break;
+              }
+            }
+          } while (matches);
+          if (extra) {
+            parseChunks(extra, selectors);
+          }
+          selector = [];
+          for (i = 0; i < parts.length; i++) {
+            if (parts[i] !== '>') {
+              selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+            }
+          }
+          selectors.push(selector);
+          return selectors;
+        }
+        this._selectors = parseChunks(selector, []);
+      },
+      match: function (control, selectors) {
+        var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
+        selectors = selectors || this._selectors;
+        for (i = 0, l = selectors.length; i < l; i++) {
+          selector = selectors[i];
+          sl = selector.length;
+          item = control;
+          count = 0;
+          for (si = sl - 1; si >= 0; si--) {
+            filters = selector[si];
+            while (item) {
+              if (filters.pseudo) {
+                siblings = item.parent().items();
+                index = length = siblings.length;
+                while (index--) {
+                  if (siblings[index] === item) {
+                    break;
+                  }
+                }
+              }
+              for (fi = 0, fl = filters.length; fi < fl; fi++) {
+                if (!filters[fi](item, index, length)) {
+                  fi = fl + 1;
                   break;
                 }
               }
+              if (fi === fl) {
+                count++;
+                break;
+              } else {
+                if (si === sl - 1) {
+                  break;
+                }
+              }
+              item = item.parent();
             }
+          }
+          if (count === sl) {
+            return true;
+          }
+        }
+        return false;
+      },
+      find: function (container) {
+        var matches = [], i, l;
+        var selectors = this._selectors;
+        function collect(items, selector, index) {
+          var i, l, fi, fl, item;
+          var filters = selector[index];
+          for (i = 0, l = items.length; i < l; i++) {
+            item = items[i];
             for (fi = 0, fl = filters.length; fi < fl; fi++) {
-              if (!filters[fi](item, index, length)) {
+              if (!filters[fi](item, i, l)) {
                 fi = fl + 1;
                 break;
               }
             }
             if (fi === fl) {
-              count++;
-              break;
-            } else {
-              if (si === sl - 1) {
-                break;
+              if (index === selector.length - 1) {
+                matches.push(item);
+              } else {
+                if (item.items) {
+                  collect(item.items(), selector, index + 1);
+                }
               }
+            } else if (filters.direct) {
+              return;
             }
-            item = item.parent();
+            if (item.items) {
+              collect(item.items(), selector, index);
+            }
           }
         }
-        if (count === sl) {
-          return true;
-        }
-      }
-      return false;
-    },
-    find: function (container) {
-      var matches = [], i, l;
-      var selectors = this._selectors;
-      function collect(items, selector, index) {
-        var i, l, fi, fl, item;
-        var filters = selector[index];
-        for (i = 0, l = items.length; i < l; i++) {
-          item = items[i];
-          for (fi = 0, fl = filters.length; fi < fl; fi++) {
-            if (!filters[fi](item, i, l)) {
-              fi = fl + 1;
-              break;
-            }
+        if (container.items) {
+          for (i = 0, l = selectors.length; i < l; i++) {
+            collect(container.items(), selectors[i], 0);
           }
-          if (fi === fl) {
-            if (index === selector.length - 1) {
-              matches.push(item);
-            } else {
-              if (item.items) {
-                collect(item.items(), selector, index + 1);
-              }
-            }
-          } else if (filters.direct) {
-            return;
+          if (l > 1) {
+            matches = unique(matches);
           }
-          if (item.items) {
-            collect(item.items(), selector, index);
-          }
         }
-      }
-      if (container.items) {
-        for (i = 0, l = selectors.length; i < l; i++) {
-          collect(container.items(), selectors[i], 0);
+        if (!Collection) {
+          Collection = Selector.Collection;
         }
-        if (l > 1) {
-          matches = unique(matches);
-        }
+        return new Collection(matches);
       }
-      if (!Collection) {
-        Collection = Selector.Collection;
-      }
-      return new Collection(matches);
-    }
-  });
+    });
 
-  var Collection$1;
-  var proto;
-  var push$1 = Array.prototype.push;
-  var slice$1 = Array.prototype.slice;
-  proto = {
-    length: 0,
-    init: function (items) {
-      if (items) {
-        this.add(items);
-      }
-    },
-    add: function (items) {
-      var self = this;
-      if (!global$2.isArray(items)) {
-        if (items instanceof Collection$1) {
-          self.add(items.toArray());
+    var Collection$1, proto;
+    var push$1 = Array.prototype.push, slice$1 = Array.prototype.slice;
+    proto = {
+      length: 0,
+      init: function (items) {
+        if (items) {
+          this.add(items);
+        }
+      },
+      add: function (items) {
+        var self = this;
+        if (!global$2.isArray(items)) {
+          if (items instanceof Collection$1) {
+            self.add(items.toArray());
+          } else {
+            push$1.call(self, items);
+          }
         } else {
-          push$1.call(self, items);
+          push$1.apply(self, items);
         }
-      } else {
-        push$1.apply(self, items);
-      }
-      return self;
-    },
-    set: function (items) {
-      var self = this;
-      var len = self.length;
-      var i;
-      self.length = 0;
-      self.add(items);
-      for (i = self.length; i < len; i++) {
-        delete self[i];
-      }
-      return self;
-    },
-    filter: function (selector) {
-      var self = this;
-      var i, l;
-      var matches = [];
-      var item, match;
-      if (typeof selector === 'string') {
-        selector = new Selector(selector);
-        match = function (item) {
-          return selector.match(item);
-        };
-      } else {
-        match = selector;
-      }
-      for (i = 0, l = self.length; i < l; i++) {
-        item = self[i];
-        if (match(item)) {
-          matches.push(item);
+        return self;
+      },
+      set: function (items) {
+        var self = this;
+        var len = self.length;
+        var i;
+        self.length = 0;
+        self.add(items);
+        for (i = self.length; i < len; i++) {
+          delete self[i];
         }
-      }
-      return new Collection$1(matches);
-    },
-    slice: function () {
-      return new Collection$1(slice$1.apply(this, arguments));
-    },
-    eq: function (index) {
-      return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
-    },
-    each: function (callback) {
-      global$2.each(this, callback);
-      return this;
-    },
-    toArray: function () {
-      return global$2.toArray(this);
-    },
-    indexOf: function (ctrl) {
-      var self = this;
-      var i = self.length;
-      while (i--) {
-        if (self[i] === ctrl) {
-          break;
+        return self;
+      },
+      filter: function (selector) {
+        var self = this;
+        var i, l;
+        var matches = [];
+        var item, match;
+        if (typeof selector === 'string') {
+          selector = new Selector(selector);
+          match = function (item) {
+            return selector.match(item);
+          };
+        } else {
+          match = selector;
         }
-      }
-      return i;
-    },
-    reverse: function () {
-      return new Collection$1(global$2.toArray(this).reverse());
-    },
-    hasClass: function (cls) {
-      return this[0] ? this[0].classes.contains(cls) : false;
-    },
-    prop: function (name, value) {
-      var self = this;
-      var item;
-      if (value !== undefined) {
+        for (i = 0, l = self.length; i < l; i++) {
+          item = self[i];
+          if (match(item)) {
+            matches.push(item);
+          }
+        }
+        return new Collection$1(matches);
+      },
+      slice: function () {
+        return new Collection$1(slice$1.apply(this, arguments));
+      },
+      eq: function (index) {
+        return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+      },
+      each: function (callback) {
+        global$2.each(this, callback);
+        return this;
+      },
+      toArray: function () {
+        return global$2.toArray(this);
+      },
+      indexOf: function (ctrl) {
+        var self = this;
+        var i = self.length;
+        while (i--) {
+          if (self[i] === ctrl) {
+            break;
+          }
+        }
+        return i;
+      },
+      reverse: function () {
+        return new Collection$1(global$2.toArray(this).reverse());
+      },
+      hasClass: function (cls) {
+        return this[0] ? this[0].classes.contains(cls) : false;
+      },
+      prop: function (name, value) {
+        var self = this;
+        var item;
+        if (value !== undefined) {
+          self.each(function (item) {
+            if (item[name]) {
+              item[name](value);
+            }
+          });
+          return self;
+        }
+        item = self[0];
+        if (item && item[name]) {
+          return item[name]();
+        }
+      },
+      exec: function (name) {
+        var self = this, args = global$2.toArray(arguments).slice(1);
         self.each(function (item) {
           if (item[name]) {
-            item[name](value);
+            item[name].apply(item, args);
           }
         });
         return self;
-      }
-      item = self[0];
-      if (item && item[name]) {
-        return item[name]();
-      }
-    },
-    exec: function (name) {
-      var self = this, args = global$2.toArray(arguments).slice(1);
-      self.each(function (item) {
-        if (item[name]) {
-          item[name].apply(item, args);
+      },
+      remove: function () {
+        var i = this.length;
+        while (i--) {
+          this[i].remove();
         }
-      });
-      return self;
-    },
-    remove: function () {
-      var i = this.length;
-      while (i--) {
-        this[i].remove();
+        return this;
+      },
+      addClass: function (cls) {
+        return this.each(function (item) {
+          item.classes.add(cls);
+        });
+      },
+      removeClass: function (cls) {
+        return this.each(function (item) {
+          item.classes.remove(cls);
+        });
       }
-      return this;
-    },
-    addClass: function (cls) {
-      return this.each(function (item) {
-        item.classes.add(cls);
-      });
-    },
-    removeClass: function (cls) {
-      return this.each(function (item) {
-        item.classes.remove(cls);
-      });
-    }
-  };
-  global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {
-    proto[name] = function () {
-      var args = global$2.toArray(arguments);
-      this.each(function (ctrl) {
-        if (name in ctrl) {
-          ctrl[name].apply(ctrl, args);
-        }
-      });
-      return this;
     };
-  });
-  global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {
-    proto[name] = function (value) {
-      return this.prop(name, value);
+    global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {
+      proto[name] = function () {
+        var args = global$2.toArray(arguments);
+        this.each(function (ctrl) {
+          if (name in ctrl) {
+            ctrl[name].apply(ctrl, args);
+          }
+        });
+        return this;
+      };
+    });
+    global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {
+      proto[name] = function (value) {
+        return this.prop(name, value);
+      };
+    });
+    Collection$1 = global$a.extend(proto);
+    Selector.Collection = Collection$1;
+    var Collection$2 = Collection$1;
+
+    var Binding = function (settings) {
+      this.create = settings.create;
     };
-  });
-  Collection$1 = global$10.extend(proto);
-  Selector.Collection = Collection$1;
-  var Collection$2 = Collection$1;
-
-  var Binding = function (settings) {
-    this.create = settings.create;
-  };
-  Binding.create = function (model, name) {
-    return new Binding({
-      create: function (otherModel, otherName) {
-        var bindings;
-        var fromSelfToOther = function (e) {
-          otherModel.set(otherName, e.value);
-        };
-        var fromOtherToSelf = function (e) {
-          model.set(name, e.value);
-        };
-        otherModel.on('change:' + otherName, fromOtherToSelf);
-        model.on('change:' + name, fromSelfToOther);
-        bindings = otherModel._bindings;
-        if (!bindings) {
-          bindings = otherModel._bindings = [];
-          otherModel.on('destroy', function () {
-            var i = bindings.length;
-            while (i--) {
-              bindings[i]();
-            }
+    Binding.create = function (model, name) {
+      return new Binding({
+        create: function (otherModel, otherName) {
+          var bindings;
+          var fromSelfToOther = function (e) {
+            otherModel.set(otherName, e.value);
+          };
+          var fromOtherToSelf = function (e) {
+            model.set(name, e.value);
+          };
+          otherModel.on('change:' + otherName, fromOtherToSelf);
+          model.on('change:' + name, fromSelfToOther);
+          bindings = otherModel._bindings;
+          if (!bindings) {
+            bindings = otherModel._bindings = [];
+            otherModel.on('destroy', function () {
+              var i = bindings.length;
+              while (i--) {
+                bindings[i]();
+              }
+            });
+          }
+          bindings.push(function () {
+            model.off('change:' + name, fromSelfToOther);
           });
+          return model.get(name);
         }
-        bindings.push(function () {
-          model.off('change:' + name, fromSelfToOther);
-        });
-        return model.get(name);
-      }
-    });
-  };
+      });
+    };
 
-  var global$12 = tinymce.util.Tools.resolve('tinymce.util.Observable');
+    var global$c = tinymce.util.Tools.resolve('tinymce.util.Observable');
 
-  function isNode(node) {
-    return node.nodeType > 0;
-  }
-  function isEqual(a, b) {
-    var k, checked;
-    if (a === b) {
-      return true;
+    function isNode(node) {
+      return node.nodeType > 0;
     }
-    if (a === null || b === null) {
-      return a === b;
-    }
-    if (typeof a !== 'object' || typeof b !== 'object') {
-      return a === b;
-    }
-    if (global$2.isArray(b)) {
-      if (a.length !== b.length) {
-        return false;
+    function isEqual(a, b) {
+      var k, checked;
+      if (a === b) {
+        return true;
       }
-      k = a.length;
-      while (k--) {
+      if (a === null || b === null) {
+        return a === b;
+      }
+      if (typeof a !== 'object' || typeof b !== 'object') {
+        return a === b;
+      }
+      if (global$2.isArray(b)) {
+        if (a.length !== b.length) {
+          return false;
+        }
+        k = a.length;
+        while (k--) {
+          if (!isEqual(a[k], b[k])) {
+            return false;
+          }
+        }
+      }
+      if (isNode(a) || isNode(b)) {
+        return a === b;
+      }
+      checked = {};
+      for (k in b) {
         if (!isEqual(a[k], b[k])) {
           return false;
         }
+        checked[k] = true;
       }
-    }
-    if (isNode(a) || isNode(b)) {
-      return a === b;
-    }
-    checked = {};
-    for (k in b) {
-      if (!isEqual(a[k], b[k])) {
-        return false;
+      for (k in a) {
+        if (!checked[k] && !isEqual(a[k], b[k])) {
+          return false;
+        }
       }
-      checked[k] = true;
+      return true;
     }
-    for (k in a) {
-      if (!checked[k] && !isEqual(a[k], b[k])) {
-        return false;
-      }
-    }
-    return true;
-  }
-  var ObservableObject = global$10.extend({
-    Mixins: [global$12],
-    init: function (data) {
-      var name, value;
-      data = data || {};
-      for (name in data) {
-        value = data[name];
+    var ObservableObject = global$a.extend({
+      Mixins: [global$c],
+      init: function (data) {
+        var name, value;
+        data = data || {};
+        for (name in data) {
+          value = data[name];
+          if (value instanceof Binding) {
+            data[name] = value.create(this, name);
+          }
+        }
+        this.data = data;
+      },
+      set: function (name, value) {
+        var key, args;
+        var oldValue = this.data[name];
         if (value instanceof Binding) {
-          data[name] = value.create(this, name);
+          value = value.create(this, name);
         }
-      }
-      this.data = data;
-    },
-    set: function (name, value) {
-      var key, args;
-      var oldValue = this.data[name];
-      if (value instanceof Binding) {
-        value = value.create(this, name);
-      }
-      if (typeof name === 'object') {
-        for (key in name) {
-          this.set(key, name[key]);
+        if (typeof name === 'object') {
+          for (key in name) {
+            this.set(key, name[key]);
+          }
+          return this;
         }
+        if (!isEqual(oldValue, value)) {
+          this.data[name] = value;
+          args = {
+            target: this,
+            name: name,
+            value: value,
+            oldValue: oldValue
+          };
+          this.fire('change:' + name, args);
+          this.fire('change', args);
+        }
         return this;
+      },
+      get: function (name) {
+        return this.data[name];
+      },
+      has: function (name) {
+        return name in this.data;
+      },
+      bind: function (name) {
+        return Binding.create(this, name);
+      },
+      destroy: function () {
+        this.fire('destroy');
       }
-      if (!isEqual(oldValue, value)) {
-        this.data[name] = value;
-        args = {
-          target: this,
-          name: name,
-          value: value,
-          oldValue: oldValue
-        };
-        this.fire('change:' + name, args);
-        this.fire('change', args);
+    });
+
+    var dirtyCtrls = {}, animationFrameRequested;
+    var ReflowQueue = {
+      add: function (ctrl) {
+        var parent$$1 = ctrl.parent();
+        if (parent$$1) {
+          if (!parent$$1._layout || parent$$1._layout.isNative()) {
+            return;
+          }
+          if (!dirtyCtrls[parent$$1._id]) {
+            dirtyCtrls[parent$$1._id] = parent$$1;
+          }
+          if (!animationFrameRequested) {
+            animationFrameRequested = true;
+            global$7.requestAnimationFrame(function () {
+              var id, ctrl;
+              animationFrameRequested = false;
+              for (id in dirtyCtrls) {
+                ctrl = dirtyCtrls[id];
+                if (ctrl.state.get('rendered')) {
+                  ctrl.reflow();
+                }
+              }
+              dirtyCtrls = {};
+            }, document.body);
+          }
+        }
+      },
+      remove: function (ctrl) {
+        if (dirtyCtrls[ctrl._id]) {
+          delete dirtyCtrls[ctrl._id];
+        }
       }
-      return this;
-    },
-    get: function (name) {
-      return this.data[name];
-    },
-    has: function (name) {
-      return name in this.data;
-    },
-    bind: function (name) {
-      return Binding.create(this, name);
-    },
-    destroy: function () {
-      this.fire('destroy');
-    }
-  });
+    };
 
-  var dirtyCtrls = {};
-  var animationFrameRequested;
-  var $_p42hyuxjjgwefrk = {
-    add: function (ctrl) {
-      var parent$$1 = ctrl.parent();
-      if (parent$$1) {
-        if (!parent$$1._layout || parent$$1._layout.isNative()) {
-          return;
+    var hasMouseWheelEventSupport = 'onmousewheel' in document;
+    var hasWheelEventSupport = false;
+    var classPrefix = 'mce-';
+    var Control, idCounter = 0;
+    var proto$1 = {
+      Statics: { classPrefix: classPrefix },
+      isRtl: function () {
+        return Control.rtl;
+      },
+      classPrefix: classPrefix,
+      init: function (settings) {
+        var self$$1 = this;
+        var classes, defaultClasses;
+        function applyClasses(classes) {
+          var i;
+          classes = classes.split(' ');
+          for (i = 0; i < classes.length; i++) {
+            self$$1.classes.add(classes[i]);
+          }
         }
-        if (!dirtyCtrls[parent$$1._id]) {
-          dirtyCtrls[parent$$1._id] = parent$$1;
+        self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);
+        self$$1._id = settings.id || 'mceu_' + idCounter++;
+        self$$1._aria = { role: settings.role };
+        self$$1._elmCache = {};
+        self$$1.$ = global$9;
+        self$$1.state = new ObservableObject({
+          visible: true,
+          active: false,
+          disabled: false,
+          value: ''
+        });
+        self$$1.data = new ObservableObject(settings.data);
+        self$$1.classes = new ClassList(function () {
+          if (self$$1.state.get('rendered')) {
+            self$$1.getEl().className = this.toString();
+          }
+        });
+        self$$1.classes.prefix = self$$1.classPrefix;
+        classes = settings.classes;
+        if (classes) {
+          if (self$$1.Defaults) {
+            defaultClasses = self$$1.Defaults.classes;
+            if (defaultClasses && classes !== defaultClasses) {
+              applyClasses(defaultClasses);
+            }
+          }
+          applyClasses(classes);
         }
-        if (!animationFrameRequested) {
-          animationFrameRequested = true;
-          global$7.requestAnimationFrame(function () {
-            var id, ctrl;
-            animationFrameRequested = false;
-            for (id in dirtyCtrls) {
-              ctrl = dirtyCtrls[id];
-              if (ctrl.state.get('rendered')) {
-                ctrl.reflow();
+        global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {
+          if (name$$1 in settings) {
+            self$$1[name$$1](settings[name$$1]);
+          }
+        });
+        self$$1.on('click', function () {
+          if (self$$1.disabled()) {
+            return false;
+          }
+        });
+        self$$1.settings = settings;
+        self$$1.borderBox = BoxUtils.parseBox(settings.border);
+        self$$1.paddingBox = BoxUtils.parseBox(settings.padding);
+        self$$1.marginBox = BoxUtils.parseBox(settings.margin);
+        if (settings.hidden) {
+          self$$1.hide();
+        }
+      },
+      Properties: 'parent,name',
+      getContainerElm: function () {
+        var uiContainer = UiContainer.getUiContainer(this);
+        return uiContainer ? uiContainer : funcs.getContainer();
+      },
+      getParentCtrl: function (elm) {
+        var ctrl;
+        var lookup = this.getRoot().controlIdLookup;
+        while (elm && lookup) {
+          ctrl = lookup[elm.id];
+          if (ctrl) {
+            break;
+          }
+          elm = elm.parentNode;
+        }
+        return ctrl;
+      },
+      initLayoutRect: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var borderBox, layoutRect;
+        var elm = self$$1.getEl();
+        var width, height, minWidth, minHeight, autoResize;
+        var startMinWidth, startMinHeight, initialSize;
+        borderBox = self$$1.borderBox = self$$1.borderBox || BoxUtils.measureBox(elm, 'border');
+        self$$1.paddingBox = self$$1.paddingBox || BoxUtils.measureBox(elm, 'padding');
+        self$$1.marginBox = self$$1.marginBox || BoxUtils.measureBox(elm, 'margin');
+        initialSize = funcs.getSize(elm);
+        startMinWidth = settings.minWidth;
+        startMinHeight = settings.minHeight;
+        minWidth = startMinWidth || initialSize.width;
+        minHeight = startMinHeight || initialSize.height;
+        width = settings.width;
+        height = settings.height;
+        autoResize = settings.autoResize;
+        autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;
+        width = width || minWidth;
+        height = height || minHeight;
+        var deltaW = borderBox.left + borderBox.right;
+        var deltaH = borderBox.top + borderBox.bottom;
+        var maxW = settings.maxWidth || 65535;
+        var maxH = settings.maxHeight || 65535;
+        self$$1._layoutRect = layoutRect = {
+          x: settings.x || 0,
+          y: settings.y || 0,
+          w: width,
+          h: height,
+          deltaW: deltaW,
+          deltaH: deltaH,
+          contentW: width - deltaW,
+          contentH: height - deltaH,
+          innerW: width - deltaW,
+          innerH: height - deltaH,
+          startMinWidth: startMinWidth || 0,
+          startMinHeight: startMinHeight || 0,
+          minW: Math.min(minWidth, maxW),
+          minH: Math.min(minHeight, maxH),
+          maxW: maxW,
+          maxH: maxH,
+          autoResize: autoResize,
+          scrollW: 0
+        };
+        self$$1._lastLayoutRect = {};
+        return layoutRect;
+      },
+      layoutRect: function (newRect) {
+        var self$$1 = this;
+        var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
+        if (!curRect) {
+          curRect = self$$1.initLayoutRect();
+        }
+        if (newRect) {
+          deltaWidth = curRect.deltaW;
+          deltaHeight = curRect.deltaH;
+          if (newRect.x !== undefined) {
+            curRect.x = newRect.x;
+          }
+          if (newRect.y !== undefined) {
+            curRect.y = newRect.y;
+          }
+          if (newRect.minW !== undefined) {
+            curRect.minW = newRect.minW;
+          }
+          if (newRect.minH !== undefined) {
+            curRect.minH = newRect.minH;
+          }
+          size = newRect.w;
+          if (size !== undefined) {
+            size = size < curRect.minW ? curRect.minW : size;
+            size = size > curRect.maxW ? curRect.maxW : size;
+            curRect.w = size;
+            curRect.innerW = size - deltaWidth;
+          }
+          size = newRect.h;
+          if (size !== undefined) {
+            size = size < curRect.minH ? curRect.minH : size;
+            size = size > curRect.maxH ? curRect.maxH : size;
+            curRect.h = size;
+            curRect.innerH = size - deltaHeight;
+          }
+          size = newRect.innerW;
+          if (size !== undefined) {
+            size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
+            size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
+            curRect.innerW = size;
+            curRect.w = size + deltaWidth;
+          }
+          size = newRect.innerH;
+          if (size !== undefined) {
+            size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
+            size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
+            curRect.innerH = size;
+            curRect.h = size + deltaHeight;
+          }
+          if (newRect.contentW !== undefined) {
+            curRect.contentW = newRect.contentW;
+          }
+          if (newRect.contentH !== undefined) {
+            curRect.contentH = newRect.contentH;
+          }
+          lastLayoutRect = self$$1._lastLayoutRect;
+          if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
+            repaintControls = Control.repaintControls;
+            if (repaintControls) {
+              if (repaintControls.map && !repaintControls.map[self$$1._id]) {
+                repaintControls.push(self$$1);
+                repaintControls.map[self$$1._id] = true;
               }
             }
-            dirtyCtrls = {};
-          }, document.body);
+            lastLayoutRect.x = curRect.x;
+            lastLayoutRect.y = curRect.y;
+            lastLayoutRect.w = curRect.w;
+            lastLayoutRect.h = curRect.h;
+          }
+          return self$$1;
         }
-      }
-    },
-    remove: function (ctrl) {
-      if (dirtyCtrls[ctrl._id]) {
-        delete dirtyCtrls[ctrl._id];
-      }
-    }
-  };
-
-  var hasMouseWheelEventSupport = 'onmousewheel' in document;
-  var hasWheelEventSupport = false;
-  var classPrefix = 'mce-';
-  var Control;
-  var idCounter = 0;
-  var proto$1 = {
-    Statics: { classPrefix: classPrefix },
-    isRtl: function () {
-      return Control.rtl;
-    },
-    classPrefix: classPrefix,
-    init: function (settings) {
-      var self$$1 = this;
-      var classes, defaultClasses;
-      function applyClasses(classes) {
-        var i;
-        classes = classes.split(' ');
-        for (i = 0; i < classes.length; i++) {
-          self$$1.classes.add(classes[i]);
+        return curRect;
+      },
+      repaint: function () {
+        var self$$1 = this;
+        var style, bodyStyle, bodyElm, rect, borderBox;
+        var borderW, borderH, lastRepaintRect, round, value;
+        round = !document.createRange ? Math.round : function (value) {
+          return value;
+        };
+        style = self$$1.getEl().style;
+        rect = self$$1._layoutRect;
+        lastRepaintRect = self$$1._lastRepaintRect || {};
+        borderBox = self$$1.borderBox;
+        borderW = borderBox.left + borderBox.right;
+        borderH = borderBox.top + borderBox.bottom;
+        if (rect.x !== lastRepaintRect.x) {
+          style.left = round(rect.x) + 'px';
+          lastRepaintRect.x = rect.x;
         }
-      }
-      self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);
-      self$$1._id = settings.id || 'mceu_' + idCounter++;
-      self$$1._aria = { role: settings.role };
-      self$$1._elmCache = {};
-      self$$1.$ = global$9;
-      self$$1.state = new ObservableObject({
-        visible: true,
-        active: false,
-        disabled: false,
-        value: ''
-      });
-      self$$1.data = new ObservableObject(settings.data);
-      self$$1.classes = new ClassList(function () {
-        if (self$$1.state.get('rendered')) {
-          self$$1.getEl().className = this.toString();
+        if (rect.y !== lastRepaintRect.y) {
+          style.top = round(rect.y) + 'px';
+          lastRepaintRect.y = rect.y;
         }
-      });
-      self$$1.classes.prefix = self$$1.classPrefix;
-      classes = settings.classes;
-      if (classes) {
-        if (self$$1.Defaults) {
-          defaultClasses = self$$1.Defaults.classes;
-          if (defaultClasses && classes !== defaultClasses) {
-            applyClasses(defaultClasses);
+        if (rect.w !== lastRepaintRect.w) {
+          value = round(rect.w - borderW);
+          style.width = (value >= 0 ? value : 0) + 'px';
+          lastRepaintRect.w = rect.w;
+        }
+        if (rect.h !== lastRepaintRect.h) {
+          value = round(rect.h - borderH);
+          style.height = (value >= 0 ? value : 0) + 'px';
+          lastRepaintRect.h = rect.h;
+        }
+        if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {
+          value = round(rect.innerW);
+          bodyElm = self$$1.getEl('body');
+          if (bodyElm) {
+            bodyStyle = bodyElm.style;
+            bodyStyle.width = (value >= 0 ? value : 0) + 'px';
           }
+          lastRepaintRect.innerW = rect.innerW;
         }
-        applyClasses(classes);
-      }
-      global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {
-        if (name$$1 in settings) {
-          self$$1[name$$1](settings[name$$1]);
+        if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {
+          value = round(rect.innerH);
+          bodyElm = bodyElm || self$$1.getEl('body');
+          if (bodyElm) {
+            bodyStyle = bodyStyle || bodyElm.style;
+            bodyStyle.height = (value >= 0 ? value : 0) + 'px';
+          }
+          lastRepaintRect.innerH = rect.innerH;
         }
-      });
-      self$$1.on('click', function () {
-        if (self$$1.disabled()) {
-          return false;
+        self$$1._lastRepaintRect = lastRepaintRect;
+        self$$1.fire('repaint', {}, false);
+      },
+      updateLayoutRect: function () {
+        var self$$1 = this;
+        self$$1.parent()._lastRect = null;
+        funcs.css(self$$1.getEl(), {
+          width: '',
+          height: ''
+        });
+        self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;
+        self$$1.initLayoutRect();
+      },
+      on: function (name$$1, callback) {
+        var self$$1 = this;
+        function resolveCallbackName(name$$1) {
+          var callback, scope;
+          if (typeof name$$1 !== 'string') {
+            return name$$1;
+          }
+          return function (e) {
+            if (!callback) {
+              self$$1.parentsAndSelf().each(function (ctrl) {
+                var callbacks = ctrl.settings.callbacks;
+                if (callbacks && (callback = callbacks[name$$1])) {
+                  scope = ctrl;
+                  return false;
+                }
+              });
+            }
+            if (!callback) {
+              e.action = name$$1;
+              this.fire('execute', e);
+              return;
+            }
+            return callback.call(scope, e);
+          };
         }
-      });
-      self$$1.settings = settings;
-      self$$1.borderBox = $_fbr241uqjjgwefqo.parseBox(settings.border);
-      self$$1.paddingBox = $_fbr241uqjjgwefqo.parseBox(settings.padding);
-      self$$1.marginBox = $_fbr241uqjjgwefqo.parseBox(settings.margin);
-      if (settings.hidden) {
-        self$$1.hide();
-      }
-    },
-    Properties: 'parent,name',
-    getContainerElm: function () {
-      var uiContainer = $_6344qfu4jjgwefnr.getUiContainer(this);
-      return uiContainer ? uiContainer : funcs.getContainer();
-    },
-    getParentCtrl: function (elm) {
-      var ctrl;
-      var lookup = this.getRoot().controlIdLookup;
-      while (elm && lookup) {
-        ctrl = lookup[elm.id];
-        if (ctrl) {
-          break;
+        getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));
+        return self$$1;
+      },
+      off: function (name$$1, callback) {
+        getEventDispatcher(this).off(name$$1, callback);
+        return this;
+      },
+      fire: function (name$$1, args, bubble) {
+        var self$$1 = this;
+        args = args || {};
+        if (!args.control) {
+          args.control = self$$1;
         }
-        elm = elm.parentNode;
-      }
-      return ctrl;
-    },
-    initLayoutRect: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var borderBox, layoutRect;
-      var elm = self$$1.getEl();
-      var width, height, minWidth, minHeight, autoResize;
-      var startMinWidth, startMinHeight, initialSize;
-      borderBox = self$$1.borderBox = self$$1.borderBox || $_fbr241uqjjgwefqo.measureBox(elm, 'border');
-      self$$1.paddingBox = self$$1.paddingBox || $_fbr241uqjjgwefqo.measureBox(elm, 'padding');
-      self$$1.marginBox = self$$1.marginBox || $_fbr241uqjjgwefqo.measureBox(elm, 'margin');
-      initialSize = funcs.getSize(elm);
-      startMinWidth = settings.minWidth;
-      startMinHeight = settings.minHeight;
-      minWidth = startMinWidth || initialSize.width;
-      minHeight = startMinHeight || initialSize.height;
-      width = settings.width;
-      height = settings.height;
-      autoResize = settings.autoResize;
-      autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;
-      width = width || minWidth;
-      height = height || minHeight;
-      var deltaW = borderBox.left + borderBox.right;
-      var deltaH = borderBox.top + borderBox.bottom;
-      var maxW = settings.maxWidth || 65535;
-      var maxH = settings.maxHeight || 65535;
-      self$$1._layoutRect = layoutRect = {
-        x: settings.x || 0,
-        y: settings.y || 0,
-        w: width,
-        h: height,
-        deltaW: deltaW,
-        deltaH: deltaH,
-        contentW: width - deltaW,
-        contentH: height - deltaH,
-        innerW: width - deltaW,
-        innerH: height - deltaH,
-        startMinWidth: startMinWidth || 0,
-        startMinHeight: startMinHeight || 0,
-        minW: Math.min(minWidth, maxW),
-        minH: Math.min(minHeight, maxH),
-        maxW: maxW,
-        maxH: maxH,
-        autoResize: autoResize,
-        scrollW: 0
-      };
-      self$$1._lastLayoutRect = {};
-      return layoutRect;
-    },
-    layoutRect: function (newRect) {
-      var self$$1 = this;
-      var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;
-      if (!curRect) {
-        curRect = self$$1.initLayoutRect();
-      }
-      if (newRect) {
-        deltaWidth = curRect.deltaW;
-        deltaHeight = curRect.deltaH;
-        if (newRect.x !== undefined) {
-          curRect.x = newRect.x;
+        args = getEventDispatcher(self$$1).fire(name$$1, args);
+        if (bubble !== false && self$$1.parent) {
+          var parent$$1 = self$$1.parent();
+          while (parent$$1 && !args.isPropagationStopped()) {
+            parent$$1.fire(name$$1, args, false);
+            parent$$1 = parent$$1.parent();
+          }
         }
-        if (newRect.y !== undefined) {
-          curRect.y = newRect.y;
+        return args;
+      },
+      hasEventListeners: function (name$$1) {
+        return getEventDispatcher(this).has(name$$1);
+      },
+      parents: function (selector) {
+        var self$$1 = this;
+        var ctrl, parents = new Collection$2();
+        for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {
+          parents.add(ctrl);
         }
-        if (newRect.minW !== undefined) {
-          curRect.minW = newRect.minW;
+        if (selector) {
+          parents = parents.filter(selector);
         }
-        if (newRect.minH !== undefined) {
-          curRect.minH = newRect.minH;
+        return parents;
+      },
+      parentsAndSelf: function (selector) {
+        return new Collection$2(this).add(this.parents(selector));
+      },
+      next: function () {
+        var parentControls = this.parent().items();
+        return parentControls[parentControls.indexOf(this) + 1];
+      },
+      prev: function () {
+        var parentControls = this.parent().items();
+        return parentControls[parentControls.indexOf(this) - 1];
+      },
+      innerHtml: function (html) {
+        this.$el.html(html);
+        return this;
+      },
+      getEl: function (suffix) {
+        var id = suffix ? this._id + '-' + suffix : this._id;
+        if (!this._elmCache[id]) {
+          this._elmCache[id] = global$9('#' + id)[0];
         }
-        size = newRect.w;
-        if (size !== undefined) {
-          size = size < curRect.minW ? curRect.minW : size;
-          size = size > curRect.maxW ? curRect.maxW : size;
-          curRect.w = size;
-          curRect.innerW = size - deltaWidth;
+        return this._elmCache[id];
+      },
+      show: function () {
+        return this.visible(true);
+      },
+      hide: function () {
+        return this.visible(false);
+      },
+      focus: function () {
+        try {
+          this.getEl().focus();
+        } catch (ex) {
         }
-        size = newRect.h;
-        if (size !== undefined) {
-          size = size < curRect.minH ? curRect.minH : size;
-          size = size > curRect.maxH ? curRect.maxH : size;
-          curRect.h = size;
-          curRect.innerH = size - deltaHeight;
+        return this;
+      },
+      blur: function () {
+        this.getEl().blur();
+        return this;
+      },
+      aria: function (name$$1, value) {
+        var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);
+        if (typeof value === 'undefined') {
+          return self$$1._aria[name$$1];
         }
-        size = newRect.innerW;
-        if (size !== undefined) {
-          size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
-          size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
-          curRect.innerW = size;
-          curRect.w = size + deltaWidth;
+        self$$1._aria[name$$1] = value;
+        if (self$$1.state.get('rendered')) {
+          elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);
         }
-        size = newRect.innerH;
-        if (size !== undefined) {
-          size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
-          size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
-          curRect.innerH = size;
-          curRect.h = size + deltaHeight;
+        return self$$1;
+      },
+      encode: function (text, translate) {
+        if (translate !== false) {
+          text = this.translate(text);
         }
-        if (newRect.contentW !== undefined) {
-          curRect.contentW = newRect.contentW;
+        return (text || '').replace(/[&<>"]/g, function (match) {
+          return '&#' + match.charCodeAt(0) + ';';
+        });
+      },
+      translate: function (text) {
+        return Control.translate ? Control.translate(text) : text;
+      },
+      before: function (items) {
+        var self$$1 = this, parent$$1 = self$$1.parent();
+        if (parent$$1) {
+          parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);
         }
-        if (newRect.contentH !== undefined) {
-          curRect.contentH = newRect.contentH;
+        return self$$1;
+      },
+      after: function (items) {
+        var self$$1 = this, parent$$1 = self$$1.parent();
+        if (parent$$1) {
+          parent$$1.insert(items, parent$$1.items().indexOf(self$$1));
         }
-        lastLayoutRect = self$$1._lastLayoutRect;
-        if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
-          repaintControls = Control.repaintControls;
-          if (repaintControls) {
-            if (repaintControls.map && !repaintControls.map[self$$1._id]) {
-              repaintControls.push(self$$1);
-              repaintControls.map[self$$1._id] = true;
-            }
+        return self$$1;
+      },
+      remove: function () {
+        var self$$1 = this;
+        var elm = self$$1.getEl();
+        var parent$$1 = self$$1.parent();
+        var newItems, i;
+        if (self$$1.items) {
+          var controls = self$$1.items().toArray();
+          i = controls.length;
+          while (i--) {
+            controls[i].remove();
           }
-          lastLayoutRect.x = curRect.x;
-          lastLayoutRect.y = curRect.y;
-          lastLayoutRect.w = curRect.w;
-          lastLayoutRect.h = curRect.h;
         }
-        return self$$1;
-      }
-      return curRect;
-    },
-    repaint: function () {
-      var self$$1 = this;
-      var style, bodyStyle, bodyElm, rect, borderBox;
-      var borderW, borderH, lastRepaintRect, round, value;
-      round = !document.createRange ? Math.round : function (value) {
-        return value;
-      };
-      style = self$$1.getEl().style;
-      rect = self$$1._layoutRect;
-      lastRepaintRect = self$$1._lastRepaintRect || {};
-      borderBox = self$$1.borderBox;
-      borderW = borderBox.left + borderBox.right;
-      borderH = borderBox.top + borderBox.bottom;
-      if (rect.x !== lastRepaintRect.x) {
-        style.left = round(rect.x) + 'px';
-        lastRepaintRect.x = rect.x;
-      }
-      if (rect.y !== lastRepaintRect.y) {
-        style.top = round(rect.y) + 'px';
-        lastRepaintRect.y = rect.y;
-      }
-      if (rect.w !== lastRepaintRect.w) {
-        value = round(rect.w - borderW);
-        style.width = (value >= 0 ? value : 0) + 'px';
-        lastRepaintRect.w = rect.w;
-      }
-      if (rect.h !== lastRepaintRect.h) {
-        value = round(rect.h - borderH);
-        style.height = (value >= 0 ? value : 0) + 'px';
-        lastRepaintRect.h = rect.h;
-      }
-      if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {
-        value = round(rect.innerW);
-        bodyElm = self$$1.getEl('body');
-        if (bodyElm) {
-          bodyStyle = bodyElm.style;
-          bodyStyle.width = (value >= 0 ? value : 0) + 'px';
+        if (parent$$1 && parent$$1.items) {
+          newItems = [];
+          parent$$1.items().each(function (item) {
+            if (item !== self$$1) {
+              newItems.push(item);
+            }
+          });
+          parent$$1.items().set(newItems);
+          parent$$1._lastRect = null;
         }
-        lastRepaintRect.innerW = rect.innerW;
-      }
-      if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {
-        value = round(rect.innerH);
-        bodyElm = bodyElm || self$$1.getEl('body');
-        if (bodyElm) {
-          bodyStyle = bodyStyle || bodyElm.style;
-          bodyStyle.height = (value >= 0 ? value : 0) + 'px';
+        if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {
+          global$9(elm).off();
         }
-        lastRepaintRect.innerH = rect.innerH;
-      }
-      self$$1._lastRepaintRect = lastRepaintRect;
-      self$$1.fire('repaint', {}, false);
-    },
-    updateLayoutRect: function () {
-      var self$$1 = this;
-      self$$1.parent()._lastRect = null;
-      funcs.css(self$$1.getEl(), {
-        width: '',
-        height: ''
-      });
-      self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;
-      self$$1.initLayoutRect();
-    },
-    on: function (name$$1, callback) {
-      var self$$1 = this;
-      function resolveCallbackName(name$$1) {
-        var callback, scope;
-        if (typeof name$$1 !== 'string') {
-          return name$$1;
+        var lookup = self$$1.getRoot().controlIdLookup;
+        if (lookup) {
+          delete lookup[self$$1._id];
         }
-        return function (e) {
-          if (!callback) {
-            self$$1.parentsAndSelf().each(function (ctrl) {
-              var callbacks = ctrl.settings.callbacks;
-              if (callbacks && (callback = callbacks[name$$1])) {
-                scope = ctrl;
-                return false;
-              }
-            });
+        if (elm && elm.parentNode) {
+          elm.parentNode.removeChild(elm);
+        }
+        self$$1.state.set('rendered', false);
+        self$$1.state.destroy();
+        self$$1.fire('remove');
+        return self$$1;
+      },
+      renderBefore: function (elm) {
+        global$9(elm).before(this.renderHtml());
+        this.postRender();
+        return this;
+      },
+      renderTo: function (elm) {
+        global$9(elm || this.getContainerElm()).append(this.renderHtml());
+        this.postRender();
+        return this;
+      },
+      preRender: function () {
+      },
+      render: function () {
+      },
+      renderHtml: function () {
+        return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
+      },
+      postRender: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var elm, box, parent$$1, name$$1, parentEventsRoot;
+        self$$1.$el = global$9(self$$1.getEl());
+        self$$1.state.set('rendered', true);
+        for (name$$1 in settings) {
+          if (name$$1.indexOf('on') === 0) {
+            self$$1.on(name$$1.substr(2), settings[name$$1]);
           }
-          if (!callback) {
-            e.action = name$$1;
-            this.fire('execute', e);
-            return;
+        }
+        if (self$$1._eventsRoot) {
+          for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {
+            parentEventsRoot = parent$$1._eventsRoot;
           }
-          return callback.call(scope, e);
-        };
-      }
-      getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));
-      return self$$1;
-    },
-    off: function (name$$1, callback) {
-      getEventDispatcher(this).off(name$$1, callback);
-      return this;
-    },
-    fire: function (name$$1, args, bubble) {
-      var self$$1 = this;
-      args = args || {};
-      if (!args.control) {
-        args.control = self$$1;
-      }
-      args = getEventDispatcher(self$$1).fire(name$$1, args);
-      if (bubble !== false && self$$1.parent) {
-        var parent$$1 = self$$1.parent();
-        while (parent$$1 && !args.isPropagationStopped()) {
-          parent$$1.fire(name$$1, args, false);
-          parent$$1 = parent$$1.parent();
+          if (parentEventsRoot) {
+            for (name$$1 in parentEventsRoot._nativeEvents) {
+              self$$1._nativeEvents[name$$1] = true;
+            }
+          }
         }
-      }
-      return args;
-    },
-    hasEventListeners: function (name$$1) {
-      return getEventDispatcher(this).has(name$$1);
-    },
-    parents: function (selector) {
-      var self$$1 = this;
-      var ctrl, parents = new Collection$2();
-      for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {
-        parents.add(ctrl);
-      }
-      if (selector) {
-        parents = parents.filter(selector);
-      }
-      return parents;
-    },
-    parentsAndSelf: function (selector) {
-      return new Collection$2(this).add(this.parents(selector));
-    },
-    next: function () {
-      var parentControls = this.parent().items();
-      return parentControls[parentControls.indexOf(this) + 1];
-    },
-    prev: function () {
-      var parentControls = this.parent().items();
-      return parentControls[parentControls.indexOf(this) - 1];
-    },
-    innerHtml: function (html) {
-      this.$el.html(html);
-      return this;
-    },
-    getEl: function (suffix) {
-      var id = suffix ? this._id + '-' + suffix : this._id;
-      if (!this._elmCache[id]) {
-        this._elmCache[id] = global$9('#' + id)[0];
-      }
-      return this._elmCache[id];
-    },
-    show: function () {
-      return this.visible(true);
-    },
-    hide: function () {
-      return this.visible(false);
-    },
-    focus: function () {
-      try {
-        this.getEl().focus();
-      } catch (ex) {
-      }
-      return this;
-    },
-    blur: function () {
-      this.getEl().blur();
-      return this;
-    },
-    aria: function (name$$1, value) {
-      var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);
-      if (typeof value === 'undefined') {
-        return self$$1._aria[name$$1];
-      }
-      self$$1._aria[name$$1] = value;
-      if (self$$1.state.get('rendered')) {
-        elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);
-      }
-      return self$$1;
-    },
-    encode: function (text, translate) {
-      if (translate !== false) {
-        text = this.translate(text);
-      }
-      return (text || '').replace(/[&<>"]/g, function (match) {
-        return '&#' + match.charCodeAt(0) + ';';
-      });
-    },
-    translate: function (text) {
-      return Control.translate ? Control.translate(text) : text;
-    },
-    before: function (items) {
-      var self$$1 = this, parent$$1 = self$$1.parent();
-      if (parent$$1) {
-        parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);
-      }
-      return self$$1;
-    },
-    after: function (items) {
-      var self$$1 = this, parent$$1 = self$$1.parent();
-      if (parent$$1) {
-        parent$$1.insert(items, parent$$1.items().indexOf(self$$1));
-      }
-      return self$$1;
-    },
-    remove: function () {
-      var self$$1 = this;
-      var elm = self$$1.getEl();
-      var parent$$1 = self$$1.parent();
-      var newItems, i;
-      if (self$$1.items) {
-        var controls = self$$1.items().toArray();
-        i = controls.length;
-        while (i--) {
-          controls[i].remove();
+        bindPendingEvents(self$$1);
+        if (settings.style) {
+          elm = self$$1.getEl();
+          if (elm) {
+            elm.setAttribute('style', settings.style);
+            elm.style.cssText = settings.style;
+          }
         }
-      }
-      if (parent$$1 && parent$$1.items) {
-        newItems = [];
-        parent$$1.items().each(function (item) {
-          if (item !== self$$1) {
-            newItems.push(item);
+        if (self$$1.settings.border) {
+          box = self$$1.borderBox;
+          self$$1.$el.css({
+            'border-top-width': box.top,
+            'border-right-width': box.right,
+            'border-bottom-width': box.bottom,
+            'border-left-width': box.left
+          });
+        }
+        var root = self$$1.getRoot();
+        if (!root.controlIdLookup) {
+          root.controlIdLookup = {};
+        }
+        root.controlIdLookup[self$$1._id] = self$$1;
+        for (var key in self$$1._aria) {
+          self$$1.aria(key, self$$1._aria[key]);
+        }
+        if (self$$1.state.get('visible') === false) {
+          self$$1.getEl().style.display = 'none';
+        }
+        self$$1.bindStates();
+        self$$1.state.on('change:visible', function (e) {
+          var state = e.value;
+          var parentCtrl;
+          if (self$$1.state.get('rendered')) {
+            self$$1.getEl().style.display = state === false ? 'none' : '';
+            self$$1.getEl().getBoundingClientRect();
           }
+          parentCtrl = self$$1.parent();
+          if (parentCtrl) {
+            parentCtrl._lastRect = null;
+          }
+          self$$1.fire(state ? 'show' : 'hide');
+          ReflowQueue.add(self$$1);
         });
-        parent$$1.items().set(newItems);
-        parent$$1._lastRect = null;
-      }
-      if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {
-        global$9(elm).off();
-      }
-      var lookup = self$$1.getRoot().controlIdLookup;
-      if (lookup) {
-        delete lookup[self$$1._id];
-      }
-      if (elm && elm.parentNode) {
-        elm.parentNode.removeChild(elm);
-      }
-      self$$1.state.set('rendered', false);
-      self$$1.state.destroy();
-      self$$1.fire('remove');
-      return self$$1;
-    },
-    renderBefore: function (elm) {
-      global$9(elm).before(this.renderHtml());
-      this.postRender();
-      return this;
-    },
-    renderTo: function (elm) {
-      global$9(elm || this.getContainerElm()).append(this.renderHtml());
-      this.postRender();
-      return this;
-    },
-    preRender: function () {
-    },
-    render: function () {
-    },
-    renderHtml: function () {
-      return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
-    },
-    postRender: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var elm, box, parent$$1, name$$1, parentEventsRoot;
-      self$$1.$el = global$9(self$$1.getEl());
-      self$$1.state.set('rendered', true);
-      for (name$$1 in settings) {
-        if (name$$1.indexOf('on') === 0) {
-          self$$1.on(name$$1.substr(2), settings[name$$1]);
+        self$$1.fire('postrender', {}, false);
+      },
+      bindStates: function () {
+      },
+      scrollIntoView: function (align) {
+        function getOffset(elm, rootElm) {
+          var x, y, parent$$1 = elm;
+          x = y = 0;
+          while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {
+            x += parent$$1.offsetLeft || 0;
+            y += parent$$1.offsetTop || 0;
+            parent$$1 = parent$$1.offsetParent;
+          }
+          return {
+            x: x,
+            y: y
+          };
         }
-      }
-      if (self$$1._eventsRoot) {
-        for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {
-          parentEventsRoot = parent$$1._eventsRoot;
+        var elm = this.getEl(), parentElm = elm.parentNode;
+        var x, y, width, height, parentWidth, parentHeight;
+        var pos = getOffset(elm, parentElm);
+        x = pos.x;
+        y = pos.y;
+        width = elm.offsetWidth;
+        height = elm.offsetHeight;
+        parentWidth = parentElm.clientWidth;
+        parentHeight = parentElm.clientHeight;
+        if (align === 'end') {
+          x -= parentWidth - width;
+          y -= parentHeight - height;
+        } else if (align === 'center') {
+          x -= parentWidth / 2 - width / 2;
+          y -= parentHeight / 2 - height / 2;
         }
-        if (parentEventsRoot) {
-          for (name$$1 in parentEventsRoot._nativeEvents) {
-            self$$1._nativeEvents[name$$1] = true;
+        parentElm.scrollLeft = x;
+        parentElm.scrollTop = y;
+        return this;
+      },
+      getRoot: function () {
+        var ctrl = this, rootControl;
+        var parents = [];
+        while (ctrl) {
+          if (ctrl.rootControl) {
+            rootControl = ctrl.rootControl;
+            break;
           }
+          parents.push(ctrl);
+          rootControl = ctrl;
+          ctrl = ctrl.parent();
         }
-      }
-      bindPendingEvents(self$$1);
-      if (settings.style) {
-        elm = self$$1.getEl();
-        if (elm) {
-          elm.setAttribute('style', settings.style);
-          elm.style.cssText = settings.style;
+        if (!rootControl) {
+          rootControl = this;
         }
-      }
-      if (self$$1.settings.border) {
-        box = self$$1.borderBox;
-        self$$1.$el.css({
-          'border-top-width': box.top,
-          'border-right-width': box.right,
-          'border-bottom-width': box.bottom,
-          'border-left-width': box.left
-        });
-      }
-      var root = self$$1.getRoot();
-      if (!root.controlIdLookup) {
-        root.controlIdLookup = {};
-      }
-      root.controlIdLookup[self$$1._id] = self$$1;
-      for (var key in self$$1._aria) {
-        self$$1.aria(key, self$$1._aria[key]);
-      }
-      if (self$$1.state.get('visible') === false) {
-        self$$1.getEl().style.display = 'none';
-      }
-      self$$1.bindStates();
-      self$$1.state.on('change:visible', function (e) {
-        var state = e.value;
-        var parentCtrl;
-        if (self$$1.state.get('rendered')) {
-          self$$1.getEl().style.display = state === false ? 'none' : '';
-          self$$1.getEl().getBoundingClientRect();
+        var i = parents.length;
+        while (i--) {
+          parents[i].rootControl = rootControl;
         }
-        parentCtrl = self$$1.parent();
-        if (parentCtrl) {
-          parentCtrl._lastRect = null;
+        return rootControl;
+      },
+      reflow: function () {
+        ReflowQueue.remove(this);
+        var parent$$1 = this.parent();
+        if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {
+          parent$$1.reflow();
         }
-        self$$1.fire(state ? 'show' : 'hide');
-        $_p42hyuxjjgwefrk.add(self$$1);
-      });
-      self$$1.fire('postrender', {}, false);
-    },
-    bindStates: function () {
-    },
-    scrollIntoView: function (align) {
-      function getOffset(elm, rootElm) {
-        var x, y, parent$$1 = elm;
-        x = y = 0;
-        while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {
-          x += parent$$1.offsetLeft || 0;
-          y += parent$$1.offsetTop || 0;
-          parent$$1 = parent$$1.offsetParent;
-        }
-        return {
-          x: x,
-          y: y
-        };
+        return this;
       }
-      var elm = this.getEl(), parentElm = elm.parentNode;
-      var x, y, width, height, parentWidth, parentHeight;
-      var pos = getOffset(elm, parentElm);
-      x = pos.x;
-      y = pos.y;
-      width = elm.offsetWidth;
-      height = elm.offsetHeight;
-      parentWidth = parentElm.clientWidth;
-      parentHeight = parentElm.clientHeight;
-      if (align === 'end') {
-        x -= parentWidth - width;
-        y -= parentHeight - height;
-      } else if (align === 'center') {
-        x -= parentWidth / 2 - width / 2;
-        y -= parentHeight / 2 - height / 2;
-      }
-      parentElm.scrollLeft = x;
-      parentElm.scrollTop = y;
-      return this;
-    },
-    getRoot: function () {
-      var ctrl = this, rootControl;
-      var parents = [];
-      while (ctrl) {
-        if (ctrl.rootControl) {
-          rootControl = ctrl.rootControl;
-          break;
+    };
+    global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {
+      proto$1[name$$1] = function (value) {
+        if (arguments.length === 0) {
+          return this.state.get(name$$1);
         }
-        parents.push(ctrl);
-        rootControl = ctrl;
-        ctrl = ctrl.parent();
+        if (typeof value !== 'undefined') {
+          this.state.set(name$$1, value);
+        }
+        return this;
+      };
+    });
+    Control = global$a.extend(proto$1);
+    function getEventDispatcher(obj) {
+      if (!obj._eventDispatcher) {
+        obj._eventDispatcher = new global$b({
+          scope: obj,
+          toggleEvent: function (name$$1, state) {
+            if (state && global$b.isNative(name$$1)) {
+              if (!obj._nativeEvents) {
+                obj._nativeEvents = {};
+              }
+              obj._nativeEvents[name$$1] = true;
+              if (obj.state.get('rendered')) {
+                bindPendingEvents(obj);
+              }
+            }
+          }
+        });
       }
-      if (!rootControl) {
-        rootControl = this;
-      }
-      var i = parents.length;
-      while (i--) {
-        parents[i].rootControl = rootControl;
-      }
-      return rootControl;
-    },
-    reflow: function () {
-      $_p42hyuxjjgwefrk.remove(this);
-      var parent$$1 = this.parent();
-      if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {
-        parent$$1.reflow();
-      }
-      return this;
+      return obj._eventDispatcher;
     }
-  };
-  global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {
-    proto$1[name$$1] = function (value) {
-      if (arguments.length === 0) {
-        return this.state.get(name$$1);
+    function bindPendingEvents(eventCtrl) {
+      var i, l, parents, eventRootCtrl, nativeEvents, name$$1;
+      function delegate(e) {
+        var control = eventCtrl.getParentCtrl(e.target);
+        if (control) {
+          control.fire(e.type, e);
+        }
       }
-      if (typeof value !== 'undefined') {
-        this.state.set(name$$1, value);
+      function mouseLeaveHandler() {
+        var ctrl = eventRootCtrl._lastHoverCtrl;
+        if (ctrl) {
+          ctrl.fire('mouseleave', { target: ctrl.getEl() });
+          ctrl.parents().each(function (ctrl) {
+            ctrl.fire('mouseleave', { target: ctrl.getEl() });
+          });
+          eventRootCtrl._lastHoverCtrl = null;
+        }
       }
-      return this;
-    };
-  });
-  Control = global$10.extend(proto$1);
-  function getEventDispatcher(obj) {
-    if (!obj._eventDispatcher) {
-      obj._eventDispatcher = new global$11({
-        scope: obj,
-        toggleEvent: function (name$$1, state) {
-          if (state && global$11.isNative(name$$1)) {
-            if (!obj._nativeEvents) {
-              obj._nativeEvents = {};
+      function mouseEnterHandler(e) {
+        var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
+        if (ctrl !== lastCtrl) {
+          eventRootCtrl._lastHoverCtrl = ctrl;
+          parents = ctrl.parents().toArray().reverse();
+          parents.push(ctrl);
+          if (lastCtrl) {
+            lastParents = lastCtrl.parents().toArray().reverse();
+            lastParents.push(lastCtrl);
+            for (idx = 0; idx < lastParents.length; idx++) {
+              if (parents[idx] !== lastParents[idx]) {
+                break;
+              }
             }
-            obj._nativeEvents[name$$1] = true;
-            if (obj.state.get('rendered')) {
-              bindPendingEvents(obj);
+            for (i = lastParents.length - 1; i >= idx; i--) {
+              lastCtrl = lastParents[i];
+              lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });
             }
           }
+          for (i = idx; i < parents.length; i++) {
+            ctrl = parents[i];
+            ctrl.fire('mouseenter', { target: ctrl.getEl() });
+          }
         }
-      });
-    }
-    return obj._eventDispatcher;
-  }
-  function bindPendingEvents(eventCtrl) {
-    var i, l, parents, eventRootCtrl, nativeEvents, name$$1;
-    function delegate(e) {
-      var control = eventCtrl.getParentCtrl(e.target);
-      if (control) {
-        control.fire(e.type, e);
       }
-    }
-    function mouseLeaveHandler() {
-      var ctrl = eventRootCtrl._lastHoverCtrl;
-      if (ctrl) {
-        ctrl.fire('mouseleave', { target: ctrl.getEl() });
-        ctrl.parents().each(function (ctrl) {
-          ctrl.fire('mouseleave', { target: ctrl.getEl() });
-        });
-        eventRootCtrl._lastHoverCtrl = null;
+      function fixWheelEvent(e) {
+        e.preventDefault();
+        if (e.type === 'mousewheel') {
+          e.deltaY = -1 / 40 * e.wheelDelta;
+          if (e.wheelDeltaX) {
+            e.deltaX = -1 / 40 * e.wheelDeltaX;
+          }
+        } else {
+          e.deltaX = 0;
+          e.deltaY = e.detail;
+        }
+        e = eventCtrl.fire('wheel', e);
       }
-    }
-    function mouseEnterHandler(e) {
-      var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
-      if (ctrl !== lastCtrl) {
-        eventRootCtrl._lastHoverCtrl = ctrl;
-        parents = ctrl.parents().toArray().reverse();
-        parents.push(ctrl);
-        if (lastCtrl) {
-          lastParents = lastCtrl.parents().toArray().reverse();
-          lastParents.push(lastCtrl);
-          for (idx = 0; idx < lastParents.length; idx++) {
-            if (parents[idx] !== lastParents[idx]) {
-              break;
+      nativeEvents = eventCtrl._nativeEvents;
+      if (nativeEvents) {
+        parents = eventCtrl.parents().toArray();
+        parents.unshift(eventCtrl);
+        for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
+          eventRootCtrl = parents[i]._eventsRoot;
+        }
+        if (!eventRootCtrl) {
+          eventRootCtrl = parents[parents.length - 1] || eventCtrl;
+        }
+        eventCtrl._eventsRoot = eventRootCtrl;
+        for (l = i, i = 0; i < l; i++) {
+          parents[i]._eventsRoot = eventRootCtrl;
+        }
+        var eventRootDelegates = eventRootCtrl._delegates;
+        if (!eventRootDelegates) {
+          eventRootDelegates = eventRootCtrl._delegates = {};
+        }
+        for (name$$1 in nativeEvents) {
+          if (!nativeEvents) {
+            return false;
+          }
+          if (name$$1 === 'wheel' && !hasWheelEventSupport) {
+            if (hasMouseWheelEventSupport) {
+              global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);
+            } else {
+              global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);
             }
+            continue;
           }
-          for (i = lastParents.length - 1; i >= idx; i--) {
-            lastCtrl = lastParents[i];
-            lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });
+          if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {
+            if (!eventRootCtrl._hasMouseEnter) {
+              global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);
+              eventRootCtrl._hasMouseEnter = 1;
+            }
+          } else if (!eventRootDelegates[name$$1]) {
+            global$9(eventRootCtrl.getEl()).on(name$$1, delegate);
+            eventRootDelegates[name$$1] = true;
           }
+          nativeEvents[name$$1] = false;
         }
-        for (i = idx; i < parents.length; i++) {
-          ctrl = parents[i];
-          ctrl.fire('mouseenter', { target: ctrl.getEl() });
-        }
       }
     }
-    function fixWheelEvent(e) {
-      e.preventDefault();
-      if (e.type === 'mousewheel') {
-        e.deltaY = -1 / 40 * e.wheelDelta;
-        if (e.wheelDeltaX) {
-          e.deltaX = -1 / 40 * e.wheelDeltaX;
+    var Control$1 = Control;
+
+    var hasTabstopData = function (elm) {
+      return elm.getAttribute('data-mce-tabstop') ? true : false;
+    };
+    function KeyboardNavigation (settings) {
+      var root = settings.root;
+      var focusedElement, focusedControl;
+      function isElement(node) {
+        return node && node.nodeType === 1;
+      }
+      try {
+        focusedElement = document.activeElement;
+      } catch (ex) {
+        focusedElement = document.body;
+      }
+      focusedControl = root.getParentCtrl(focusedElement);
+      function getRole(elm) {
+        elm = elm || focusedElement;
+        if (isElement(elm)) {
+          return elm.getAttribute('role');
         }
-      } else {
-        e.deltaX = 0;
-        e.deltaY = e.detail;
+        return null;
       }
-      e = eventCtrl.fire('wheel', e);
-    }
-    nativeEvents = eventCtrl._nativeEvents;
-    if (nativeEvents) {
-      parents = eventCtrl.parents().toArray();
-      parents.unshift(eventCtrl);
-      for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
-        eventRootCtrl = parents[i]._eventsRoot;
+      function getParentRole(elm) {
+        var role, parent$$1 = elm || focusedElement;
+        while (parent$$1 = parent$$1.parentNode) {
+          if (role = getRole(parent$$1)) {
+            return role;
+          }
+        }
       }
-      if (!eventRootCtrl) {
-        eventRootCtrl = parents[parents.length - 1] || eventCtrl;
+      function getAriaProp(name$$1) {
+        var elm = focusedElement;
+        if (isElement(elm)) {
+          return elm.getAttribute('aria-' + name$$1);
+        }
       }
-      eventCtrl._eventsRoot = eventRootCtrl;
-      for (l = i, i = 0; i < l; i++) {
-        parents[i]._eventsRoot = eventRootCtrl;
+      function isTextInputElement(elm) {
+        var tagName = elm.tagName.toUpperCase();
+        return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';
       }
-      var eventRootDelegates = eventRootCtrl._delegates;
-      if (!eventRootDelegates) {
-        eventRootDelegates = eventRootCtrl._delegates = {};
+      function canFocus(elm) {
+        if (isTextInputElement(elm) && !elm.hidden) {
+          return true;
+        }
+        if (hasTabstopData(elm)) {
+          return true;
+        }
+        if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {
+          return true;
+        }
+        return false;
       }
-      for (name$$1 in nativeEvents) {
-        if (!nativeEvents) {
-          return false;
-        }
-        if (name$$1 === 'wheel' && !hasWheelEventSupport) {
-          if (hasMouseWheelEventSupport) {
-            global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);
-          } else {
-            global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);
+      function getFocusElements(elm) {
+        var elements = [];
+        function collect(elm) {
+          if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {
+            return;
           }
-          continue;
+          if (canFocus(elm)) {
+            elements.push(elm);
+          }
+          for (var i = 0; i < elm.childNodes.length; i++) {
+            collect(elm.childNodes[i]);
+          }
         }
-        if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {
-          if (!eventRootCtrl._hasMouseEnter) {
-            global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);
-            eventRootCtrl._hasMouseEnter = 1;
+        collect(elm || root.getEl());
+        return elements;
+      }
+      function getNavigationRoot(targetControl) {
+        var navigationRoot, controls;
+        targetControl = targetControl || focusedControl;
+        controls = targetControl.parents().toArray();
+        controls.unshift(targetControl);
+        for (var i = 0; i < controls.length; i++) {
+          navigationRoot = controls[i];
+          if (navigationRoot.settings.ariaRoot) {
+            break;
           }
-        } else if (!eventRootDelegates[name$$1]) {
-          global$9(eventRootCtrl.getEl()).on(name$$1, delegate);
-          eventRootDelegates[name$$1] = true;
         }
-        nativeEvents[name$$1] = false;
+        return navigationRoot;
       }
-    }
-  }
-  var Control$1 = Control;
-
-  var hasTabstopData = function (elm) {
-    return elm.getAttribute('data-mce-tabstop') ? true : false;
-  };
-  function KeyboardNavigation (settings) {
-    var root = settings.root;
-    var focusedElement, focusedControl;
-    function isElement(node) {
-      return node && node.nodeType === 1;
-    }
-    try {
-      focusedElement = document.activeElement;
-    } catch (ex) {
-      focusedElement = document.body;
-    }
-    focusedControl = root.getParentCtrl(focusedElement);
-    function getRole(elm) {
-      elm = elm || focusedElement;
-      if (isElement(elm)) {
-        return elm.getAttribute('role');
-      }
-      return null;
-    }
-    function getParentRole(elm) {
-      var role, parent$$1 = elm || focusedElement;
-      while (parent$$1 = parent$$1.parentNode) {
-        if (role = getRole(parent$$1)) {
-          return role;
+      function focusFirst(targetControl) {
+        var navigationRoot = getNavigationRoot(targetControl);
+        var focusElements = getFocusElements(navigationRoot.getEl());
+        if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {
+          moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
+        } else {
+          moveFocusToIndex(0, focusElements);
         }
       }
-    }
-    function getAriaProp(name$$1) {
-      var elm = focusedElement;
-      if (isElement(elm)) {
-        return elm.getAttribute('aria-' + name$$1);
-      }
-    }
-    function isTextInputElement(elm) {
-      var tagName = elm.tagName.toUpperCase();
-      return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';
-    }
-    function canFocus(elm) {
-      if (isTextInputElement(elm) && !elm.hidden) {
-        return true;
-      }
-      if (hasTabstopData(elm)) {
-        return true;
-      }
-      if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {
-        return true;
-      }
-      return false;
-    }
-    function getFocusElements(elm) {
-      var elements = [];
-      function collect(elm) {
-        if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {
-          return;
+      function moveFocusToIndex(idx, elements) {
+        if (idx < 0) {
+          idx = elements.length - 1;
+        } else if (idx >= elements.length) {
+          idx = 0;
         }
-        if (canFocus(elm)) {
-          elements.push(elm);
+        if (elements[idx]) {
+          elements[idx].focus();
         }
-        for (var i = 0; i < elm.childNodes.length; i++) {
-          collect(elm.childNodes[i]);
+        return idx;
+      }
+      function moveFocus(dir, elements) {
+        var idx = -1;
+        var navigationRoot = getNavigationRoot();
+        elements = elements || getFocusElements(navigationRoot.getEl());
+        for (var i = 0; i < elements.length; i++) {
+          if (elements[i] === focusedElement) {
+            idx = i;
+          }
         }
+        idx += dir;
+        navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
       }
-      collect(elm || root.getEl());
-      return elements;
-    }
-    function getNavigationRoot(targetControl) {
-      var navigationRoot, controls;
-      targetControl = targetControl || focusedControl;
-      controls = targetControl.parents().toArray();
-      controls.unshift(targetControl);
-      for (var i = 0; i < controls.length; i++) {
-        navigationRoot = controls[i];
-        if (navigationRoot.settings.ariaRoot) {
-          break;
+      function left() {
+        var parentRole = getParentRole();
+        if (parentRole === 'tablist') {
+          moveFocus(-1, getFocusElements(focusedElement.parentNode));
+        } else if (focusedControl.parent().submenu) {
+          cancel();
+        } else {
+          moveFocus(-1);
         }
       }
-      return navigationRoot;
-    }
-    function focusFirst(targetControl) {
-      var navigationRoot = getNavigationRoot(targetControl);
-      var focusElements = getFocusElements(navigationRoot.getEl());
-      if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {
-        moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
-      } else {
-        moveFocusToIndex(0, focusElements);
+      function right() {
+        var role = getRole(), parentRole = getParentRole();
+        if (parentRole === 'tablist') {
+          moveFocus(1, getFocusElements(focusedElement.parentNode));
+        } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {
+          enter();
+        } else {
+          moveFocus(1);
+        }
       }
-    }
-    function moveFocusToIndex(idx, elements) {
-      if (idx < 0) {
-        idx = elements.length - 1;
-      } else if (idx >= elements.length) {
-        idx = 0;
+      function up() {
+        moveFocus(-1);
       }
-      if (elements[idx]) {
-        elements[idx].focus();
+      function down() {
+        var role = getRole(), parentRole = getParentRole();
+        if (role === 'menuitem' && parentRole === 'menubar') {
+          enter();
+        } else if (role === 'button' && getAriaProp('haspopup')) {
+          enter({ key: 'down' });
+        } else {
+          moveFocus(1);
+        }
       }
-      return idx;
-    }
-    function moveFocus(dir, elements) {
-      var idx = -1;
-      var navigationRoot = getNavigationRoot();
-      elements = elements || getFocusElements(navigationRoot.getEl());
-      for (var i = 0; i < elements.length; i++) {
-        if (elements[i] === focusedElement) {
-          idx = i;
+      function tab(e) {
+        var parentRole = getParentRole();
+        if (parentRole === 'tablist') {
+          var elm = getFocusElements(focusedControl.getEl('body'))[0];
+          if (elm) {
+            elm.focus();
+          }
+        } else {
+          moveFocus(e.shiftKey ? -1 : 1);
         }
       }
-      idx += dir;
-      navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
-    }
-    function left() {
-      var parentRole = getParentRole();
-      if (parentRole === 'tablist') {
-        moveFocus(-1, getFocusElements(focusedElement.parentNode));
-      } else if (focusedControl.parent().submenu) {
-        cancel();
-      } else {
-        moveFocus(-1);
+      function cancel() {
+        focusedControl.fire('cancel');
       }
-    }
-    function right() {
-      var role = getRole(), parentRole = getParentRole();
-      if (parentRole === 'tablist') {
-        moveFocus(1, getFocusElements(focusedElement.parentNode));
-      } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {
-        enter();
-      } else {
-        moveFocus(1);
+      function enter(aria) {
+        aria = aria || {};
+        focusedControl.fire('click', {
+          target: focusedElement,
+          aria: aria
+        });
       }
-    }
-    function up() {
-      moveFocus(-1);
-    }
-    function down() {
-      var role = getRole(), parentRole = getParentRole();
-      if (role === 'menuitem' && parentRole === 'menubar') {
-        enter();
-      } else if (role === 'button' && getAriaProp('haspopup')) {
-        enter({ key: 'down' });
-      } else {
-        moveFocus(1);
-      }
-    }
-    function tab(e) {
-      var parentRole = getParentRole();
-      if (parentRole === 'tablist') {
-        var elm = getFocusElements(focusedControl.getEl('body'))[0];
-        if (elm) {
-          elm.focus();
+      root.on('keydown', function (e) {
+        function handleNonTabOrEscEvent(e, handler) {
+          if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {
+            return;
+          }
+          if (getRole(focusedElement) === 'slider') {
+            return;
+          }
+          if (handler(e) !== false) {
+            e.preventDefault();
+          }
         }
-      } else {
-        moveFocus(e.shiftKey ? -1 : 1);
-      }
-    }
-    function cancel() {
-      focusedControl.fire('cancel');
-    }
-    function enter(aria) {
-      aria = aria || {};
-      focusedControl.fire('click', {
-        target: focusedElement,
-        aria: aria
-      });
-    }
-    root.on('keydown', function (e) {
-      function handleNonTabOrEscEvent(e, handler) {
-        if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {
+        if (e.isDefaultPrevented()) {
           return;
         }
-        if (getRole(focusedElement) === 'slider') {
-          return;
-        }
-        if (handler(e) !== false) {
+        switch (e.keyCode) {
+        case 37:
+          handleNonTabOrEscEvent(e, left);
+          break;
+        case 39:
+          handleNonTabOrEscEvent(e, right);
+          break;
+        case 38:
+          handleNonTabOrEscEvent(e, up);
+          break;
+        case 40:
+          handleNonTabOrEscEvent(e, down);
+          break;
+        case 27:
+          cancel();
+          break;
+        case 14:
+        case 13:
+        case 32:
+          handleNonTabOrEscEvent(e, enter);
+          break;
+        case 9:
+          tab(e);
           e.preventDefault();
+          break;
         }
-      }
-      if (e.isDefaultPrevented()) {
-        return;
-      }
-      switch (e.keyCode) {
-      case 37:
-        handleNonTabOrEscEvent(e, left);
-        break;
-      case 39:
-        handleNonTabOrEscEvent(e, right);
-        break;
-      case 38:
-        handleNonTabOrEscEvent(e, up);
-        break;
-      case 40:
-        handleNonTabOrEscEvent(e, down);
-        break;
-      case 27:
-        cancel();
-        break;
-      case 14:
-      case 13:
-      case 32:
-        handleNonTabOrEscEvent(e, enter);
-        break;
-      case 9:
-        tab(e);
-        e.preventDefault();
-        break;
-      }
-    });
-    root.on('focusin', function (e) {
-      focusedElement = e.target;
-      focusedControl = e.control;
-    });
-    return { focusFirst: focusFirst };
-  }
+      });
+      root.on('focusin', function (e) {
+        focusedElement = e.target;
+        focusedControl = e.control;
+      });
+      return { focusFirst: focusFirst };
+    }
 
-  var selectorCache = {};
-  var Container = Control$1.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      settings = self.settings;
-      if (settings.fixed) {
-        self.state.set('fixed', true);
-      }
-      self._items = new Collection$2();
-      if (self.isRtl()) {
-        self.classes.add('rtl');
-      }
-      self.bodyClasses = new ClassList(function () {
-        if (self.state.get('rendered')) {
-          self.getEl('body').className = this.toString();
+    var selectorCache = {};
+    var Container = Control$1.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        settings = self.settings;
+        if (settings.fixed) {
+          self.state.set('fixed', true);
         }
-      });
-      self.bodyClasses.prefix = self.classPrefix;
-      self.classes.add('container');
-      self.bodyClasses.add('container-body');
-      if (settings.containerCls) {
-        self.classes.add(settings.containerCls);
-      }
-      self._layout = global$4.create((settings.layout || '') + 'layout');
-      if (self.settings.items) {
-        self.add(self.settings.items);
-      } else {
-        self.add(self.render());
-      }
-      self._hasBody = true;
-    },
-    items: function () {
-      return this._items;
-    },
-    find: function (selector) {
-      selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
-      return selector.find(this);
-    },
-    add: function (items) {
-      var self = this;
-      self.items().add(self.create(items)).parent(self);
-      return self;
-    },
-    focus: function (keyboard) {
-      var self = this;
-      var focusCtrl, keyboardNav, items;
-      if (keyboard) {
-        keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
-        if (keyboardNav) {
-          keyboardNav.focusFirst(self);
-          return;
+        self._items = new Collection$2();
+        if (self.isRtl()) {
+          self.classes.add('rtl');
         }
-      }
-      items = self.find('*');
-      if (self.statusbar) {
-        items.add(self.statusbar.items());
-      }
-      items.each(function (ctrl) {
-        if (ctrl.settings.autofocus) {
-          focusCtrl = null;
-          return false;
+        self.bodyClasses = new ClassList(function () {
+          if (self.state.get('rendered')) {
+            self.getEl('body').className = this.toString();
+          }
+        });
+        self.bodyClasses.prefix = self.classPrefix;
+        self.classes.add('container');
+        self.bodyClasses.add('container-body');
+        if (settings.containerCls) {
+          self.classes.add(settings.containerCls);
         }
-        if (ctrl.canFocus) {
-          focusCtrl = focusCtrl || ctrl;
+        self._layout = global$4.create((settings.layout || '') + 'layout');
+        if (self.settings.items) {
+          self.add(self.settings.items);
+        } else {
+          self.add(self.render());
         }
-      });
-      if (focusCtrl) {
-        focusCtrl.focus();
-      }
-      return self;
-    },
-    replace: function (oldItem, newItem) {
-      var ctrlElm;
-      var items = this.items();
-      var i = items.length;
-      while (i--) {
-        if (items[i] === oldItem) {
-          items[i] = newItem;
-          break;
+        self._hasBody = true;
+      },
+      items: function () {
+        return this._items;
+      },
+      find: function (selector) {
+        selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
+        return selector.find(this);
+      },
+      add: function (items) {
+        var self = this;
+        self.items().add(self.create(items)).parent(self);
+        return self;
+      },
+      focus: function (keyboard) {
+        var self = this;
+        var focusCtrl, keyboardNav, items;
+        if (keyboard) {
+          keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
+          if (keyboardNav) {
+            keyboardNav.focusFirst(self);
+            return;
+          }
         }
-      }
-      if (i >= 0) {
-        ctrlElm = newItem.getEl();
-        if (ctrlElm) {
-          ctrlElm.parentNode.removeChild(ctrlElm);
+        items = self.find('*');
+        if (self.statusbar) {
+          items.add(self.statusbar.items());
         }
-        ctrlElm = oldItem.getEl();
-        if (ctrlElm) {
-          ctrlElm.parentNode.removeChild(ctrlElm);
+        items.each(function (ctrl) {
+          if (ctrl.settings.autofocus) {
+            focusCtrl = null;
+            return false;
+          }
+          if (ctrl.canFocus) {
+            focusCtrl = focusCtrl || ctrl;
+          }
+        });
+        if (focusCtrl) {
+          focusCtrl.focus();
         }
-      }
-      newItem.parent(this);
-    },
-    create: function (items) {
-      var self = this;
-      var settings;
-      var ctrlItems = [];
-      if (!global$2.isArray(items)) {
-        items = [items];
-      }
-      global$2.each(items, function (item) {
-        if (item) {
-          if (!(item instanceof Control$1)) {
-            if (typeof item === 'string') {
-              item = { type: item };
+        return self;
+      },
+      replace: function (oldItem, newItem) {
+        var ctrlElm;
+        var items = this.items();
+        var i = items.length;
+        while (i--) {
+          if (items[i] === oldItem) {
+            items[i] = newItem;
+            break;
+          }
+        }
+        if (i >= 0) {
+          ctrlElm = newItem.getEl();
+          if (ctrlElm) {
+            ctrlElm.parentNode.removeChild(ctrlElm);
+          }
+          ctrlElm = oldItem.getEl();
+          if (ctrlElm) {
+            ctrlElm.parentNode.removeChild(ctrlElm);
+          }
+        }
+        newItem.parent(this);
+      },
+      create: function (items) {
+        var self = this;
+        var settings;
+        var ctrlItems = [];
+        if (!global$2.isArray(items)) {
+          items = [items];
+        }
+        global$2.each(items, function (item) {
+          if (item) {
+            if (!(item instanceof Control$1)) {
+              if (typeof item === 'string') {
+                item = { type: item };
+              }
+              settings = global$2.extend({}, self.settings.defaults, item);
+              item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);
+              item = global$4.create(settings);
             }
-            settings = global$2.extend({}, self.settings.defaults, item);
-            item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);
-            item = global$4.create(settings);
+            ctrlItems.push(item);
           }
-          ctrlItems.push(item);
+        });
+        return ctrlItems;
+      },
+      renderNew: function () {
+        var self = this;
+        self.items().each(function (ctrl, index) {
+          var containerElm;
+          ctrl.parent(self);
+          if (!ctrl.state.get('rendered')) {
+            containerElm = self.getEl('body');
+            if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
+              global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());
+            } else {
+              global$9(containerElm).append(ctrl.renderHtml());
+            }
+            ctrl.postRender();
+            ReflowQueue.add(ctrl);
+          }
+        });
+        self._layout.applyClasses(self.items().filter(':visible'));
+        self._lastRect = null;
+        return self;
+      },
+      append: function (items) {
+        return this.add(items).renderNew();
+      },
+      prepend: function (items) {
+        var self = this;
+        self.items().set(self.create(items).concat(self.items().toArray()));
+        return self.renderNew();
+      },
+      insert: function (items, index, before) {
+        var self = this;
+        var curItems, beforeItems, afterItems;
+        items = self.create(items);
+        curItems = self.items();
+        if (!before && index < curItems.length - 1) {
+          index += 1;
         }
-      });
-      return ctrlItems;
-    },
-    renderNew: function () {
-      var self = this;
-      self.items().each(function (ctrl, index) {
-        var containerElm;
-        ctrl.parent(self);
-        if (!ctrl.state.get('rendered')) {
-          containerElm = self.getEl('body');
-          if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
-            global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());
-          } else {
-            global$9(containerElm).append(ctrl.renderHtml());
+        if (index >= 0 && index < curItems.length) {
+          beforeItems = curItems.slice(0, index).toArray();
+          afterItems = curItems.slice(index).toArray();
+          curItems.set(beforeItems.concat(items, afterItems));
+        }
+        return self.renderNew();
+      },
+      fromJSON: function (data) {
+        var self = this;
+        for (var name in data) {
+          self.find('#' + name).value(data[name]);
+        }
+        return self;
+      },
+      toJSON: function () {
+        var self = this, data = {};
+        self.find('*').each(function (ctrl) {
+          var name = ctrl.name(), value = ctrl.value();
+          if (name && typeof value !== 'undefined') {
+            data[name] = value;
           }
-          ctrl.postRender();
-          $_p42hyuxjjgwefrk.add(ctrl);
+        });
+        return data;
+      },
+      renderHtml: function () {
+        var self = this, layout = self._layout, role = this.settings.role;
+        self.preRender();
+        layout.preRender(self);
+        return '<div id="' + self._id + '" class="' + self.classes + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        var box;
+        self.items().exec('postRender');
+        self._super();
+        self._layout.postRender(self);
+        self.state.set('rendered', true);
+        if (self.settings.style) {
+          self.$el.css(self.settings.style);
         }
-      });
-      self._layout.applyClasses(self.items().filter(':visible'));
-      self._lastRect = null;
-      return self;
-    },
-    append: function (items) {
-      return this.add(items).renderNew();
-    },
-    prepend: function (items) {
-      var self = this;
-      self.items().set(self.create(items).concat(self.items().toArray()));
-      return self.renderNew();
-    },
-    insert: function (items, index, before) {
-      var self = this;
-      var curItems, beforeItems, afterItems;
-      items = self.create(items);
-      curItems = self.items();
-      if (!before && index < curItems.length - 1) {
-        index += 1;
-      }
-      if (index >= 0 && index < curItems.length) {
-        beforeItems = curItems.slice(0, index).toArray();
-        afterItems = curItems.slice(index).toArray();
-        curItems.set(beforeItems.concat(items, afterItems));
-      }
-      return self.renderNew();
-    },
-    fromJSON: function (data) {
-      var self = this;
-      for (var name in data) {
-        self.find('#' + name).value(data[name]);
-      }
-      return self;
-    },
-    toJSON: function () {
-      var self = this, data = {};
-      self.find('*').each(function (ctrl) {
-        var name = ctrl.name(), value = ctrl.value();
-        if (name && typeof value !== 'undefined') {
-          data[name] = value;
+        if (self.settings.border) {
+          box = self.borderBox;
+          self.$el.css({
+            'border-top-width': box.top,
+            'border-right-width': box.right,
+            'border-bottom-width': box.bottom,
+            'border-left-width': box.left
+          });
         }
-      });
-      return data;
-    },
-    renderHtml: function () {
-      var self = this, layout = self._layout, role = this.settings.role;
-      self.preRender();
-      layout.preRender(self);
-      return '<div id="' + self._id + '" class="' + self.classes + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      var box;
-      self.items().exec('postRender');
-      self._super();
-      self._layout.postRender(self);
-      self.state.set('rendered', true);
-      if (self.settings.style) {
-        self.$el.css(self.settings.style);
-      }
-      if (self.settings.border) {
-        box = self.borderBox;
-        self.$el.css({
-          'border-top-width': box.top,
-          'border-right-width': box.right,
-          'border-bottom-width': box.bottom,
-          'border-left-width': box.left
-        });
-      }
-      if (!self.parent()) {
-        self.keyboardNav = KeyboardNavigation({ root: self });
-      }
-      return self;
-    },
-    initLayoutRect: function () {
-      var self = this, layoutRect = self._super();
-      self._layout.recalc(self);
-      return layoutRect;
-    },
-    recalc: function () {
-      var self = this;
-      var rect = self._layoutRect;
-      var lastRect = self._lastRect;
-      if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {
+        if (!self.parent()) {
+          self.keyboardNav = KeyboardNavigation({ root: self });
+        }
+        return self;
+      },
+      initLayoutRect: function () {
+        var self = this, layoutRect = self._super();
         self._layout.recalc(self);
-        rect = self.layoutRect();
-        self._lastRect = {
-          x: rect.x,
-          y: rect.y,
-          w: rect.w,
-          h: rect.h
-        };
-        return true;
-      }
-    },
-    reflow: function () {
-      var i;
-      $_p42hyuxjjgwefrk.remove(this);
-      if (this.visible()) {
-        Control$1.repaintControls = [];
-        Control$1.repaintControls.map = {};
-        this.recalc();
-        i = Control$1.repaintControls.length;
-        while (i--) {
-          Control$1.repaintControls[i].repaint();
+        return layoutRect;
+      },
+      recalc: function () {
+        var self = this;
+        var rect = self._layoutRect;
+        var lastRect = self._lastRect;
+        if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {
+          self._layout.recalc(self);
+          rect = self.layoutRect();
+          self._lastRect = {
+            x: rect.x,
+            y: rect.y,
+            w: rect.w,
+            h: rect.h
+          };
+          return true;
         }
-        if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {
-          this.repaint();
+      },
+      reflow: function () {
+        var i;
+        ReflowQueue.remove(this);
+        if (this.visible()) {
+          Control$1.repaintControls = [];
+          Control$1.repaintControls.map = {};
+          this.recalc();
+          i = Control$1.repaintControls.length;
+          while (i--) {
+            Control$1.repaintControls[i].repaint();
+          }
+          if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {
+            this.repaint();
+          }
+          Control$1.repaintControls = [];
         }
-        Control$1.repaintControls = [];
+        return this;
       }
-      return this;
+    });
+
+    function getDocumentSize(doc) {
+      var documentElement, body, scrollWidth, clientWidth;
+      var offsetWidth, scrollHeight, clientHeight, offsetHeight;
+      var max = Math.max;
+      documentElement = doc.documentElement;
+      body = doc.body;
+      scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
+      clientWidth = max(documentElement.clientWidth, body.clientWidth);
+      offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
+      scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
+      clientHeight = max(documentElement.clientHeight, body.clientHeight);
+      offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
+      return {
+        width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
+        height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
+      };
     }
-  });
-
-  function getDocumentSize(doc) {
-    var documentElement, body, scrollWidth, clientWidth;
-    var offsetWidth, scrollHeight, clientHeight, offsetHeight;
-    var max = Math.max;
-    documentElement = doc.documentElement;
-    body = doc.body;
-    scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
-    clientWidth = max(documentElement.clientWidth, body.clientWidth);
-    offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
-    scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
-    clientHeight = max(documentElement.clientHeight, body.clientHeight);
-    offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
-    return {
-      width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
-      height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
-    };
-  }
-  function updateWithTouchData(e) {
-    var keys, i;
-    if (e.changedTouches) {
-      keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');
-      for (i = 0; i < keys.length; i++) {
-        e[keys[i]] = e.changedTouches[0][keys[i]];
+    function updateWithTouchData(e) {
+      var keys, i;
+      if (e.changedTouches) {
+        keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');
+        for (i = 0; i < keys.length; i++) {
+          e[keys[i]] = e.changedTouches[0][keys[i]];
+        }
       }
     }
-  }
-  function DragHelper (id, settings) {
-    var $eventOverlay;
-    var doc = settings.document || document;
-    var downButton;
-    var start, stop$$1, drag, startX, startY;
-    settings = settings || {};
-    var handleElement = doc.getElementById(settings.handle || id);
-    start = function (e) {
-      var docSize = getDocumentSize(doc);
-      var handleElm, cursor;
-      updateWithTouchData(e);
-      e.preventDefault();
-      downButton = e.button;
-      handleElm = handleElement;
-      startX = e.screenX;
-      startY = e.screenY;
-      if (window.getComputedStyle) {
-        cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
-      } else {
-        cursor = handleElm.runtimeStyle.cursor;
-      }
-      $eventOverlay = global$9('<div></div>').css({
-        position: 'absolute',
-        top: 0,
-        left: 0,
-        width: docSize.width,
-        height: docSize.height,
-        zIndex: 2147483647,
-        opacity: 0.0001,
-        cursor: cursor
-      }).appendTo(doc.body);
-      global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);
-      settings.start(e);
-    };
-    drag = function (e) {
-      updateWithTouchData(e);
-      if (e.button !== downButton) {
-        return stop$$1(e);
-      }
-      e.deltaX = e.screenX - startX;
-      e.deltaY = e.screenY - startY;
-      e.preventDefault();
-      settings.drag(e);
-    };
-    stop$$1 = function (e) {
-      updateWithTouchData(e);
-      global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);
-      $eventOverlay.remove();
-      if (settings.stop) {
-        settings.stop(e);
-      }
-    };
-    this.destroy = function () {
-      global$9(handleElement).off();
-    };
-    global$9(handleElement).on('mousedown touchstart', start);
-  }
+    function DragHelper (id, settings) {
+      var $eventOverlay;
+      var doc = settings.document || document;
+      var downButton;
+      var start, stop$$1, drag, startX, startY;
+      settings = settings || {};
+      var handleElement = doc.getElementById(settings.handle || id);
+      start = function (e) {
+        var docSize = getDocumentSize(doc);
+        var handleElm, cursor;
+        updateWithTouchData(e);
+        e.preventDefault();
+        downButton = e.button;
+        handleElm = handleElement;
+        startX = e.screenX;
+        startY = e.screenY;
+        if (window.getComputedStyle) {
+          cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');
+        } else {
+          cursor = handleElm.runtimeStyle.cursor;
+        }
+        $eventOverlay = global$9('<div></div>').css({
+          position: 'absolute',
+          top: 0,
+          left: 0,
+          width: docSize.width,
+          height: docSize.height,
+          zIndex: 2147483647,
+          opacity: 0.0001,
+          cursor: cursor
+        }).appendTo(doc.body);
+        global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);
+        settings.start(e);
+      };
+      drag = function (e) {
+        updateWithTouchData(e);
+        if (e.button !== downButton) {
+          return stop$$1(e);
+        }
+        e.deltaX = e.screenX - startX;
+        e.deltaY = e.screenY - startY;
+        e.preventDefault();
+        settings.drag(e);
+      };
+      stop$$1 = function (e) {
+        updateWithTouchData(e);
+        global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);
+        $eventOverlay.remove();
+        if (settings.stop) {
+          settings.stop(e);
+        }
+      };
+      this.destroy = function () {
+        global$9(handleElement).off();
+      };
+      global$9(handleElement).on('mousedown touchstart', start);
+    }
 
-  var $_3rxloyuzjjgwefrs = {
-    init: function () {
-      var self = this;
-      self.on('repaint', self.renderScroll);
-    },
-    renderScroll: function () {
-      var self = this, margin = 2;
-      function repaintScroll() {
-        var hasScrollH, hasScrollV, bodyElm;
-        function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
-          var containerElm, scrollBarElm, scrollThumbElm;
-          var containerSize, scrollSize, ratio, rect;
-          var posNameLower, sizeNameLower;
-          scrollBarElm = self.getEl('scroll' + axisName);
-          if (scrollBarElm) {
-            posNameLower = posName.toLowerCase();
-            sizeNameLower = sizeName.toLowerCase();
-            global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);
-            if (!hasScroll) {
-              global$9(scrollBarElm).css('display', 'none');
-              return;
+    var Scrollable = {
+      init: function () {
+        var self = this;
+        self.on('repaint', self.renderScroll);
+      },
+      renderScroll: function () {
+        var self = this, margin = 2;
+        function repaintScroll() {
+          var hasScrollH, hasScrollV, bodyElm;
+          function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
+            var containerElm, scrollBarElm, scrollThumbElm;
+            var containerSize, scrollSize, ratio, rect;
+            var posNameLower, sizeNameLower;
+            scrollBarElm = self.getEl('scroll' + axisName);
+            if (scrollBarElm) {
+              posNameLower = posName.toLowerCase();
+              sizeNameLower = sizeName.toLowerCase();
+              global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);
+              if (!hasScroll) {
+                global$9(scrollBarElm).css('display', 'none');
+                return;
+              }
+              global$9(scrollBarElm).css('display', 'block');
+              containerElm = self.getEl('body');
+              scrollThumbElm = self.getEl('scroll' + axisName + 't');
+              containerSize = containerElm['client' + sizeName] - margin * 2;
+              containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;
+              scrollSize = containerElm['scroll' + sizeName];
+              ratio = containerSize / scrollSize;
+              rect = {};
+              rect[posNameLower] = containerElm['offset' + posName] + margin;
+              rect[sizeNameLower] = containerSize;
+              global$9(scrollBarElm).css(rect);
+              rect = {};
+              rect[posNameLower] = containerElm['scroll' + posName] * ratio;
+              rect[sizeNameLower] = containerSize * ratio;
+              global$9(scrollThumbElm).css(rect);
             }
-            global$9(scrollBarElm).css('display', 'block');
-            containerElm = self.getEl('body');
-            scrollThumbElm = self.getEl('scroll' + axisName + 't');
-            containerSize = containerElm['client' + sizeName] - margin * 2;
-            containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;
-            scrollSize = containerElm['scroll' + sizeName];
-            ratio = containerSize / scrollSize;
-            rect = {};
-            rect[posNameLower] = containerElm['offset' + posName] + margin;
-            rect[sizeNameLower] = containerSize;
-            global$9(scrollBarElm).css(rect);
-            rect = {};
-            rect[posNameLower] = containerElm['scroll' + posName] * ratio;
-            rect[sizeNameLower] = containerSize * ratio;
-            global$9(scrollThumbElm).css(rect);
           }
+          bodyElm = self.getEl('body');
+          hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
+          hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
+          repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');
+          repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');
         }
-        bodyElm = self.getEl('body');
-        hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
-        hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
-        repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');
-        repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');
-      }
-      function addScroll() {
-        function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
-          var scrollStart;
-          var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
-          global$9(self.getEl()).append('<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' + '<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' + '</div>');
-          self.draghelper = new DragHelper(axisId + 't', {
-            start: function () {
-              scrollStart = self.getEl('body')['scroll' + posName];
-              global$9('#' + axisId).addClass(prefix + 'active');
-            },
-            drag: function (e) {
-              var ratio, hasScrollH, hasScrollV, containerSize;
-              var layoutRect = self.layoutRect();
-              hasScrollH = layoutRect.contentW > layoutRect.innerW;
-              hasScrollV = layoutRect.contentH > layoutRect.innerH;
-              containerSize = self.getEl('body')['client' + sizeName] - margin * 2;
-              containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;
-              ratio = containerSize / self.getEl('body')['scroll' + sizeName];
-              self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;
-            },
-            stop: function () {
-              global$9('#' + axisId).removeClass(prefix + 'active');
-            }
-          });
+        function addScroll() {
+          function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
+            var scrollStart;
+            var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
+            global$9(self.getEl()).append('<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' + '<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' + '</div>');
+            self.draghelper = new DragHelper(axisId + 't', {
+              start: function () {
+                scrollStart = self.getEl('body')['scroll' + posName];
+                global$9('#' + axisId).addClass(prefix + 'active');
+              },
+              drag: function (e) {
+                var ratio, hasScrollH, hasScrollV, containerSize;
+                var layoutRect = self.layoutRect();
+                hasScrollH = layoutRect.contentW > layoutRect.innerW;
+                hasScrollV = layoutRect.contentH > layoutRect.innerH;
+                containerSize = self.getEl('body')['client' + sizeName] - margin * 2;
+                containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;
+                ratio = containerSize / self.getEl('body')['scroll' + sizeName];
+                self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;
+              },
+              stop: function () {
+                global$9('#' + axisId).removeClass(prefix + 'active');
+              }
+            });
+          }
+          self.classes.add('scroll');
+          addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');
+          addScrollAxis('h', 'Left', 'Width', 'X', 'Height');
         }
-        self.classes.add('scroll');
-        addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');
-        addScrollAxis('h', 'Left', 'Width', 'X', 'Height');
-      }
-      if (self.settings.autoScroll) {
-        if (!self._hasScroll) {
-          self._hasScroll = true;
-          addScroll();
-          self.on('wheel', function (e) {
-            var bodyEl = self.getEl('body');
-            bodyEl.scrollLeft += (e.deltaX || 0) * 10;
-            bodyEl.scrollTop += e.deltaY * 10;
-            repaintScroll();
-          });
-          global$9(self.getEl('body')).on('scroll', repaintScroll);
+        if (self.settings.autoScroll) {
+          if (!self._hasScroll) {
+            self._hasScroll = true;
+            addScroll();
+            self.on('wheel', function (e) {
+              var bodyEl = self.getEl('body');
+              bodyEl.scrollLeft += (e.deltaX || 0) * 10;
+              bodyEl.scrollTop += e.deltaY * 10;
+              repaintScroll();
+            });
+            global$9(self.getEl('body')).on('scroll', repaintScroll);
+          }
+          repaintScroll();
         }
-        repaintScroll();
       }
-    }
-  };
+    };
 
-  var Panel = Container.extend({
-    Defaults: {
-      layout: 'fit',
-      containerCls: 'panel'
-    },
-    Mixins: [$_3rxloyuzjjgwefrs],
-    renderHtml: function () {
-      var self = this;
-      var layout = self._layout;
-      var innerHtml = self.settings.html;
-      self.preRender();
-      layout.preRender(self);
-      if (typeof innerHtml === 'undefined') {
-        innerHtml = '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>';
-      } else {
-        if (typeof innerHtml === 'function') {
-          innerHtml = innerHtml.call(self);
+    var Panel = Container.extend({
+      Defaults: {
+        layout: 'fit',
+        containerCls: 'panel'
+      },
+      Mixins: [Scrollable],
+      renderHtml: function () {
+        var self = this;
+        var layout = self._layout;
+        var innerHtml = self.settings.html;
+        self.preRender();
+        layout.preRender(self);
+        if (typeof innerHtml === 'undefined') {
+          innerHtml = '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>';
+        } else {
+          if (typeof innerHtml === 'function') {
+            innerHtml = innerHtml.call(self);
+          }
+          self._hasBody = false;
         }
-        self._hasBody = false;
+        return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1" role="group">' + (self._preBodyHtml || '') + innerHtml + '</div>';
       }
-      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1" role="group">' + (self._preBodyHtml || '') + innerHtml + '</div>';
-    }
-  });
+    });
 
-  var $_3m7770v1jjgwefrz = {
-    resizeToContent: function () {
-      this._layoutRect.autoResize = true;
-      this._lastRect = null;
-      this.reflow();
-    },
-    resizeTo: function (w, h) {
-      if (w <= 1 || h <= 1) {
-        var rect = funcs.getWindowSize();
-        w = w <= 1 ? w * rect.w : w;
-        h = h <= 1 ? h * rect.h : h;
+    var Resizable = {
+      resizeToContent: function () {
+        this._layoutRect.autoResize = true;
+        this._lastRect = null;
+        this.reflow();
+      },
+      resizeTo: function (w, h) {
+        if (w <= 1 || h <= 1) {
+          var rect = funcs.getWindowSize();
+          w = w <= 1 ? w * rect.w : w;
+          h = h <= 1 ? h * rect.h : h;
+        }
+        this._layoutRect.autoResize = false;
+        return this.layoutRect({
+          minW: w,
+          minH: h,
+          w: w,
+          h: h
+        }).reflow();
+      },
+      resizeBy: function (dw, dh) {
+        var self = this, rect = self.layoutRect();
+        return self.resizeTo(rect.w + dw, rect.h + dh);
       }
-      this._layoutRect.autoResize = false;
-      return this.layoutRect({
-        minW: w,
-        minH: h,
-        w: w,
-        h: h
-      }).reflow();
-    },
-    resizeBy: function (dw, dh) {
-      var self = this, rect = self.layoutRect();
-      return self.resizeTo(rect.w + dw, rect.h + dh);
-    }
-  };
+    };
 
-  var documentClickHandler;
-  var documentScrollHandler;
-  var windowResizeHandler;
-  var visiblePanels = [];
-  var zOrder = [];
-  var hasModal;
-  function isChildOf(ctrl, parent$$1) {
-    while (ctrl) {
-      if (ctrl === parent$$1) {
-        return true;
+    var documentClickHandler, documentScrollHandler, windowResizeHandler;
+    var visiblePanels = [];
+    var zOrder = [];
+    var hasModal;
+    function isChildOf(ctrl, parent$$1) {
+      while (ctrl) {
+        if (ctrl === parent$$1) {
+          return true;
+        }
+        ctrl = ctrl.parent();
       }
-      ctrl = ctrl.parent();
     }
-  }
-  function skipOrHidePanels(e) {
-    var i = visiblePanels.length;
-    while (i--) {
-      var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
-      if (panel.settings.autohide) {
-        if (clickCtrl) {
-          if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
-            continue;
+    function skipOrHidePanels(e) {
+      var i = visiblePanels.length;
+      while (i--) {
+        var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
+        if (panel.settings.autohide) {
+          if (clickCtrl) {
+            if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
+              continue;
+            }
           }
+          e = panel.fire('autohide', { target: e.target });
+          if (!e.isDefaultPrevented()) {
+            panel.hide();
+          }
         }
-        e = panel.fire('autohide', { target: e.target });
-        if (!e.isDefaultPrevented()) {
-          panel.hide();
-        }
       }
     }
-  }
-  function bindDocumentClickHandler() {
-    if (!documentClickHandler) {
-      documentClickHandler = function (e) {
-        if (e.button === 2) {
-          return;
-        }
-        skipOrHidePanels(e);
-      };
-      global$9(document).on('click touchstart', documentClickHandler);
+    function bindDocumentClickHandler() {
+      if (!documentClickHandler) {
+        documentClickHandler = function (e) {
+          if (e.button === 2) {
+            return;
+          }
+          skipOrHidePanels(e);
+        };
+        global$9(document).on('click touchstart', documentClickHandler);
+      }
     }
-  }
-  function bindDocumentScrollHandler() {
-    if (!documentScrollHandler) {
-      documentScrollHandler = function () {
-        var i;
-        i = visiblePanels.length;
-        while (i--) {
-          repositionPanel(visiblePanels[i]);
-        }
-      };
-      global$9(window).on('scroll', documentScrollHandler);
+    function bindDocumentScrollHandler() {
+      if (!documentScrollHandler) {
+        documentScrollHandler = function () {
+          var i;
+          i = visiblePanels.length;
+          while (i--) {
+            repositionPanel(visiblePanels[i]);
+          }
+        };
+        global$9(window).on('scroll', documentScrollHandler);
+      }
     }
-  }
-  function bindWindowResizeHandler() {
-    if (!windowResizeHandler) {
-      var docElm_1 = document.documentElement;
-      var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
-      windowResizeHandler = function () {
-        if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
-          clientWidth_1 = docElm_1.clientWidth;
-          clientHeight_1 = docElm_1.clientHeight;
-          FloatPanel.hideAll();
-        }
-      };
-      global$9(window).on('resize', windowResizeHandler);
+    function bindWindowResizeHandler() {
+      if (!windowResizeHandler) {
+        var docElm_1 = document.documentElement;
+        var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;
+        windowResizeHandler = function () {
+          if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {
+            clientWidth_1 = docElm_1.clientWidth;
+            clientHeight_1 = docElm_1.clientHeight;
+            FloatPanel.hideAll();
+          }
+        };
+        global$9(window).on('resize', windowResizeHandler);
+      }
     }
-  }
-  function repositionPanel(panel) {
-    var scrollY$$1 = funcs.getViewPort().y;
-    function toggleFixedChildPanels(fixed, deltaY) {
-      var parent$$1;
-      for (var i = 0; i < visiblePanels.length; i++) {
-        if (visiblePanels[i] !== panel) {
-          parent$$1 = visiblePanels[i].parent();
-          while (parent$$1 && (parent$$1 = parent$$1.parent())) {
-            if (parent$$1 === panel) {
-              visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+    function repositionPanel(panel) {
+      var scrollY$$1 = funcs.getViewPort().y;
+      function toggleFixedChildPanels(fixed, deltaY) {
+        var parent$$1;
+        for (var i = 0; i < visiblePanels.length; i++) {
+          if (visiblePanels[i] !== panel) {
+            parent$$1 = visiblePanels[i].parent();
+            while (parent$$1 && (parent$$1 = parent$$1.parent())) {
+              if (parent$$1 === panel) {
+                visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+              }
             }
           }
         }
       }
-    }
-    if (panel.settings.autofix) {
-      if (!panel.state.get('fixed')) {
-        panel._autoFixY = panel.layoutRect().y;
-        if (panel._autoFixY < scrollY$$1) {
-          panel.fixed(true).layoutRect({ y: 0 }).repaint();
-          toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);
+      if (panel.settings.autofix) {
+        if (!panel.state.get('fixed')) {
+          panel._autoFixY = panel.layoutRect().y;
+          if (panel._autoFixY < scrollY$$1) {
+            panel.fixed(true).layoutRect({ y: 0 }).repaint();
+            toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);
+          }
+        } else {
+          if (panel._autoFixY > scrollY$$1) {
+            panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
+            toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);
+          }
         }
-      } else {
-        if (panel._autoFixY > scrollY$$1) {
-          panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();
-          toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);
-        }
       }
     }
-  }
-  function addRemove(add, ctrl) {
-    var i, zIndex = FloatPanel.zIndex || 65535, topModal;
-    if (add) {
-      zOrder.push(ctrl);
-    } else {
-      i = zOrder.length;
-      while (i--) {
-        if (zOrder[i] === ctrl) {
-          zOrder.splice(i, 1);
+    function addRemove(add, ctrl) {
+      var i, zIndex = FloatPanel.zIndex || 65535, topModal;
+      if (add) {
+        zOrder.push(ctrl);
+      } else {
+        i = zOrder.length;
+        while (i--) {
+          if (zOrder[i] === ctrl) {
+            zOrder.splice(i, 1);
+          }
         }
       }
-    }
-    if (zOrder.length) {
-      for (i = 0; i < zOrder.length; i++) {
-        if (zOrder[i].modal) {
+      if (zOrder.length) {
+        for (i = 0; i < zOrder.length; i++) {
+          if (zOrder[i].modal) {
+            zIndex++;
+            topModal = zOrder[i];
+          }
+          zOrder[i].getEl().style.zIndex = zIndex;
+          zOrder[i].zIndex = zIndex;
           zIndex++;
-          topModal = zOrder[i];
         }
-        zOrder[i].getEl().style.zIndex = zIndex;
-        zOrder[i].zIndex = zIndex;
-        zIndex++;
       }
+      var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];
+      if (topModal) {
+        global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);
+      } else if (modalBlockEl) {
+        modalBlockEl.parentNode.removeChild(modalBlockEl);
+        hasModal = false;
+      }
+      FloatPanel.currentZIndex = zIndex;
     }
-    var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];
-    if (topModal) {
-      global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);
-    } else if (modalBlockEl) {
-      modalBlockEl.parentNode.removeChild(modalBlockEl);
-      hasModal = false;
-    }
-    FloatPanel.currentZIndex = zIndex;
-  }
-  var FloatPanel = Panel.extend({
-    Mixins: [
-      $_3fnh5iukjjgwefpt,
-      $_3m7770v1jjgwefrz
-    ],
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      self$$1._eventsRoot = self$$1;
-      self$$1.classes.add('floatpanel');
-      if (settings.autohide) {
-        bindDocumentClickHandler();
-        bindWindowResizeHandler();
-        visiblePanels.push(self$$1);
-      }
-      if (settings.autofix) {
-        bindDocumentScrollHandler();
-        self$$1.on('move', function () {
-          repositionPanel(this);
+    var FloatPanel = Panel.extend({
+      Mixins: [
+        Movable,
+        Resizable
+      ],
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        self$$1._eventsRoot = self$$1;
+        self$$1.classes.add('floatpanel');
+        if (settings.autohide) {
+          bindDocumentClickHandler();
+          bindWindowResizeHandler();
+          visiblePanels.push(self$$1);
+        }
+        if (settings.autofix) {
+          bindDocumentScrollHandler();
+          self$$1.on('move', function () {
+            repositionPanel(this);
+          });
+        }
+        self$$1.on('postrender show', function (e) {
+          if (e.control === self$$1) {
+            var $modalBlockEl_1;
+            var prefix_1 = self$$1.classPrefix;
+            if (self$$1.modal && !hasModal) {
+              $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());
+              if (!$modalBlockEl_1[0]) {
+                $modalBlockEl_1 = global$9('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self$$1.getContainerElm());
+              }
+              global$7.setTimeout(function () {
+                $modalBlockEl_1.addClass(prefix_1 + 'in');
+                global$9(self$$1.getEl()).addClass(prefix_1 + 'in');
+              });
+              hasModal = true;
+            }
+            addRemove(true, self$$1);
+          }
         });
-      }
-      self$$1.on('postrender show', function (e) {
-        if (e.control === self$$1) {
-          var $modalBlockEl_1;
-          var prefix_1 = self$$1.classPrefix;
-          if (self$$1.modal && !hasModal) {
-            $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());
-            if (!$modalBlockEl_1[0]) {
-              $modalBlockEl_1 = global$9('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self$$1.getContainerElm());
+        self$$1.on('show', function () {
+          self$$1.parents().each(function (ctrl) {
+            if (ctrl.state.get('fixed')) {
+              self$$1.fixed(true);
+              return false;
             }
-            global$7.setTimeout(function () {
-              $modalBlockEl_1.addClass(prefix_1 + 'in');
-              global$9(self$$1.getEl()).addClass(prefix_1 + 'in');
-            });
-            hasModal = true;
+          });
+        });
+        if (settings.popover) {
+          self$$1._preBodyHtml = '<div class="' + self$$1.classPrefix + 'arrow"></div>';
+          self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');
+        }
+        self$$1.aria('label', settings.ariaLabel);
+        self$$1.aria('labelledby', self$$1._id);
+        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
+      },
+      fixed: function (state) {
+        var self$$1 = this;
+        if (self$$1.state.get('fixed') !== state) {
+          if (self$$1.state.get('rendered')) {
+            var viewport = funcs.getViewPort();
+            if (state) {
+              self$$1.layoutRect().y -= viewport.y;
+            } else {
+              self$$1.layoutRect().y += viewport.y;
+            }
           }
-          addRemove(true, self$$1);
+          self$$1.classes.toggle('fixed', state);
+          self$$1.state.set('fixed', state);
         }
-      });
-      self$$1.on('show', function () {
-        self$$1.parents().each(function (ctrl) {
-          if (ctrl.state.get('fixed')) {
-            self$$1.fixed(true);
-            return false;
+        return self$$1;
+      },
+      show: function () {
+        var self$$1 = this;
+        var i;
+        var state = self$$1._super();
+        i = visiblePanels.length;
+        while (i--) {
+          if (visiblePanels[i] === self$$1) {
+            break;
           }
-        });
-      });
-      if (settings.popover) {
-        self$$1._preBodyHtml = '<div class="' + self$$1.classPrefix + 'arrow"></div>';
-        self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');
+        }
+        if (i === -1) {
+          visiblePanels.push(self$$1);
+        }
+        return state;
+      },
+      hide: function () {
+        removeVisiblePanel(this);
+        addRemove(false, this);
+        return this._super();
+      },
+      hideAll: function () {
+        FloatPanel.hideAll();
+      },
+      close: function () {
+        var self$$1 = this;
+        if (!self$$1.fire('close').isDefaultPrevented()) {
+          self$$1.remove();
+          addRemove(false, self$$1);
+        }
+        return self$$1;
+      },
+      remove: function () {
+        removeVisiblePanel(this);
+        this._super();
+      },
+      postRender: function () {
+        var self$$1 = this;
+        if (self$$1.settings.bodyRole) {
+          this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);
+        }
+        return self$$1._super();
       }
-      self$$1.aria('label', settings.ariaLabel);
-      self$$1.aria('labelledby', self$$1._id);
-      self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
-    },
-    fixed: function (state) {
-      var self$$1 = this;
-      if (self$$1.state.get('fixed') !== state) {
-        if (self$$1.state.get('rendered')) {
-          var viewport = funcs.getViewPort();
-          if (state) {
-            self$$1.layoutRect().y -= viewport.y;
-          } else {
-            self$$1.layoutRect().y += viewport.y;
-          }
+    });
+    FloatPanel.hideAll = function () {
+      var i = visiblePanels.length;
+      while (i--) {
+        var panel = visiblePanels[i];
+        if (panel && panel.settings.autohide) {
+          panel.hide();
+          visiblePanels.splice(i, 1);
         }
-        self$$1.classes.toggle('fixed', state);
-        self$$1.state.set('fixed', state);
       }
-      return self$$1;
-    },
-    show: function () {
-      var self$$1 = this;
+    };
+    function removeVisiblePanel(panel) {
       var i;
-      var state = self$$1._super();
       i = visiblePanels.length;
       while (i--) {
-        if (visiblePanels[i] === self$$1) {
-          break;
+        if (visiblePanels[i] === panel) {
+          visiblePanels.splice(i, 1);
         }
       }
-      if (i === -1) {
-        visiblePanels.push(self$$1);
+      i = zOrder.length;
+      while (i--) {
+        if (zOrder[i] === panel) {
+          zOrder.splice(i, 1);
+        }
       }
-      return state;
-    },
-    hide: function () {
-      removeVisiblePanel(this);
-      addRemove(false, this);
-      return this._super();
-    },
-    hideAll: function () {
-      FloatPanel.hideAll();
-    },
-    close: function () {
-      var self$$1 = this;
-      if (!self$$1.fire('close').isDefaultPrevented()) {
-        self$$1.remove();
-        addRemove(false, self$$1);
-      }
-      return self$$1;
-    },
-    remove: function () {
-      removeVisiblePanel(this);
-      this._super();
-    },
-    postRender: function () {
-      var self$$1 = this;
-      if (self$$1.settings.bodyRole) {
-        this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);
-      }
-      return self$$1._super();
     }
-  });
-  FloatPanel.hideAll = function () {
-    var i = visiblePanels.length;
-    while (i--) {
-      var panel = visiblePanels[i];
-      if (panel && panel.settings.autohide) {
-        panel.hide();
-        visiblePanels.splice(i, 1);
-      }
-    }
-  };
-  function removeVisiblePanel(panel) {
-    var i;
-    i = visiblePanels.length;
-    while (i--) {
-      if (visiblePanels[i] === panel) {
-        visiblePanels.splice(i, 1);
-      }
-    }
-    i = zOrder.length;
-    while (i--) {
-      if (zOrder[i] === panel) {
-        zOrder.splice(i, 1);
-      }
-    }
-  }
 
-  var isFixed$1 = function (inlineToolbarContainer, editor) {
-    return !!(inlineToolbarContainer && !editor.settings.ui_container);
-  };
-  var render$1 = function (editor, theme, args) {
-    var panel, inlineToolbarContainer;
-    var DOM = global$3.DOM;
-    var fixedToolbarContainer = getFixedToolbarContainer(editor);
-    if (fixedToolbarContainer) {
-      inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];
-    }
-    var reposition = function () {
-      if (panel && panel.moveRel && panel.visible() && !panel._fixed) {
-        var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();
-        var deltaX = 0, deltaY = 0;
-        if (scrollContainer) {
-          var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);
-          deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);
-          deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);
-        }
-        panel.fixed(false).moveRel(body, editor.rtl ? [
-          'tr-br',
-          'br-tr'
-        ] : [
-          'tl-bl',
-          'bl-tl',
-          'tr-br'
-        ]).moveBy(deltaX, deltaY);
-      }
+    var isFixed$1 = function (inlineToolbarContainer, editor) {
+      return !!(inlineToolbarContainer && !editor.settings.ui_container);
     };
-    var show = function () {
-      if (panel) {
-        panel.show();
-        reposition();
-        DOM.addClass(editor.getBody(), 'mce-edit-focus');
+    var render$1 = function (editor, theme, args) {
+      var panel, inlineToolbarContainer;
+      var DOM = global$3.DOM;
+      var fixedToolbarContainer = getFixedToolbarContainer(editor);
+      if (fixedToolbarContainer) {
+        inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];
       }
-    };
-    var hide = function () {
-      if (panel) {
-        panel.hide();
-        FloatPanel.hideAll();
-        DOM.removeClass(editor.getBody(), 'mce-edit-focus');
-      }
-    };
-    var render = function () {
-      if (panel) {
-        if (!panel.visible()) {
-          show();
+      var reposition = function () {
+        if (panel && panel.moveRel && panel.visible() && !panel._fixed) {
+          var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();
+          var deltaX = 0, deltaY = 0;
+          if (scrollContainer) {
+            var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);
+            deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);
+            deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);
+          }
+          panel.fixed(false).moveRel(body, editor.rtl ? [
+            'tr-br',
+            'br-tr'
+          ] : [
+            'tl-bl',
+            'bl-tl',
+            'tr-br'
+          ]).moveBy(deltaX, deltaY);
         }
-        return;
-      }
-      panel = theme.panel = global$4.create({
-        type: inlineToolbarContainer ? 'panel' : 'floatpanel',
-        role: 'application',
-        classes: 'tinymce tinymce-inline',
-        layout: 'flex',
-        direction: 'column',
-        align: 'stretch',
-        autohide: false,
-        autofix: isFixed$1(inlineToolbarContainer, editor),
-        fixed: isFixed$1(inlineToolbarContainer, editor),
-        border: 1,
-        items: [
-          hasMenubar(editor) === false ? null : {
-            type: 'menubar',
-            border: '0 0 1 0',
-            items: $_bahgsqu8jjgwefo4.createMenuButtons(editor)
-          },
-          $_4udolhu7jjgwefo1.createToolbars(editor, getToolbarSize(editor))
-        ]
+      };
+      var show = function () {
+        if (panel) {
+          panel.show();
+          reposition();
+          DOM.addClass(editor.getBody(), 'mce-edit-focus');
+        }
+      };
+      var hide = function () {
+        if (panel) {
+          panel.hide();
+          FloatPanel.hideAll();
+          DOM.removeClass(editor.getBody(), 'mce-edit-focus');
+        }
+      };
+      var render = function () {
+        if (panel) {
+          if (!panel.visible()) {
+            show();
+          }
+          return;
+        }
+        panel = theme.panel = global$4.create({
+          type: inlineToolbarContainer ? 'panel' : 'floatpanel',
+          role: 'application',
+          classes: 'tinymce tinymce-inline',
+          layout: 'flex',
+          direction: 'column',
+          align: 'stretch',
+          autohide: false,
+          autofix: true,
+          fixed: isFixed$1(inlineToolbarContainer, editor),
+          border: 1,
+          items: [
+            hasMenubar(editor) === false ? null : {
+              type: 'menubar',
+              border: '0 0 1 0',
+              items: Menubar.createMenuButtons(editor)
+            },
+            Toolbar.createToolbars(editor, getToolbarSize(editor))
+          ]
+        });
+        UiContainer.setUiContainer(editor, panel);
+        Events.fireBeforeRenderUI(editor);
+        if (inlineToolbarContainer) {
+          panel.renderTo(inlineToolbarContainer).reflow();
+        } else {
+          panel.renderTo().reflow();
+        }
+        A11y.addKeys(editor, panel);
+        show();
+        ContextToolbars.addContextualToolbars(editor);
+        editor.on('nodeChange', reposition);
+        editor.on('ResizeWindow', reposition);
+        editor.on('activate', show);
+        editor.on('deactivate', hide);
+        editor.nodeChanged();
+      };
+      editor.settings.content_editable = true;
+      editor.on('focus', function () {
+        if (isSkinDisabled(editor) === false && args.skinUiCss) {
+          DOM.styleSheetLoader.load(args.skinUiCss, render, render);
+        } else {
+          render();
+        }
       });
-      $_6344qfu4jjgwefnr.setUiContainer(editor, panel);
-      $_5hpmustzjjgwefnb.fireBeforeRenderUI(editor);
-      if (inlineToolbarContainer) {
-        panel.renderTo(inlineToolbarContainer).reflow();
+      editor.on('blur hide', hide);
+      editor.on('remove', function () {
+        if (panel) {
+          panel.remove();
+          panel = null;
+        }
+      });
+      if (isSkinDisabled(editor) === false && args.skinUiCss) {
+        DOM.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));
       } else {
-        panel.renderTo().reflow();
+        SkinLoaded.fireSkinLoaded(editor)();
       }
-      $_azwbz4u0jjgwefnc.addKeys(editor, panel);
-      show();
-      $_g1gegqu1jjgwefne.addContextualToolbars(editor);
-      editor.on('nodeChange', reposition);
-      editor.on('ResizeWindow', reposition);
-      editor.on('activate', show);
-      editor.on('deactivate', hide);
-      editor.nodeChanged();
+      return {};
     };
-    editor.settings.content_editable = true;
-    editor.on('focus', function () {
-      if (isSkinDisabled(editor) === false && args.skinUiCss) {
-        DOM.styleSheetLoader.load(args.skinUiCss, render, render);
-      } else {
-        render();
-      }
-    });
-    editor.on('blur hide', hide);
-    editor.on('remove', function () {
-      if (panel) {
-        panel.remove();
-        panel = null;
-      }
-    });
-    if (isSkinDisabled(editor) === false && args.skinUiCss) {
-      DOM.styleSheetLoader.load(args.skinUiCss, $_awdosmuejjgwefop.fireSkinLoaded(editor));
-    } else {
-      $_awdosmuejjgwefop.fireSkinLoaded(editor)();
-    }
-    return {};
-  };
-  var $_fuoldxufjjgwefor = { render: render$1 };
+    var Inline = { render: render$1 };
 
-  function Throbber (elm, inline) {
-    var self = this;
-    var state;
-    var classPrefix = Control$1.classPrefix;
-    var timer;
-    self.show = function (time, callback) {
-      function render() {
-        if (state) {
-          global$9(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');
-          if (callback) {
-            callback();
+    function Throbber (elm, inline) {
+      var self = this;
+      var state;
+      var classPrefix = Control$1.classPrefix;
+      var timer;
+      self.show = function (time, callback) {
+        function render() {
+          if (state) {
+            global$9(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');
+            if (callback) {
+              callback();
+            }
           }
         }
-      }
-      self.hide();
-      state = true;
-      if (time) {
-        timer = global$7.setTimeout(render, time);
-      } else {
-        render();
-      }
-      return self;
+        self.hide();
+        state = true;
+        if (time) {
+          timer = global$7.setTimeout(render, time);
+        } else {
+          render();
+        }
+        return self;
+      };
+      self.hide = function () {
+        var child = elm.lastChild;
+        global$7.clearTimeout(timer);
+        if (child && child.className.indexOf('throbber') !== -1) {
+          child.parentNode.removeChild(child);
+        }
+        state = false;
+        return self;
+      };
+    }
+
+    var setup = function (editor, theme) {
+      var throbber;
+      editor.on('ProgressState', function (e) {
+        throbber = throbber || new Throbber(theme.panel.getEl('body'));
+        if (e.state) {
+          throbber.show(e.time);
+        } else {
+          throbber.hide();
+        }
+      });
     };
-    self.hide = function () {
-      var child = elm.lastChild;
-      global$7.clearTimeout(timer);
-      if (child && child.className.indexOf('throbber') !== -1) {
-        child.parentNode.removeChild(child);
+    var ProgressState = { setup: setup };
+
+    var renderUI = function (editor, theme, args) {
+      var skinUrl = getSkinUrl(editor);
+      if (skinUrl) {
+        args.skinUiCss = skinUrl + '/skin.min.css';
+        editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');
       }
-      state = false;
-      return self;
+      ProgressState.setup(editor, theme);
+      return isInline(editor) ? Inline.render(editor, theme, args) : Iframe.render(editor, theme, args);
     };
-  }
+    var Render = { renderUI: renderUI };
 
-  var setup = function (editor, theme) {
-    var throbber;
-    editor.on('ProgressState', function (e) {
-      throbber = throbber || new Throbber(theme.panel.getEl('body'));
-      if (e.state) {
-        throbber.show(e.time);
-      } else {
-        throbber.hide();
+    var Tooltip = Control$1.extend({
+      Mixins: [Movable],
+      Defaults: { classes: 'widget tooltip tooltip-n' },
+      renderHtml: function () {
+        var self = this, prefix = self.classPrefix;
+        return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.getEl().lastChild.innerHTML = self.encode(e.value);
+        });
+        return self._super();
+      },
+      repaint: function () {
+        var self = this;
+        var style, rect;
+        style = self.getEl().style;
+        rect = self._layoutRect;
+        style.left = rect.x + 'px';
+        style.top = rect.y + 'px';
+        style.zIndex = 65535 + 65535;
       }
     });
-  };
-  var $_18iiwkv2jjgwefs0 = { setup: setup };
 
-  var renderUI = function (editor, theme, args) {
-    var skinUrl = getSkinUrl(editor);
-    if (skinUrl) {
-      args.skinUiCss = skinUrl + '/skin.min.css';
-      editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');
-    }
-    $_18iiwkv2jjgwefs0.setup(editor, theme);
-    return isInline(editor) ? $_fuoldxufjjgwefor.render(editor, theme, args) : $_vxdgetvjjgwefn7.render(editor, theme, args);
-  };
-  var $_as4c3qtrjjgwefn1 = { renderUI: renderUI };
-
-  var Tooltip = Control$1.extend({
-    Mixins: [$_3fnh5iukjjgwefpt],
-    Defaults: { classes: 'widget tooltip tooltip-n' },
-    renderHtml: function () {
-      var self = this, prefix = self.classPrefix;
-      return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.getEl().lastChild.innerHTML = self.encode(e.value);
-      });
-      return self._super();
-    },
-    repaint: function () {
-      var self = this;
-      var style, rect;
-      style = self.getEl().style;
-      rect = self._layoutRect;
-      style.left = rect.x + 'px';
-      style.top = rect.y + 'px';
-      style.zIndex = 65535 + 65535;
-    }
-  });
-
-  var Widget = Control$1.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      settings = self.settings;
-      self.canFocus = true;
-      if (settings.tooltip && Widget.tooltips !== false) {
-        self.on('mouseenter', function (e) {
-          var tooltip = self.tooltip().moveTo(-65535);
-          if (e.control === self) {
-            var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [
-              'bc-tc',
-              'bc-tl',
-              'bc-tr'
-            ]);
-            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
-            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
-            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
-            tooltip.moveRel(self.getEl(), rel);
-          } else {
-            tooltip.hide();
-          }
+    var Widget = Control$1.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        settings = self.settings;
+        self.canFocus = true;
+        if (settings.tooltip && Widget.tooltips !== false) {
+          self.on('mouseenter', function (e) {
+            var tooltip = self.tooltip().moveTo(-65535);
+            if (e.control === self) {
+              var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [
+                'bc-tc',
+                'bc-tl',
+                'bc-tr'
+              ]);
+              tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
+              tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
+              tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
+              tooltip.moveRel(self.getEl(), rel);
+            } else {
+              tooltip.hide();
+            }
+          });
+          self.on('mouseleave mousedown click', function () {
+            self.tooltip().remove();
+            self._tooltip = null;
+          });
+        }
+        self.aria('label', settings.ariaLabel || settings.tooltip);
+      },
+      tooltip: function () {
+        if (!this._tooltip) {
+          this._tooltip = new Tooltip({ type: 'tooltip' });
+          UiContainer.inheritUiContainer(this, this._tooltip);
+          this._tooltip.renderTo();
+        }
+        return this._tooltip;
+      },
+      postRender: function () {
+        var self = this, settings = self.settings;
+        self._super();
+        if (!self.parent() && (settings.width || settings.height)) {
+          self.initLayoutRect();
+          self.repaint();
+        }
+        if (settings.autofocus) {
+          self.focus();
+        }
+      },
+      bindStates: function () {
+        var self = this;
+        function disable(state) {
+          self.aria('disabled', state);
+          self.classes.toggle('disabled', state);
+        }
+        function active(state) {
+          self.aria('pressed', state);
+          self.classes.toggle('active', state);
+        }
+        self.state.on('change:disabled', function (e) {
+          disable(e.value);
         });
-        self.on('mouseleave mousedown click', function () {
-          self.tooltip().remove();
-          self._tooltip = null;
+        self.state.on('change:active', function (e) {
+          active(e.value);
         });
+        if (self.state.get('disabled')) {
+          disable(true);
+        }
+        if (self.state.get('active')) {
+          active(true);
+        }
+        return self._super();
+      },
+      remove: function () {
+        this._super();
+        if (this._tooltip) {
+          this._tooltip.remove();
+          this._tooltip = null;
+        }
       }
-      self.aria('label', settings.ariaLabel || settings.tooltip);
-    },
-    tooltip: function () {
-      if (!this._tooltip) {
-        this._tooltip = new Tooltip({ type: 'tooltip' });
-        $_6344qfu4jjgwefnr.inheritUiContainer(this, this._tooltip);
-        this._tooltip.renderTo();
-      }
-      return this._tooltip;
-    },
-    postRender: function () {
-      var self = this, settings = self.settings;
-      self._super();
-      if (!self.parent() && (settings.width || settings.height)) {
-        self.initLayoutRect();
-        self.repaint();
-      }
-      if (settings.autofocus) {
-        self.focus();
-      }
-    },
-    bindStates: function () {
-      var self = this;
-      function disable(state) {
-        self.aria('disabled', state);
-        self.classes.toggle('disabled', state);
-      }
-      function active(state) {
-        self.aria('pressed', state);
-        self.classes.toggle('active', state);
-      }
-      self.state.on('change:disabled', function (e) {
-        disable(e.value);
-      });
-      self.state.on('change:active', function (e) {
-        active(e.value);
-      });
-      if (self.state.get('disabled')) {
-        disable(true);
-      }
-      if (self.state.get('active')) {
-        active(true);
-      }
-      return self._super();
-    },
-    remove: function () {
-      this._super();
-      if (this._tooltip) {
-        this._tooltip.remove();
-        this._tooltip = null;
-      }
-    }
-  });
+    });
 
-  var Progress = Widget.extend({
-    Defaults: { value: 0 },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('progress');
-      if (!self.settings.filter) {
-        self.settings.filter = function (value) {
-          return Math.round(value);
-        };
-      }
-    },
-    renderHtml: function () {
-      var self = this, id = self._id, prefix = this.classPrefix;
-      return '<div id="' + id + '" class="' + self.classes + '">' + '<div class="' + prefix + 'bar-container">' + '<div class="' + prefix + 'bar"></div>' + '</div>' + '<div class="' + prefix + 'text">0%</div>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.value(self.settings.value);
-      return self;
-    },
-    bindStates: function () {
-      var self = this;
-      function setValue(value) {
-        value = self.settings.filter(value);
-        self.getEl().lastChild.innerHTML = value + '%';
-        self.getEl().firstChild.firstChild.style.width = value + '%';
-      }
-      self.state.on('change:value', function (e) {
-        setValue(e.value);
-      });
-      setValue(self.state.get('value'));
-      return self._super();
-    }
-  });
-
-  var updateLiveRegion = function (ctx, text) {
-    ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');
-  };
-  var Notification = Control$1.extend({
-    Mixins: [$_3fnh5iukjjgwefpt],
-    Defaults: { classes: 'widget notification' },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.maxWidth = settings.maxWidth;
-      if (settings.text) {
-        self.text(settings.text);
-      }
-      if (settings.icon) {
-        self.icon = settings.icon;
-      }
-      if (settings.color) {
-        self.color = settings.color;
-      }
-      if (settings.type) {
-        self.classes.add('notification-' + settings.type);
-      }
-      if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {
-        self.closeButton = false;
-      } else {
-        self.classes.add('has-close');
-        self.closeButton = true;
-      }
-      if (settings.progressBar) {
-        self.progressBar = new Progress();
-      }
-      self.on('click', function (e) {
-        if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {
-          self.close();
+    var Progress = Widget.extend({
+      Defaults: { value: 0 },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('progress');
+        if (!self.settings.filter) {
+          self.settings.filter = function (value) {
+            return Math.round(value);
+          };
         }
-      });
-    },
-    renderHtml: function () {
-      var self = this;
-      var prefix = self.classPrefix;
-      var icon = '', closeButton = '', progressBar = '', notificationStyle = '';
-      if (self.icon) {
-        icon = '<i class="' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '"></i>';
-      }
-      notificationStyle = ' style="max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';"' : '"');
-      if (self.closeButton) {
-        closeButton = '<button type="button" class="' + prefix + 'close" aria-hidden="true">\xD7</button>';
-      }
-      if (self.progressBar) {
-        progressBar = self.progressBar.renderHtml();
-      }
-      return '<div id="' + self._id + '" class="' + self.classes + '"' + notificationStyle + ' role="presentation">' + icon + '<div class="' + prefix + 'notification-inner">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<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 self = this;
-      global$7.setTimeout(function () {
-        self.$el.addClass(self.classPrefix + 'in');
-        updateLiveRegion(self, self.state.get('text'));
-      }, 100);
-      return self._super();
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.getEl().firstChild.innerHTML = e.value;
-        updateLiveRegion(self, e.value);
-      });
-      if (self.progressBar) {
-        self.progressBar.bindStates();
-        self.progressBar.state.on('change:value', function (e) {
-          updateLiveRegion(self, self.state.get('text'));
+      },
+      renderHtml: function () {
+        var self = this, id = self._id, prefix = this.classPrefix;
+        return '<div id="' + id + '" class="' + self.classes + '">' + '<div class="' + prefix + 'bar-container">' + '<div class="' + prefix + 'bar"></div>' + '</div>' + '<div class="' + prefix + 'text">0%</div>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.value(self.settings.value);
+        return self;
+      },
+      bindStates: function () {
+        var self = this;
+        function setValue(value) {
+          value = self.settings.filter(value);
+          self.getEl().lastChild.innerHTML = value + '%';
+          self.getEl().firstChild.firstChild.style.width = value + '%';
+        }
+        self.state.on('change:value', function (e) {
+          setValue(e.value);
         });
+        setValue(self.state.get('value'));
+        return self._super();
       }
-      return self._super();
-    },
-    close: function () {
-      var self = this;
-      if (!self.fire('close').isDefaultPrevented()) {
-        self.remove();
-      }
-      return self;
-    },
-    repaint: function () {
-      var self = this;
-      var style, rect;
-      style = self.getEl().style;
-      rect = self._layoutRect;
-      style.left = rect.x + 'px';
-      style.top = rect.y + 'px';
-      style.zIndex = 65535 - 1;
-    }
-  });
+    });
 
-  function NotificationManagerImpl (editor) {
-    var getEditorContainer = function (editor) {
-      return editor.inline ? editor.getElement() : editor.getContentAreaContainer();
+    var updateLiveRegion = function (ctx, text) {
+      ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');
     };
-    var getContainerWidth = function () {
-      var container = getEditorContainer(editor);
-      return funcs.getSize(container).width;
-    };
-    var prePositionNotifications = function (notifications) {
-      each(notifications, function (notification) {
-        notification.moveTo(0, 0);
-      });
-    };
-    var positionNotifications = function (notifications) {
-      if (notifications.length > 0) {
-        var firstItem = notifications.slice(0, 1)[0];
-        var container = getEditorContainer(editor);
-        firstItem.moveRel(container, 'tc-tc');
-        each(notifications, function (notification, index) {
-          if (index > 0) {
-            notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');
+    var Notification = Control$1.extend({
+      Mixins: [Movable],
+      Defaults: { classes: 'widget notification' },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.maxWidth = settings.maxWidth;
+        if (settings.text) {
+          self.text(settings.text);
+        }
+        if (settings.icon) {
+          self.icon = settings.icon;
+        }
+        if (settings.color) {
+          self.color = settings.color;
+        }
+        if (settings.type) {
+          self.classes.add('notification-' + settings.type);
+        }
+        if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {
+          self.closeButton = false;
+        } else {
+          self.classes.add('has-close');
+          self.closeButton = true;
+        }
+        if (settings.progressBar) {
+          self.progressBar = new Progress();
+        }
+        self.on('click', function (e) {
+          if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {
+            self.close();
           }
         });
-      }
-    };
-    var reposition = function (notifications) {
-      prePositionNotifications(notifications);
-      positionNotifications(notifications);
-    };
-    var open = function (args, closeCallback) {
-      var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });
-      var notif = new Notification(extendedArgs);
-      notif.args = extendedArgs;
-      if (extendedArgs.timeout > 0) {
-        notif.timer = setTimeout(function () {
-          notif.close();
-          closeCallback();
-        }, extendedArgs.timeout);
-      }
-      notif.on('close', function () {
-        closeCallback();
-      });
-      notif.renderTo();
-      return notif;
-    };
-    var close = function (notification) {
-      notification.close();
-    };
-    var getArgs = function (notification) {
-      return notification.args;
-    };
-    return {
-      open: open,
-      close: close,
-      reposition: reposition,
-      getArgs: getArgs
-    };
-  }
-
-  var windows = [];
-  var oldMetaValue = '';
-  function toggleFullScreenState(state) {
-    var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';
-    var viewport = global$9('meta[name=viewport]')[0], contentValue;
-    if (global$8.overrideViewPort === false) {
-      return;
-    }
-    if (!viewport) {
-      viewport = document.createElement('meta');
-      viewport.setAttribute('name', 'viewport');
-      document.getElementsByTagName('head')[0].appendChild(viewport);
-    }
-    contentValue = viewport.getAttribute('content');
-    if (contentValue && typeof oldMetaValue !== 'undefined') {
-      oldMetaValue = contentValue;
-    }
-    viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);
-  }
-  function toggleBodyFullScreenClasses(classPrefix, state) {
-    if (checkFullscreenWindows() && state === false) {
-      global$9([
-        document.documentElement,
-        document.body
-      ]).removeClass(classPrefix + 'fullscreen');
-    }
-  }
-  function checkFullscreenWindows() {
-    for (var i = 0; i < windows.length; i++) {
-      if (windows[i]._fullscreen) {
-        return true;
-      }
-    }
-    return false;
-  }
-  function handleWindowResize() {
-    if (!global$8.desktop) {
-      var lastSize_1 = {
-        w: window.innerWidth,
-        h: window.innerHeight
-      };
-      global$7.setInterval(function () {
-        var w = window.innerWidth, h = window.innerHeight;
-        if (lastSize_1.w !== w || lastSize_1.h !== h) {
-          lastSize_1 = {
-            w: w,
-            h: h
-          };
-          global$9(window).trigger('resize');
+      },
+      renderHtml: function () {
+        var self = this;
+        var prefix = self.classPrefix;
+        var icon = '', closeButton = '', progressBar = '', notificationStyle = '';
+        if (self.icon) {
+          icon = '<i class="' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '"></i>';
         }
-      }, 100);
-    }
-    function reposition() {
-      var i;
-      var rect = funcs.getWindowSize();
-      var layoutRect;
-      for (i = 0; i < windows.length; i++) {
-        layoutRect = windows[i].layoutRect();
-        windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));
-      }
-    }
-    global$9(window).on('resize', reposition);
-  }
-  var Window$$1 = FloatPanel.extend({
-    modal: true,
-    Defaults: {
-      border: 1,
-      layout: 'flex',
-      containerCls: 'panel',
-      role: 'dialog',
-      callbacks: {
-        submit: function () {
-          this.fire('submit', { data: this.toJSON() });
-        },
-        close: function () {
-          this.close();
+        notificationStyle = ' style="max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';"' : '"');
+        if (self.closeButton) {
+          closeButton = '<button type="button" class="' + prefix + 'close" aria-hidden="true">\xD7</button>';
         }
-      }
-    },
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      if (self$$1.isRtl()) {
-        self$$1.classes.add('rtl');
-      }
-      self$$1.classes.add('window');
-      self$$1.bodyClasses.add('window-body');
-      self$$1.state.set('fixed', true);
-      if (settings.buttons) {
-        self$$1.statusbar = new Panel({
-          layout: 'flex',
-          border: '1 0 0 0',
-          spacing: 3,
-          padding: 10,
-          align: 'center',
-          pack: self$$1.isRtl() ? 'start' : 'end',
-          defaults: { type: 'button' },
-          items: settings.buttons
+        if (self.progressBar) {
+          progressBar = self.progressBar.renderHtml();
+        }
+        return '<div id="' + self._id + '" class="' + self.classes + '"' + notificationStyle + ' role="presentation">' + icon + '<div class="' + prefix + 'notification-inner">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<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 self = this;
+        global$7.setTimeout(function () {
+          self.$el.addClass(self.classPrefix + 'in');
+          updateLiveRegion(self, self.state.get('text'));
+        }, 100);
+        return self._super();
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.getEl().firstChild.innerHTML = e.value;
+          updateLiveRegion(self, e.value);
         });
-        self$$1.statusbar.classes.add('foot');
-        self$$1.statusbar.parent(self$$1);
-      }
-      self$$1.on('click', function (e) {
-        var closeClass = self$$1.classPrefix + 'close';
-        if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {
-          self$$1.close();
+        if (self.progressBar) {
+          self.progressBar.bindStates();
+          self.progressBar.state.on('change:value', function (e) {
+            updateLiveRegion(self, self.state.get('text'));
+          });
         }
-      });
-      self$$1.on('cancel', function () {
-        self$$1.close();
-      });
-      self$$1.on('move', function (e) {
-        if (e.control === self$$1) {
-          FloatPanel.hideAll();
+        return self._super();
+      },
+      close: function () {
+        var self = this;
+        if (!self.fire('close').isDefaultPrevented()) {
+          self.remove();
         }
-      });
-      self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
-      self$$1.aria('label', settings.title);
-      self$$1._fullscreen = false;
-    },
-    recalc: function () {
-      var self$$1 = this;
-      var statusbar$$1 = self$$1.statusbar;
-      var layoutRect, width, x, needsRecalc;
-      if (self$$1._fullscreen) {
-        self$$1.layoutRect(funcs.getWindowSize());
-        self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;
+        return self;
+      },
+      repaint: function () {
+        var self = this;
+        var style, rect;
+        style = self.getEl().style;
+        rect = self._layoutRect;
+        style.left = rect.x + 'px';
+        style.top = rect.y + 'px';
+        style.zIndex = 65535 - 1;
       }
-      self$$1._super();
-      layoutRect = self$$1.layoutRect();
-      if (self$$1.settings.title && !self$$1._fullscreen) {
-        width = layoutRect.headerW;
-        if (width > layoutRect.w) {
-          x = layoutRect.x - Math.max(0, width / 2);
-          self$$1.layoutRect({
-            w: width,
-            x: x
+    });
+
+    function NotificationManagerImpl (editor) {
+      var getEditorContainer = function (editor) {
+        return editor.inline ? editor.getElement() : editor.getContentAreaContainer();
+      };
+      var getContainerWidth = function () {
+        var container = getEditorContainer(editor);
+        return funcs.getSize(container).width;
+      };
+      var prePositionNotifications = function (notifications) {
+        each(notifications, function (notification) {
+          notification.moveTo(0, 0);
+        });
+      };
+      var positionNotifications = function (notifications) {
+        if (notifications.length > 0) {
+          var firstItem = notifications.slice(0, 1)[0];
+          var container = getEditorContainer(editor);
+          firstItem.moveRel(container, 'tc-tc');
+          each(notifications, function (notification, index) {
+            if (index > 0) {
+              notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');
+            }
           });
-          needsRecalc = true;
         }
-      }
-      if (statusbar$$1) {
-        statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();
-        width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;
-        if (width > layoutRect.w) {
-          x = layoutRect.x - Math.max(0, width - layoutRect.w);
-          self$$1.layoutRect({
-            w: width,
-            x: x
-          });
-          needsRecalc = true;
+      };
+      var reposition = function (notifications) {
+        prePositionNotifications(notifications);
+        positionNotifications(notifications);
+      };
+      var open = function (args, closeCallback) {
+        var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });
+        var notif = new Notification(extendedArgs);
+        notif.args = extendedArgs;
+        if (extendedArgs.timeout > 0) {
+          notif.timer = setTimeout(function () {
+            notif.close();
+            closeCallback();
+          }, extendedArgs.timeout);
         }
+        notif.on('close', function () {
+          closeCallback();
+        });
+        notif.renderTo();
+        return notif;
+      };
+      var close = function (notification) {
+        notification.close();
+      };
+      var getArgs = function (notification) {
+        return notification.args;
+      };
+      return {
+        open: open,
+        close: close,
+        reposition: reposition,
+        getArgs: getArgs
+      };
+    }
+
+    var windows = [];
+    var oldMetaValue = '';
+    function toggleFullScreenState(state) {
+      var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';
+      var viewport = global$9('meta[name=viewport]')[0], contentValue;
+      if (global$8.overrideViewPort === false) {
+        return;
       }
-      if (needsRecalc) {
-        self$$1.recalc();
+      if (!viewport) {
+        viewport = document.createElement('meta');
+        viewport.setAttribute('name', 'viewport');
+        document.getElementsByTagName('head')[0].appendChild(viewport);
       }
-    },
-    initLayoutRect: function () {
-      var self$$1 = this;
-      var layoutRect = self$$1._super();
-      var deltaH = 0, headEl;
-      if (self$$1.settings.title && !self$$1._fullscreen) {
-        headEl = self$$1.getEl('head');
-        var size = funcs.getSize(headEl);
-        layoutRect.headerW = size.width;
-        layoutRect.headerH = size.height;
-        deltaH += layoutRect.headerH;
+      contentValue = viewport.getAttribute('content');
+      if (contentValue && typeof oldMetaValue !== 'undefined') {
+        oldMetaValue = contentValue;
       }
-      if (self$$1.statusbar) {
-        deltaH += self$$1.statusbar.layoutRect().h;
+      viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);
+    }
+    function toggleBodyFullScreenClasses(classPrefix, state) {
+      if (checkFullscreenWindows() && state === false) {
+        global$9([
+          document.documentElement,
+          document.body
+        ]).removeClass(classPrefix + 'fullscreen');
       }
-      layoutRect.deltaH += deltaH;
-      layoutRect.minH += deltaH;
-      layoutRect.h += deltaH;
-      var rect = funcs.getWindowSize();
-      layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
-      layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
-      return layoutRect;
-    },
-    renderHtml: function () {
-      var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;
-      var settings = self$$1.settings;
-      var headerHtml = '', footerHtml = '', html = settings.html;
-      self$$1.preRender();
-      layout.preRender(self$$1);
-      if (settings.title) {
-        headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self$$1.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
+    }
+    function checkFullscreenWindows() {
+      for (var i = 0; i < windows.length; i++) {
+        if (windows[i]._fullscreen) {
+          return true;
+        }
       }
-      if (settings.url) {
-        html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
+      return false;
+    }
+    function handleWindowResize() {
+      if (!global$8.desktop) {
+        var lastSize_1 = {
+          w: window.innerWidth,
+          h: window.innerHeight
+        };
+        global$7.setInterval(function () {
+          var w = window.innerWidth, h = window.innerHeight;
+          if (lastSize_1.w !== w || lastSize_1.h !== h) {
+            lastSize_1 = {
+              w: w,
+              h: h
+            };
+            global$9(window).trigger('resize');
+          }
+        }, 100);
       }
-      if (typeof html === 'undefined') {
-        html = layout.renderHtml(self$$1);
+      function reposition() {
+        var i;
+        var rect = funcs.getWindowSize();
+        var layoutRect;
+        for (i = 0; i < windows.length; i++) {
+          layoutRect = windows[i].layoutRect();
+          windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));
+        }
       }
-      if (self$$1.statusbar) {
-        footerHtml = self$$1.statusbar.renderHtml();
-      }
-      return '<div id="' + id + '" class="' + self$$1.classes + '" hidefocus="1">' + '<div class="' + self$$1.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self$$1.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
-    },
-    fullscreen: function (state) {
-      var self$$1 = this;
-      var documentElement = document.documentElement;
-      var slowRendering;
-      var prefix = self$$1.classPrefix;
-      var layoutRect;
-      if (state !== self$$1._fullscreen) {
-        global$9(window).on('resize', function () {
-          var time;
-          if (self$$1._fullscreen) {
-            if (!slowRendering) {
-              time = new Date().getTime();
-              var rect = funcs.getWindowSize();
-              self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
-              if (new Date().getTime() - time > 50) {
-                slowRendering = true;
-              }
-            } else {
-              if (!self$$1._timer) {
-                self$$1._timer = global$7.setTimeout(function () {
-                  var rect = funcs.getWindowSize();
-                  self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
-                  self$$1._timer = 0;
-                }, 50);
-              }
-            }
+      global$9(window).on('resize', reposition);
+    }
+    var Window$$1 = FloatPanel.extend({
+      modal: true,
+      Defaults: {
+        border: 1,
+        layout: 'flex',
+        containerCls: 'panel',
+        role: 'dialog',
+        callbacks: {
+          submit: function () {
+            this.fire('submit', { data: this.toJSON() });
+          },
+          close: function () {
+            this.close();
           }
+        }
+      },
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        if (self$$1.isRtl()) {
+          self$$1.classes.add('rtl');
+        }
+        self$$1.classes.add('window');
+        self$$1.bodyClasses.add('window-body');
+        self$$1.state.set('fixed', true);
+        if (settings.buttons) {
+          self$$1.statusbar = new Panel({
+            layout: 'flex',
+            border: '1 0 0 0',
+            spacing: 3,
+            padding: 10,
+            align: 'center',
+            pack: self$$1.isRtl() ? 'start' : 'end',
+            defaults: { type: 'button' },
+            items: settings.buttons
+          });
+          self$$1.statusbar.classes.add('foot');
+          self$$1.statusbar.parent(self$$1);
+        }
+        self$$1.on('click', function (e) {
+          var closeClass = self$$1.classPrefix + 'close';
+          if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {
+            self$$1.close();
+          }
         });
+        self$$1.on('cancel', function () {
+          self$$1.close();
+        });
+        self$$1.on('move', function (e) {
+          if (e.control === self$$1) {
+            FloatPanel.hideAll();
+          }
+        });
+        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');
+        self$$1.aria('label', settings.title);
+        self$$1._fullscreen = false;
+      },
+      recalc: function () {
+        var self$$1 = this;
+        var statusbar$$1 = self$$1.statusbar;
+        var layoutRect, width, x, needsRecalc;
+        if (self$$1._fullscreen) {
+          self$$1.layoutRect(funcs.getWindowSize());
+          self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;
+        }
+        self$$1._super();
         layoutRect = self$$1.layoutRect();
-        self$$1._fullscreen = state;
-        if (!state) {
-          self$$1.borderBox = $_fbr241uqjjgwefqo.parseBox(self$$1.settings.border);
-          self$$1.getEl('head').style.display = '';
-          layoutRect.deltaH += layoutRect.headerH;
-          global$9([
-            documentElement,
-            document.body
-          ]).removeClass(prefix + 'fullscreen');
-          self$$1.classes.remove('fullscreen');
-          self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);
-        } else {
-          self$$1._initial = {
-            x: layoutRect.x,
-            y: layoutRect.y,
-            w: layoutRect.w,
-            h: layoutRect.h
-          };
-          self$$1.borderBox = $_fbr241uqjjgwefqo.parseBox('0');
-          self$$1.getEl('head').style.display = 'none';
-          layoutRect.deltaH -= layoutRect.headerH + 2;
-          global$9([
-            documentElement,
-            document.body
-          ]).addClass(prefix + 'fullscreen');
-          self$$1.classes.add('fullscreen');
-          var rect = funcs.getWindowSize();
-          self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
+        if (self$$1.settings.title && !self$$1._fullscreen) {
+          width = layoutRect.headerW;
+          if (width > layoutRect.w) {
+            x = layoutRect.x - Math.max(0, width / 2);
+            self$$1.layoutRect({
+              w: width,
+              x: x
+            });
+            needsRecalc = true;
+          }
         }
-      }
-      return self$$1.reflow();
-    },
-    postRender: function () {
-      var self$$1 = this;
-      var startPos;
-      setTimeout(function () {
-        self$$1.classes.add('in');
-        self$$1.fire('open');
-      }, 0);
-      self$$1._super();
-      if (self$$1.statusbar) {
-        self$$1.statusbar.postRender();
-      }
-      self$$1.focus();
-      this.dragHelper = new DragHelper(self$$1._id + '-dragh', {
-        start: function () {
-          startPos = {
-            x: self$$1.layoutRect().x,
-            y: self$$1.layoutRect().y
-          };
-        },
-        drag: function (e) {
-          self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
+        if (statusbar$$1) {
+          statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();
+          width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;
+          if (width > layoutRect.w) {
+            x = layoutRect.x - Math.max(0, width - layoutRect.w);
+            self$$1.layoutRect({
+              w: width,
+              x: x
+            });
+            needsRecalc = true;
+          }
         }
-      });
-      self$$1.on('submit', function (e) {
-        if (!e.isDefaultPrevented()) {
-          self$$1.close();
+        if (needsRecalc) {
+          self$$1.recalc();
         }
-      });
-      windows.push(self$$1);
-      toggleFullScreenState(true);
-    },
-    submit: function () {
-      return this.fire('submit', { data: this.toJSON() });
-    },
-    remove: function () {
-      var self$$1 = this;
-      var i;
-      self$$1.dragHelper.destroy();
-      self$$1._super();
-      if (self$$1.statusbar) {
-        this.statusbar.remove();
-      }
-      toggleBodyFullScreenClasses(self$$1.classPrefix, false);
-      i = windows.length;
-      while (i--) {
-        if (windows[i] === self$$1) {
-          windows.splice(i, 1);
+      },
+      initLayoutRect: function () {
+        var self$$1 = this;
+        var layoutRect = self$$1._super();
+        var deltaH = 0, headEl;
+        if (self$$1.settings.title && !self$$1._fullscreen) {
+          headEl = self$$1.getEl('head');
+          var size = funcs.getSize(headEl);
+          layoutRect.headerW = size.width;
+          layoutRect.headerH = size.height;
+          deltaH += layoutRect.headerH;
         }
-      }
-      toggleFullScreenState(windows.length > 0);
-    },
-    getContentWindow: function () {
-      var ifr = this.getEl().getElementsByTagName('iframe')[0];
-      return ifr ? ifr.contentWindow : null;
-    }
-  });
-  handleWindowResize();
-
-  var MessageBox = Window$$1.extend({
-    init: function (settings) {
-      settings = {
-        border: 1,
-        padding: 20,
-        layout: 'flex',
-        pack: 'center',
-        align: 'center',
-        containerCls: 'panel',
-        autoScroll: true,
-        buttons: {
-          type: 'button',
-          text: 'Ok',
-          action: 'ok'
-        },
-        items: {
-          type: 'label',
-          multiline: true,
-          maxWidth: 500,
-          maxHeight: 200
+        if (self$$1.statusbar) {
+          deltaH += self$$1.statusbar.layoutRect().h;
         }
-      };
-      this._super(settings);
-    },
-    Statics: {
-      OK: 1,
-      OK_CANCEL: 2,
-      YES_NO: 3,
-      YES_NO_CANCEL: 4,
-      msgBox: function (settings) {
-        var buttons;
-        var callback = settings.callback || function () {
-        };
-        function createButton(text, status$$1, primary) {
-          return {
-            type: 'button',
-            text: text,
-            subtype: primary ? 'primary' : '',
-            onClick: function (e) {
-              e.control.parents()[1].close();
-              callback(status$$1);
+        layoutRect.deltaH += deltaH;
+        layoutRect.minH += deltaH;
+        layoutRect.h += deltaH;
+        var rect = funcs.getWindowSize();
+        layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);
+        layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);
+        return layoutRect;
+      },
+      renderHtml: function () {
+        var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;
+        var settings = self$$1.settings;
+        var headerHtml = '', footerHtml = '', html = settings.html;
+        self$$1.preRender();
+        layout.preRender(self$$1);
+        if (settings.title) {
+          headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self$$1.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';
+        }
+        if (settings.url) {
+          html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
+        }
+        if (typeof html === 'undefined') {
+          html = layout.renderHtml(self$$1);
+        }
+        if (self$$1.statusbar) {
+          footerHtml = self$$1.statusbar.renderHtml();
+        }
+        return '<div id="' + id + '" class="' + self$$1.classes + '" hidefocus="1">' + '<div class="' + self$$1.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self$$1.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';
+      },
+      fullscreen: function (state) {
+        var self$$1 = this;
+        var documentElement = document.documentElement;
+        var slowRendering;
+        var prefix = self$$1.classPrefix;
+        var layoutRect;
+        if (state !== self$$1._fullscreen) {
+          global$9(window).on('resize', function () {
+            var time;
+            if (self$$1._fullscreen) {
+              if (!slowRendering) {
+                time = new Date().getTime();
+                var rect = funcs.getWindowSize();
+                self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
+                if (new Date().getTime() - time > 50) {
+                  slowRendering = true;
+                }
+              } else {
+                if (!self$$1._timer) {
+                  self$$1._timer = global$7.setTimeout(function () {
+                    var rect = funcs.getWindowSize();
+                    self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
+                    self$$1._timer = 0;
+                  }, 50);
+                }
+              }
             }
-          };
+          });
+          layoutRect = self$$1.layoutRect();
+          self$$1._fullscreen = state;
+          if (!state) {
+            self$$1.borderBox = BoxUtils.parseBox(self$$1.settings.border);
+            self$$1.getEl('head').style.display = '';
+            layoutRect.deltaH += layoutRect.headerH;
+            global$9([
+              documentElement,
+              document.body
+            ]).removeClass(prefix + 'fullscreen');
+            self$$1.classes.remove('fullscreen');
+            self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);
+          } else {
+            self$$1._initial = {
+              x: layoutRect.x,
+              y: layoutRect.y,
+              w: layoutRect.w,
+              h: layoutRect.h
+            };
+            self$$1.borderBox = BoxUtils.parseBox('0');
+            self$$1.getEl('head').style.display = 'none';
+            layoutRect.deltaH -= layoutRect.headerH + 2;
+            global$9([
+              documentElement,
+              document.body
+            ]).addClass(prefix + 'fullscreen');
+            self$$1.classes.add('fullscreen');
+            var rect = funcs.getWindowSize();
+            self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);
+          }
         }
-        switch (settings.buttons) {
-        case MessageBox.OK_CANCEL:
-          buttons = [
-            createButton('Ok', true, true),
-            createButton('Cancel', false)
-          ];
-          break;
-        case MessageBox.YES_NO:
-        case MessageBox.YES_NO_CANCEL:
-          buttons = [
-            createButton('Yes', 1, true),
-            createButton('No', 0)
-          ];
-          if (settings.buttons === MessageBox.YES_NO_CANCEL) {
-            buttons.push(createButton('Cancel', -1));
+        return self$$1.reflow();
+      },
+      postRender: function () {
+        var self$$1 = this;
+        var startPos;
+        setTimeout(function () {
+          self$$1.classes.add('in');
+          self$$1.fire('open');
+        }, 0);
+        self$$1._super();
+        if (self$$1.statusbar) {
+          self$$1.statusbar.postRender();
+        }
+        self$$1.focus();
+        this.dragHelper = new DragHelper(self$$1._id + '-dragh', {
+          start: function () {
+            startPos = {
+              x: self$$1.layoutRect().x,
+              y: self$$1.layoutRect().y
+            };
+          },
+          drag: function (e) {
+            self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
           }
-          break;
-        default:
-          buttons = [createButton('Ok', true, true)];
-          break;
+        });
+        self$$1.on('submit', function (e) {
+          if (!e.isDefaultPrevented()) {
+            self$$1.close();
+          }
+        });
+        windows.push(self$$1);
+        toggleFullScreenState(true);
+      },
+      submit: function () {
+        return this.fire('submit', { data: this.toJSON() });
+      },
+      remove: function () {
+        var self$$1 = this;
+        var i;
+        self$$1.dragHelper.destroy();
+        self$$1._super();
+        if (self$$1.statusbar) {
+          this.statusbar.remove();
         }
-        return new Window$$1({
+        toggleBodyFullScreenClasses(self$$1.classPrefix, false);
+        i = windows.length;
+        while (i--) {
+          if (windows[i] === self$$1) {
+            windows.splice(i, 1);
+          }
+        }
+        toggleFullScreenState(windows.length > 0);
+      },
+      getContentWindow: function () {
+        var ifr = this.getEl().getElementsByTagName('iframe')[0];
+        return ifr ? ifr.contentWindow : null;
+      }
+    });
+    handleWindowResize();
+
+    var MessageBox = Window$$1.extend({
+      init: function (settings) {
+        settings = {
+          border: 1,
           padding: 20,
-          x: settings.x,
-          y: settings.y,
-          minWidth: 300,
-          minHeight: 100,
           layout: 'flex',
           pack: 'center',
           align: 'center',
-          buttons: buttons,
-          title: settings.title,
-          role: 'alertdialog',
+          containerCls: 'panel',
+          autoScroll: true,
+          buttons: {
+            type: 'button',
+            text: 'Ok',
+            action: 'ok'
+          },
           items: {
             type: 'label',
             multiline: true,
             maxWidth: 500,
-            maxHeight: 200,
-            text: settings.text
-          },
-          onPostRender: function () {
-            this.aria('describedby', this.items()[0]._id);
-          },
-          onClose: settings.onClose,
-          onCancel: function () {
-            callback(false);
+            maxHeight: 200
           }
-        }).renderTo(document.body).reflow();
+        };
+        this._super(settings);
       },
-      alert: function (settings, callback) {
-        if (typeof settings === 'string') {
-          settings = { text: settings };
-        }
-        settings.callback = callback;
-        return MessageBox.msgBox(settings);
-      },
-      confirm: function (settings, callback) {
-        if (typeof settings === 'string') {
-          settings = { text: settings };
-        }
-        settings.callback = callback;
-        settings.buttons = MessageBox.OK_CANCEL;
-        return MessageBox.msgBox(settings);
-      }
-    }
-  });
-
-  function WindowManagerImpl (editor) {
-    var open$$1 = function (args, params, closeCallback) {
-      var win;
-      args.title = args.title || ' ';
-      args.url = args.url || args.file;
-      if (args.url) {
-        args.width = parseInt(args.width || 320, 10);
-        args.height = parseInt(args.height || 240, 10);
-      }
-      if (args.body) {
-        args.items = {
-          defaults: args.defaults,
-          type: args.bodyType || 'form',
-          items: args.body,
-          data: args.data,
-          callbacks: args.commands
-        };
-      }
-      if (!args.url && !args.buttons) {
-        args.buttons = [
-          {
-            text: 'Ok',
-            subtype: 'primary',
-            onclick: function () {
-              win.find('form')[0].submit();
+      Statics: {
+        OK: 1,
+        OK_CANCEL: 2,
+        YES_NO: 3,
+        YES_NO_CANCEL: 4,
+        msgBox: function (settings) {
+          var buttons;
+          var callback = settings.callback || function () {
+          };
+          function createButton(text, status$$1, primary) {
+            return {
+              type: 'button',
+              text: text,
+              subtype: primary ? 'primary' : '',
+              onClick: function (e) {
+                e.control.parents()[1].close();
+                callback(status$$1);
+              }
+            };
+          }
+          switch (settings.buttons) {
+          case MessageBox.OK_CANCEL:
+            buttons = [
+              createButton('Ok', true, true),
+              createButton('Cancel', false)
+            ];
+            break;
+          case MessageBox.YES_NO:
+          case MessageBox.YES_NO_CANCEL:
+            buttons = [
+              createButton('Yes', 1, true),
+              createButton('No', 0)
+            ];
+            if (settings.buttons === MessageBox.YES_NO_CANCEL) {
+              buttons.push(createButton('Cancel', -1));
             }
-          },
-          {
-            text: 'Cancel',
-            onclick: function () {
-              win.close();
+            break;
+          default:
+            buttons = [createButton('Ok', true, true)];
+            break;
+          }
+          return new Window$$1({
+            padding: 20,
+            x: settings.x,
+            y: settings.y,
+            minWidth: 300,
+            minHeight: 100,
+            layout: 'flex',
+            pack: 'center',
+            align: 'center',
+            buttons: buttons,
+            title: settings.title,
+            role: 'alertdialog',
+            items: {
+              type: 'label',
+              multiline: true,
+              maxWidth: 500,
+              maxHeight: 200,
+              text: settings.text
+            },
+            onPostRender: function () {
+              this.aria('describedby', this.items()[0]._id);
+            },
+            onClose: settings.onClose,
+            onCancel: function () {
+              callback(false);
             }
+          }).renderTo(document.body).reflow();
+        },
+        alert: function (settings, callback) {
+          if (typeof settings === 'string') {
+            settings = { text: settings };
           }
-        ];
+          settings.callback = callback;
+          return MessageBox.msgBox(settings);
+        },
+        confirm: function (settings, callback) {
+          if (typeof settings === 'string') {
+            settings = { text: settings };
+          }
+          settings.callback = callback;
+          settings.buttons = MessageBox.OK_CANCEL;
+          return MessageBox.msgBox(settings);
+        }
       }
-      win = new Window$$1(args);
-      win.on('close', function () {
-        closeCallback(win);
-      });
-      if (args.data) {
-        win.on('postRender', function () {
-          this.find('*').each(function (ctrl) {
-            var name$$1 = ctrl.name();
-            if (name$$1 in args.data) {
-              ctrl.value(args.data[name$$1]);
+    });
+
+    function WindowManagerImpl (editor) {
+      var open$$1 = function (args, params, closeCallback) {
+        var win;
+        args.title = args.title || ' ';
+        args.url = args.url || args.file;
+        if (args.url) {
+          args.width = parseInt(args.width || 320, 10);
+          args.height = parseInt(args.height || 240, 10);
+        }
+        if (args.body) {
+          args.items = {
+            defaults: args.defaults,
+            type: args.bodyType || 'form',
+            items: args.body,
+            data: args.data,
+            callbacks: args.commands
+          };
+        }
+        if (!args.url && !args.buttons) {
+          args.buttons = [
+            {
+              text: 'Ok',
+              subtype: 'primary',
+              onclick: function () {
+                win.find('form')[0].submit();
+              }
+            },
+            {
+              text: 'Cancel',
+              onclick: function () {
+                win.close();
+              }
             }
+          ];
+        }
+        win = new Window$$1(args);
+        win.on('close', function () {
+          closeCallback(win);
+        });
+        if (args.data) {
+          win.on('postRender', function () {
+            this.find('*').each(function (ctrl) {
+              var name$$1 = ctrl.name();
+              if (name$$1 in args.data) {
+                ctrl.value(args.data[name$$1]);
+              }
+            });
           });
+        }
+        win.features = args || {};
+        win.params = params || {};
+        win = win.renderTo(document.body).reflow();
+        return win;
+      };
+      var alert$$1 = function (message, choiceCallback, closeCallback) {
+        var win;
+        win = MessageBox.alert(message, function () {
+          choiceCallback();
         });
-      }
-      win.features = args || {};
-      win.params = params || {};
-      win = win.renderTo(document.body).reflow();
-      return win;
-    };
-    var alert$$1 = function (message, choiceCallback, closeCallback) {
-      var win;
-      win = MessageBox.alert(message, function () {
-        choiceCallback();
-      });
-      win.on('close', function () {
-        closeCallback(win);
-      });
-      return win;
-    };
-    var confirm$$1 = function (message, choiceCallback, closeCallback) {
-      var win;
-      win = MessageBox.confirm(message, function (state) {
-        choiceCallback(state);
-      });
-      win.on('close', function () {
-        closeCallback(win);
-      });
-      return win;
-    };
-    var close$$1 = function (window$$1) {
-      window$$1.close();
-    };
-    var getParams = function (window$$1) {
-      return window$$1.params;
-    };
-    var setParams = function (window$$1, params) {
-      window$$1.params = params;
-    };
-    return {
-      open: open$$1,
-      alert: alert$$1,
-      confirm: confirm$$1,
-      close: close$$1,
-      getParams: getParams,
-      setParams: setParams
-    };
-  }
+        win.on('close', function () {
+          closeCallback(win);
+        });
+        return win;
+      };
+      var confirm$$1 = function (message, choiceCallback, closeCallback) {
+        var win;
+        win = MessageBox.confirm(message, function (state) {
+          choiceCallback(state);
+        });
+        win.on('close', function () {
+          closeCallback(win);
+        });
+        return win;
+      };
+      var close$$1 = function (window$$1) {
+        window$$1.close();
+      };
+      var getParams = function (window$$1) {
+        return window$$1.params;
+      };
+      var setParams = function (window$$1, params) {
+        window$$1.params = params;
+      };
+      return {
+        open: open$$1,
+        alert: alert$$1,
+        confirm: confirm$$1,
+        close: close$$1,
+        getParams: getParams,
+        setParams: setParams
+      };
+    }
 
-  var get = function (editor) {
-    var renderUI = function (args) {
-      return $_as4c3qtrjjgwefn1.renderUI(editor, this, args);
+    var get = function (editor) {
+      var renderUI = function (args) {
+        return Render.renderUI(editor, this, args);
+      };
+      var resizeTo = function (w, h) {
+        return Resize.resizeTo(editor, w, h);
+      };
+      var resizeBy = function (dw, dh) {
+        return Resize.resizeBy(editor, dw, dh);
+      };
+      var getNotificationManagerImpl = function () {
+        return NotificationManagerImpl(editor);
+      };
+      var getWindowManagerImpl = function () {
+        return WindowManagerImpl(editor);
+      };
+      return {
+        renderUI: renderUI,
+        resizeTo: resizeTo,
+        resizeBy: resizeBy,
+        getNotificationManagerImpl: getNotificationManagerImpl,
+        getWindowManagerImpl: getWindowManagerImpl
+      };
     };
-    var resizeTo = function (w, h) {
-      return $_sd6u0ubjjgwefok.resizeTo(editor, w, h);
-    };
-    var resizeBy = function (dw, dh) {
-      return $_sd6u0ubjjgwefok.resizeBy(editor, dw, dh);
-    };
-    var getNotificationManagerImpl = function () {
-      return NotificationManagerImpl(editor);
-    };
-    var getWindowManagerImpl = function () {
-      return WindowManagerImpl(editor);
-    };
-    return {
-      renderUI: renderUI,
-      resizeTo: resizeTo,
-      resizeBy: resizeBy,
-      getNotificationManagerImpl: getNotificationManagerImpl,
-      getWindowManagerImpl: getWindowManagerImpl
-    };
-  };
-  var $_buaxbttqjjgwefn0 = { get: get };
+    var ThemeApi = { get: get };
 
-  var Layout = global$10.extend({
-    Defaults: {
-      firstControlClass: 'first',
-      lastControlClass: 'last'
-    },
-    init: function (settings) {
-      this.settings = global$2.extend({}, this.Defaults, settings);
-    },
-    preRender: function (container) {
-      container.bodyClasses.add(this.settings.containerClass);
-    },
-    applyClasses: function (items) {
-      var self = this;
-      var settings = self.settings;
-      var firstClass, lastClass, firstItem, lastItem;
-      firstClass = settings.firstControlClass;
-      lastClass = settings.lastControlClass;
-      items.each(function (item) {
-        item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);
-        if (item.visible()) {
-          if (!firstItem) {
-            firstItem = item;
+    var Layout = global$a.extend({
+      Defaults: {
+        firstControlClass: 'first',
+        lastControlClass: 'last'
+      },
+      init: function (settings) {
+        this.settings = global$2.extend({}, this.Defaults, settings);
+      },
+      preRender: function (container) {
+        container.bodyClasses.add(this.settings.containerClass);
+      },
+      applyClasses: function (items) {
+        var self = this;
+        var settings = self.settings;
+        var firstClass, lastClass, firstItem, lastItem;
+        firstClass = settings.firstControlClass;
+        lastClass = settings.lastControlClass;
+        items.each(function (item) {
+          item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);
+          if (item.visible()) {
+            if (!firstItem) {
+              firstItem = item;
+            }
+            lastItem = item;
           }
-          lastItem = item;
+        });
+        if (firstItem) {
+          firstItem.classes.add(firstClass);
         }
-      });
-      if (firstItem) {
-        firstItem.classes.add(firstClass);
+        if (lastItem) {
+          lastItem.classes.add(lastClass);
+        }
+      },
+      renderHtml: function (container) {
+        var self = this;
+        var html = '';
+        self.applyClasses(container.items());
+        container.items().each(function (item) {
+          html += item.renderHtml();
+        });
+        return html;
+      },
+      recalc: function () {
+      },
+      postRender: function () {
+      },
+      isNative: function () {
+        return false;
       }
-      if (lastItem) {
-        lastItem.classes.add(lastClass);
+    });
+
+    var AbsoluteLayout = Layout.extend({
+      Defaults: {
+        containerClass: 'abs-layout',
+        controlClass: 'abs-layout-item'
+      },
+      recalc: function (container) {
+        container.items().filter(':visible').each(function (ctrl) {
+          var settings = ctrl.settings;
+          ctrl.layoutRect({
+            x: settings.x,
+            y: settings.y,
+            w: settings.w,
+            h: settings.h
+          });
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
+        });
+      },
+      renderHtml: function (container) {
+        return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
       }
-    },
-    renderHtml: function (container) {
-      var self = this;
-      var html = '';
-      self.applyClasses(container.items());
-      container.items().each(function (item) {
-        html += item.renderHtml();
-      });
-      return html;
-    },
-    recalc: function () {
-    },
-    postRender: function () {
-    },
-    isNative: function () {
-      return false;
-    }
-  });
+    });
 
-  var AbsoluteLayout = Layout.extend({
-    Defaults: {
-      containerClass: 'abs-layout',
-      controlClass: 'abs-layout-item'
-    },
-    recalc: function (container) {
-      container.items().filter(':visible').each(function (ctrl) {
-        var settings = ctrl.settings;
-        ctrl.layoutRect({
-          x: settings.x,
-          y: settings.y,
-          w: settings.w,
-          h: settings.h
+    var Button = Widget.extend({
+      Defaults: {
+        classes: 'widget btn',
+        role: 'button'
+      },
+      init: function (settings) {
+        var self$$1 = this;
+        var size;
+        self$$1._super(settings);
+        settings = self$$1.settings;
+        size = self$$1.settings.size;
+        self$$1.on('click mousedown', function (e) {
+          e.preventDefault();
         });
-        if (ctrl.recalc) {
-          ctrl.recalc();
+        self$$1.on('touchstart', function (e) {
+          self$$1.fire('click', e);
+          e.preventDefault();
+        });
+        if (settings.subtype) {
+          self$$1.classes.add(settings.subtype);
         }
-      });
-    },
-    renderHtml: function (container) {
-      return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
-    }
-  });
-
-  var Button = Widget.extend({
-    Defaults: {
-      classes: 'widget btn',
-      role: 'button'
-    },
-    init: function (settings) {
-      var self$$1 = this;
-      var size;
-      self$$1._super(settings);
-      settings = self$$1.settings;
-      size = self$$1.settings.size;
-      self$$1.on('click mousedown', function (e) {
-        e.preventDefault();
-      });
-      self$$1.on('touchstart', function (e) {
-        self$$1.fire('click', e);
-        e.preventDefault();
-      });
-      if (settings.subtype) {
-        self$$1.classes.add(settings.subtype);
-      }
-      if (size) {
-        self$$1.classes.add('btn-' + size);
-      }
-      if (settings.icon) {
-        self$$1.icon(settings.icon);
-      }
-    },
-    icon: function (icon) {
-      if (!arguments.length) {
-        return this.state.get('icon');
-      }
-      this.state.set('icon', icon);
-      return this;
-    },
-    repaint: function () {
-      var btnElm = this.getEl().firstChild;
-      var btnStyle;
-      if (btnElm) {
-        btnStyle = btnElm.style;
-        btnStyle.width = btnStyle.height = '100%';
-      }
-      this._super();
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-      var icon = self$$1.state.get('icon'), image;
-      var text = self$$1.state.get('text');
-      var textHtml = '';
-      var ariaPressed;
-      var settings = self$$1.settings;
-      image = settings.image;
-      if (image) {
-        icon = 'none';
-        if (typeof image !== 'string') {
-          image = window.getSelection ? image[0] : image[1];
+        if (size) {
+          self$$1.classes.add('btn-' + size);
         }
-        image = ' style="background-image: url(\'' + image + '\')"';
-      } else {
-        image = '';
-      }
-      if (text) {
-        self$$1.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
-      }
-      icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
-      return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
-    },
-    bindStates: function () {
-      var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';
-      function setButtonText(text) {
-        var $span = $('span.' + textCls, self$$1.getEl());
-        if (text) {
-          if (!$span[0]) {
-            $('button:first', self$$1.getEl()).append('<span class="' + textCls + '"></span>');
-            $span = $('span.' + textCls, self$$1.getEl());
+        if (settings.icon) {
+          self$$1.icon(settings.icon);
+        }
+      },
+      icon: function (icon) {
+        if (!arguments.length) {
+          return this.state.get('icon');
+        }
+        this.state.set('icon', icon);
+        return this;
+      },
+      repaint: function () {
+        var btnElm = this.getEl().firstChild;
+        var btnStyle;
+        if (btnElm) {
+          btnStyle = btnElm.style;
+          btnStyle.width = btnStyle.height = '100%';
+        }
+        this._super();
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
+        var icon = self$$1.state.get('icon'), image;
+        var text = self$$1.state.get('text');
+        var textHtml = '';
+        var ariaPressed;
+        var settings = self$$1.settings;
+        image = settings.image;
+        if (image) {
+          icon = 'none';
+          if (typeof image !== 'string') {
+            image = window.getSelection ? image[0] : image[1];
           }
-          $span.html(self$$1.encode(text));
+          image = ' style="background-image: url(\'' + image + '\')"';
         } else {
-          $span.remove();
+          image = '';
         }
-        self$$1.classes.toggle('btn-has-text', !!text);
-      }
-      self$$1.state.on('change:text', function (e) {
-        setButtonText(e.value);
-      });
-      self$$1.state.on('change:icon', function (e) {
-        var icon = e.value;
-        var prefix = self$$1.classPrefix;
-        self$$1.settings.icon = icon;
-        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-        var btnElm = self$$1.getEl().firstChild;
-        var iconElm = btnElm.getElementsByTagName('i')[0];
-        if (icon) {
-          if (!iconElm || iconElm !== btnElm.firstChild) {
-            iconElm = document.createElement('i');
-            btnElm.insertBefore(iconElm, btnElm.firstChild);
-          }
-          iconElm.className = icon;
-        } else if (iconElm) {
-          btnElm.removeChild(iconElm);
+        if (text) {
+          self$$1.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
         }
-        setButtonText(self$$1.state.get('text'));
-      });
-      return self$$1._super();
-    }
-  });
-
-  var BrowseButton = Button.extend({
-    init: function (settings) {
-      var self = this;
-      settings = global$2.extend({
-        text: 'Browse...',
-        multiple: false,
-        accept: null
-      }, settings);
-      self._super(settings);
-      self.classes.add('browsebutton');
-      if (settings.multiple) {
-        self.classes.add('multiple');
-      }
-    },
-    postRender: function () {
-      var self = this;
-      var input = funcs.create('input', {
-        type: 'file',
-        id: self._id + '-browse',
-        accept: self.settings.accept
-      });
-      self._super();
-      global$9(input).on('change', function (e) {
-        var files = e.target.files;
-        self.value = function () {
-          if (!files.length) {
-            return null;
-          } else if (self.settings.multiple) {
-            return files;
+        icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
+        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';
+      },
+      bindStates: function () {
+        var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';
+        function setButtonText(text) {
+          var $span = $('span.' + textCls, self$$1.getEl());
+          if (text) {
+            if (!$span[0]) {
+              $('button:first', self$$1.getEl()).append('<span class="' + textCls + '"></span>');
+              $span = $('span.' + textCls, self$$1.getEl());
+            }
+            $span.html(self$$1.encode(text));
           } else {
-            return files[0];
+            $span.remove();
           }
-        };
-        e.preventDefault();
-        if (files.length) {
-          self.fire('change', e);
+          self$$1.classes.toggle('btn-has-text', !!text);
         }
-      });
-      global$9(input).on('click', function (e) {
-        e.stopPropagation();
-      });
-      global$9(self.getEl('button')).on('click', function (e) {
-        e.stopPropagation();
-        input.click();
-      });
-      self.getEl().appendChild(input);
-    },
-    remove: function () {
-      global$9(this.getEl('button')).off();
-      global$9(this.getEl('input')).off();
-      this._super();
-    }
-  });
+        self$$1.state.on('change:text', function (e) {
+          setButtonText(e.value);
+        });
+        self$$1.state.on('change:icon', function (e) {
+          var icon = e.value;
+          var prefix = self$$1.classPrefix;
+          self$$1.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
+          var btnElm = self$$1.getEl().firstChild;
+          var iconElm = btnElm.getElementsByTagName('i')[0];
+          if (icon) {
+            if (!iconElm || iconElm !== btnElm.firstChild) {
+              iconElm = document.createElement('i');
+              btnElm.insertBefore(iconElm, btnElm.firstChild);
+            }
+            iconElm.className = icon;
+          } else if (iconElm) {
+            btnElm.removeChild(iconElm);
+          }
+          setButtonText(self$$1.state.get('text'));
+        });
+        return self$$1._super();
+      }
+    });
 
-  var ButtonGroup = Container.extend({
-    Defaults: {
-      defaultType: 'button',
-      role: 'group'
-    },
-    renderHtml: function () {
-      var self = this, layout = self._layout;
-      self.classes.add('btn-group');
-      self.preRender();
-      layout.preRender(self);
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
-    }
-  });
-
-  var Checkbox = Widget.extend({
-    Defaults: {
-      classes: 'checkbox',
-      role: 'checkbox',
-      checked: false
-    },
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      self$$1.on('click mousedown', function (e) {
-        e.preventDefault();
-      });
-      self$$1.on('click', function (e) {
-        e.preventDefault();
-        if (!self$$1.disabled()) {
-          self$$1.checked(!self$$1.checked());
+    var BrowseButton = Button.extend({
+      init: function (settings) {
+        var self = this;
+        settings = global$2.extend({
+          text: 'Browse...',
+          multiple: false,
+          accept: null
+        }, settings);
+        self._super(settings);
+        self.classes.add('browsebutton');
+        if (settings.multiple) {
+          self.classes.add('multiple');
         }
-      });
-      self$$1.checked(self$$1.settings.checked);
-    },
-    checked: function (state) {
-      if (!arguments.length) {
-        return this.state.get('checked');
+      },
+      postRender: function () {
+        var self = this;
+        var input = funcs.create('input', {
+          type: 'file',
+          id: self._id + '-browse',
+          accept: self.settings.accept
+        });
+        self._super();
+        global$9(input).on('change', function (e) {
+          var files = e.target.files;
+          self.value = function () {
+            if (!files.length) {
+              return null;
+            } else if (self.settings.multiple) {
+              return files;
+            } else {
+              return files[0];
+            }
+          };
+          e.preventDefault();
+          if (files.length) {
+            self.fire('change', e);
+          }
+        });
+        global$9(input).on('click', function (e) {
+          e.stopPropagation();
+        });
+        global$9(self.getEl('button')).on('click', function (e) {
+          e.stopPropagation();
+          input.click();
+        });
+        self.getEl().appendChild(input);
+      },
+      remove: function () {
+        global$9(this.getEl('button')).off();
+        global$9(this.getEl('input')).off();
+        this._super();
       }
-      this.state.set('checked', state);
-      return this;
-    },
-    value: function (state) {
-      if (!arguments.length) {
-        return this.checked();
+    });
+
+    var ButtonGroup = Container.extend({
+      Defaults: {
+        defaultType: 'button',
+        role: 'group'
+      },
+      renderHtml: function () {
+        var self = this, layout = self._layout;
+        self.classes.add('btn-group');
+        self.preRender();
+        layout.preRender(self);
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
       }
-      return this.checked(state);
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-      return '<div id="' + id + '" class="' + self$$1.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      function checked(state) {
-        self$$1.classes.toggle('checked', state);
-        self$$1.aria('checked', state);
-      }
-      self$$1.state.on('change:text', function (e) {
-        self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);
-      });
-      self$$1.state.on('change:checked change:value', function (e) {
-        self$$1.fire('change');
-        checked(e.value);
-      });
-      self$$1.state.on('change:icon', function (e) {
-        var icon = e.value;
-        var prefix = self$$1.classPrefix;
-        if (typeof icon === 'undefined') {
-          return self$$1.settings.icon;
+    });
+
+    var Checkbox = Widget.extend({
+      Defaults: {
+        classes: 'checkbox',
+        role: 'checkbox',
+        checked: false
+      },
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        self$$1.on('click mousedown', function (e) {
+          e.preventDefault();
+        });
+        self$$1.on('click', function (e) {
+          e.preventDefault();
+          if (!self$$1.disabled()) {
+            self$$1.checked(!self$$1.checked());
+          }
+        });
+        self$$1.checked(self$$1.settings.checked);
+      },
+      checked: function (state) {
+        if (!arguments.length) {
+          return this.state.get('checked');
         }
-        self$$1.settings.icon = icon;
-        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
-        var btnElm = self$$1.getEl().firstChild;
-        var iconElm = btnElm.getElementsByTagName('i')[0];
-        if (icon) {
-          if (!iconElm || iconElm !== btnElm.firstChild) {
-            iconElm = document.createElement('i');
-            btnElm.insertBefore(iconElm, btnElm.firstChild);
+        this.state.set('checked', state);
+        return this;
+      },
+      value: function (state) {
+        if (!arguments.length) {
+          return this.checked();
+        }
+        return this.checked(state);
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
+        return '<div id="' + id + '" class="' + self$$1.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        function checked(state) {
+          self$$1.classes.toggle('checked', state);
+          self$$1.aria('checked', state);
+        }
+        self$$1.state.on('change:text', function (e) {
+          self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);
+        });
+        self$$1.state.on('change:checked change:value', function (e) {
+          self$$1.fire('change');
+          checked(e.value);
+        });
+        self$$1.state.on('change:icon', function (e) {
+          var icon = e.value;
+          var prefix = self$$1.classPrefix;
+          if (typeof icon === 'undefined') {
+            return self$$1.settings.icon;
           }
-          iconElm.className = icon;
-        } else if (iconElm) {
-          btnElm.removeChild(iconElm);
+          self$$1.settings.icon = icon;
+          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';
+          var btnElm = self$$1.getEl().firstChild;
+          var iconElm = btnElm.getElementsByTagName('i')[0];
+          if (icon) {
+            if (!iconElm || iconElm !== btnElm.firstChild) {
+              iconElm = document.createElement('i');
+              btnElm.insertBefore(iconElm, btnElm.firstChild);
+            }
+            iconElm.className = icon;
+          } else if (iconElm) {
+            btnElm.removeChild(iconElm);
+          }
+        });
+        if (self$$1.state.get('checked')) {
+          checked(true);
         }
-      });
-      if (self$$1.state.get('checked')) {
-        checked(true);
+        return self$$1._super();
       }
-      return self$$1._super();
-    }
-  });
+    });
 
-  var global$13 = tinymce.util.Tools.resolve('tinymce.util.VK');
+    var global$d = tinymce.util.Tools.resolve('tinymce.util.VK');
 
-  var ComboBox = Widget.extend({
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      settings = self$$1.settings;
-      self$$1.classes.add('combobox');
-      self$$1.subinput = true;
-      self$$1.ariaTarget = 'inp';
-      settings.menu = settings.menu || settings.values;
-      if (settings.menu) {
-        settings.icon = 'caret';
-      }
-      self$$1.on('click', function (e) {
-        var elm = e.target;
-        var root = self$$1.getEl();
-        if (!global$9.contains(root, elm) && elm !== root) {
-          return;
+    var ComboBox = Widget.extend({
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        settings = self$$1.settings;
+        self$$1.classes.add('combobox');
+        self$$1.subinput = true;
+        self$$1.ariaTarget = 'inp';
+        settings.menu = settings.menu || settings.values;
+        if (settings.menu) {
+          settings.icon = 'caret';
         }
-        while (elm && elm !== root) {
-          if (elm.id && elm.id.indexOf('-open') !== -1) {
-            self$$1.fire('action');
-            if (settings.menu) {
-              self$$1.showMenu();
-              if (e.aria) {
-                self$$1.menu.items()[0].focus();
+        self$$1.on('click', function (e) {
+          var elm = e.target;
+          var root = self$$1.getEl();
+          if (!global$9.contains(root, elm) && elm !== root) {
+            return;
+          }
+          while (elm && elm !== root) {
+            if (elm.id && elm.id.indexOf('-open') !== -1) {
+              self$$1.fire('action');
+              if (settings.menu) {
+                self$$1.showMenu();
+                if (e.aria) {
+                  self$$1.menu.items()[0].focus();
+                }
               }
             }
+            elm = elm.parentNode;
           }
-          elm = elm.parentNode;
+        });
+        self$$1.on('keydown', function (e) {
+          var rootControl;
+          if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {
+            e.preventDefault();
+            self$$1.parents().reverse().each(function (ctrl) {
+              if (ctrl.toJSON) {
+                rootControl = ctrl;
+                return false;
+              }
+            });
+            self$$1.fire('submit', { data: rootControl.toJSON() });
+          }
+        });
+        self$$1.on('keyup', function (e) {
+          if (e.target.nodeName === 'INPUT') {
+            var oldValue = self$$1.state.get('value');
+            var newValue = e.target.value;
+            if (newValue !== oldValue) {
+              self$$1.state.set('value', newValue);
+              self$$1.fire('autocomplete', e);
+            }
+          }
+        });
+        self$$1.on('mouseover', function (e) {
+          var tooltip = self$$1.tooltip().moveTo(-65535);
+          if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {
+            var statusMessage = self$$1.statusMessage() || 'Ok';
+            var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [
+              'bc-tc',
+              'bc-tl',
+              'bc-tr'
+            ]);
+            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
+            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
+            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
+            tooltip.moveRel(e.target, rel);
+          }
+        });
+      },
+      statusLevel: function (value) {
+        if (arguments.length > 0) {
+          this.state.set('statusLevel', value);
         }
-      });
-      self$$1.on('keydown', function (e) {
-        var rootControl;
-        if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {
-          e.preventDefault();
-          self$$1.parents().reverse().each(function (ctrl) {
-            if (ctrl.toJSON) {
-              rootControl = ctrl;
-              return false;
+        return this.state.get('statusLevel');
+      },
+      statusMessage: function (value) {
+        if (arguments.length > 0) {
+          this.state.set('statusMessage', value);
+        }
+        return this.state.get('statusMessage');
+      },
+      showMenu: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var menu;
+        if (!self$$1.menu) {
+          menu = settings.menu || [];
+          if (menu.length) {
+            menu = {
+              type: 'menu',
+              items: menu
+            };
+          } else {
+            menu.type = menu.type || 'menu';
+          }
+          self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());
+          self$$1.fire('createmenu');
+          self$$1.menu.reflow();
+          self$$1.menu.on('cancel', function (e) {
+            if (e.control === self$$1.menu) {
+              self$$1.focus();
             }
           });
-          self$$1.fire('submit', { data: rootControl.toJSON() });
+          self$$1.menu.on('show hide', function (e) {
+            e.control.items().each(function (ctrl) {
+              ctrl.active(ctrl.value() === self$$1.value());
+            });
+          }).fire('show');
+          self$$1.menu.on('select', function (e) {
+            self$$1.value(e.control.value());
+          });
+          self$$1.on('focusin', function (e) {
+            if (e.target.tagName.toUpperCase() === 'INPUT') {
+              self$$1.menu.hide();
+            }
+          });
+          self$$1.aria('expanded', true);
         }
-      });
-      self$$1.on('keyup', function (e) {
-        if (e.target.nodeName === 'INPUT') {
-          var oldValue = self$$1.state.get('value');
-          var newValue = e.target.value;
-          if (newValue !== oldValue) {
-            self$$1.state.set('value', newValue);
-            self$$1.fire('autocomplete', e);
-          }
+        self$$1.menu.show();
+        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
+        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
+          'br-tr',
+          'tr-br'
+        ] : [
+          'bl-tl',
+          'tl-bl'
+        ]);
+      },
+      focus: function () {
+        this.getEl('inp').focus();
+      },
+      repaint: function () {
+        var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();
+        var width, lineHeight, innerPadding = 0;
+        var inputElm = elm.firstChild;
+        if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {
+          innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);
         }
-      });
-      self$$1.on('mouseover', function (e) {
-        var tooltip = self$$1.tooltip().moveTo(-65535);
-        if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {
-          var statusMessage = self$$1.statusMessage() || 'Ok';
-          var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [
-            'bc-tc',
-            'bc-tl',
-            'bc-tr'
-          ]);
-          tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');
-          tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');
-          tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');
-          tooltip.moveRel(e.target, rel);
+        if (openElm) {
+          width = rect.w - funcs.getSize(openElm).width - 10;
+        } else {
+          width = rect.w - 10;
         }
-      });
-    },
-    statusLevel: function (value) {
-      if (arguments.length > 0) {
-        this.state.set('statusLevel', value);
-      }
-      return this.state.get('statusLevel');
-    },
-    statusMessage: function (value) {
-      if (arguments.length > 0) {
-        this.state.set('statusMessage', value);
-      }
-      return this.state.get('statusMessage');
-    },
-    showMenu: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var menu;
-      if (!self$$1.menu) {
-        menu = settings.menu || [];
-        if (menu.length) {
-          menu = {
-            type: 'menu',
-            items: menu
+        var doc = document;
+        if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+          lineHeight = self$$1.layoutRect().h - 2 + 'px';
+        }
+        global$9(inputElm).css({
+          width: width - innerPadding,
+          lineHeight: lineHeight
+        });
+        self$$1._super();
+        return self$$1;
+      },
+      postRender: function () {
+        var self$$1 = this;
+        global$9(this.getEl('inp')).on('change', function (e) {
+          self$$1.state.set('value', e.target.value);
+          self$$1.fire('change', e);
+        });
+        return self$$1._super();
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;
+        var value = self$$1.state.get('value') || '';
+        var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';
+        if ('spellcheck' in settings) {
+          extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+        }
+        if (settings.maxLength) {
+          extraAttrs += ' maxlength="' + settings.maxLength + '"';
+        }
+        if (settings.size) {
+          extraAttrs += ' size="' + settings.size + '"';
+        }
+        if (settings.subtype) {
+          extraAttrs += ' type="' + settings.subtype + '"';
+        }
+        statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';
+        if (self$$1.disabled()) {
+          extraAttrs += ' disabled="disabled"';
+        }
+        icon = settings.icon;
+        if (icon && icon !== 'caret') {
+          icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
+        }
+        text = self$$1.state.get('text');
+        if (icon || text) {
+          openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';
+          self$$1.classes.add('has-open');
+        }
+        return '<div id="' + id + '" class="' + self$$1.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self$$1.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self$$1.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
+      },
+      value: function (value) {
+        if (arguments.length) {
+          this.state.set('value', value);
+          return this;
+        }
+        if (this.state.get('rendered')) {
+          this.state.set('value', this.getEl('inp').value);
+        }
+        return this.state.get('value');
+      },
+      showAutoComplete: function (items, term) {
+        var self$$1 = this;
+        if (items.length === 0) {
+          self$$1.hideMenu();
+          return;
+        }
+        var insert = function (value, title) {
+          return function () {
+            self$$1.fire('selectitem', {
+              title: title,
+              value: value
+            });
           };
+        };
+        if (self$$1.menu) {
+          self$$1.menu.items().remove();
         } else {
-          menu.type = menu.type || 'menu';
+          self$$1.menu = global$4.create({
+            type: 'menu',
+            classes: 'combobox-menu',
+            layout: 'flow'
+          }).parent(self$$1).renderTo();
         }
-        self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());
-        self$$1.fire('createmenu');
-        self$$1.menu.reflow();
+        global$2.each(items, function (item) {
+          self$$1.menu.add({
+            text: item.title,
+            url: item.previewUrl,
+            match: term,
+            classes: 'menu-item-ellipsis',
+            onclick: insert(item.value, item.title)
+          });
+        });
+        self$$1.menu.renderNew();
+        self$$1.hideMenu();
         self$$1.menu.on('cancel', function (e) {
-          if (e.control === self$$1.menu) {
+          if (e.control.parent() === self$$1.menu) {
+            e.stopPropagation();
             self$$1.focus();
+            self$$1.hideMenu();
           }
         });
-        self$$1.menu.on('show hide', function (e) {
-          e.control.items().each(function (ctrl) {
-            ctrl.active(ctrl.value() === self$$1.value());
-          });
-        }).fire('show');
-        self$$1.menu.on('select', function (e) {
-          self$$1.value(e.control.value());
+        self$$1.menu.on('select', function () {
+          self$$1.focus();
         });
-        self$$1.on('focusin', function (e) {
-          if (e.target.tagName.toUpperCase() === 'INPUT') {
-            self$$1.menu.hide();
+        var maxW = self$$1.layoutRect().w;
+        self$$1.menu.layoutRect({
+          w: maxW,
+          minW: 0,
+          maxW: maxW
+        });
+        self$$1.menu.repaint();
+        self$$1.menu.reflow();
+        self$$1.menu.show();
+        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
+          'br-tr',
+          'tr-br'
+        ] : [
+          'bl-tl',
+          'tl-bl'
+        ]);
+      },
+      hideMenu: function () {
+        if (this.menu) {
+          this.menu.hide();
+        }
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        self$$1.state.on('change:value', function (e) {
+          if (self$$1.getEl('inp').value !== e.value) {
+            self$$1.getEl('inp').value = e.value;
           }
         });
-        self$$1.aria('expanded', true);
-      }
-      self$$1.menu.show();
-      self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-      self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
-        'br-tr',
-        'tr-br'
-      ] : [
-        'bl-tl',
-        'tl-bl'
-      ]);
-    },
-    focus: function () {
-      this.getEl('inp').focus();
-    },
-    repaint: function () {
-      var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();
-      var width, lineHeight, innerPadding = 0;
-      var inputElm = elm.firstChild;
-      if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {
-        innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);
-      }
-      if (openElm) {
-        width = rect.w - funcs.getSize(openElm).width - 10;
-      } else {
-        width = rect.w - 10;
-      }
-      var doc = document;
-      if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
-        lineHeight = self$$1.layoutRect().h - 2 + 'px';
-      }
-      global$9(inputElm).css({
-        width: width - innerPadding,
-        lineHeight: lineHeight
-      });
-      self$$1._super();
-      return self$$1;
-    },
-    postRender: function () {
-      var self$$1 = this;
-      global$9(this.getEl('inp')).on('change', function (e) {
-        self$$1.state.set('value', e.target.value);
-        self$$1.fire('change', e);
-      });
-      return self$$1._super();
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;
-      var value = self$$1.state.get('value') || '';
-      var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';
-      if ('spellcheck' in settings) {
-        extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
-      }
-      if (settings.maxLength) {
-        extraAttrs += ' maxlength="' + settings.maxLength + '"';
-      }
-      if (settings.size) {
-        extraAttrs += ' size="' + settings.size + '"';
-      }
-      if (settings.subtype) {
-        extraAttrs += ' type="' + settings.subtype + '"';
-      }
-      statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';
-      if (self$$1.disabled()) {
-        extraAttrs += ' disabled="disabled"';
-      }
-      icon = settings.icon;
-      if (icon && icon !== 'caret') {
-        icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
-      }
-      text = self$$1.state.get('text');
-      if (icon || text) {
-        openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';
-        self$$1.classes.add('has-open');
-      }
-      return '<div id="' + id + '" class="' + self$$1.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self$$1.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self$$1.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';
-    },
-    value: function (value) {
-      if (arguments.length) {
-        this.state.set('value', value);
-        return this;
-      }
-      if (this.state.get('rendered')) {
-        this.state.set('value', this.getEl('inp').value);
-      }
-      return this.state.get('value');
-    },
-    showAutoComplete: function (items, term) {
-      var self$$1 = this;
-      if (items.length === 0) {
-        self$$1.hideMenu();
-        return;
-      }
-      var insert = function (value, title) {
-        return function () {
-          self$$1.fire('selectitem', {
-            title: title,
-            value: value
-          });
+        self$$1.state.on('change:disabled', function (e) {
+          self$$1.getEl('inp').disabled = e.value;
+        });
+        self$$1.state.on('change:statusLevel', function (e) {
+          var statusIconElm = self$$1.getEl('status');
+          var prefix = self$$1.classPrefix, value = e.value;
+          funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');
+          funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');
+          funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');
+          funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');
+          self$$1.classes.toggle('has-status', value !== 'none');
+          self$$1.repaint();
+        });
+        funcs.on(self$$1.getEl('status'), 'mouseleave', function () {
+          self$$1.tooltip().hide();
+        });
+        self$$1.on('cancel', function (e) {
+          if (self$$1.menu && self$$1.menu.visible()) {
+            e.stopPropagation();
+            self$$1.hideMenu();
+          }
+        });
+        var focusIdx = function (idx, menu) {
+          if (menu && menu.items().length > 0) {
+            menu.items().eq(idx)[0].focus();
+          }
         };
-      };
-      if (self$$1.menu) {
-        self$$1.menu.items().remove();
-      } else {
-        self$$1.menu = global$4.create({
-          type: 'menu',
-          classes: 'combobox-menu',
-          layout: 'flow'
-        }).parent(self$$1).renderTo();
+        self$$1.on('keydown', function (e) {
+          var keyCode = e.keyCode;
+          if (e.target.nodeName === 'INPUT') {
+            if (keyCode === global$d.DOWN) {
+              e.preventDefault();
+              self$$1.fire('autocomplete');
+              focusIdx(0, self$$1.menu);
+            } else if (keyCode === global$d.UP) {
+              e.preventDefault();
+              focusIdx(-1, self$$1.menu);
+            }
+          }
+        });
+        return self$$1._super();
+      },
+      remove: function () {
+        global$9(this.getEl('inp')).off();
+        if (this.menu) {
+          this.menu.remove();
+        }
+        this._super();
       }
-      global$2.each(items, function (item) {
-        self$$1.menu.add({
-          text: item.title,
-          url: item.previewUrl,
-          match: term,
-          classes: 'menu-item-ellipsis',
-          onclick: insert(item.value, item.title)
+    });
+
+    var ColorBox = ComboBox.extend({
+      init: function (settings) {
+        var self = this;
+        settings.spellcheck = false;
+        if (settings.onaction) {
+          settings.icon = 'none';
+        }
+        self._super(settings);
+        self.classes.add('colorbox');
+        self.on('change keyup postrender', function () {
+          self.repaintColor(self.value());
         });
-      });
-      self$$1.menu.renderNew();
-      self$$1.hideMenu();
-      self$$1.menu.on('cancel', function (e) {
-        if (e.control.parent() === self$$1.menu) {
-          e.stopPropagation();
-          self$$1.focus();
-          self$$1.hideMenu();
+      },
+      repaintColor: function (value) {
+        var openElm = this.getEl('open');
+        var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;
+        if (elm) {
+          try {
+            elm.style.background = value;
+          } catch (ex) {
+          }
         }
-      });
-      self$$1.menu.on('select', function () {
-        self$$1.focus();
-      });
-      var maxW = self$$1.layoutRect().w;
-      self$$1.menu.layoutRect({
-        w: maxW,
-        minW: 0,
-        maxW: maxW
-      });
-      self$$1.menu.repaint();
-      self$$1.menu.reflow();
-      self$$1.menu.show();
-      self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
-        'br-tr',
-        'tr-br'
-      ] : [
-        'bl-tl',
-        'tl-bl'
-      ]);
-    },
-    hideMenu: function () {
-      if (this.menu) {
-        this.menu.hide();
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:value', function (e) {
+          if (self.state.get('rendered')) {
+            self.repaintColor(e.value);
+          }
+        });
+        return self._super();
       }
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      self$$1.state.on('change:value', function (e) {
-        if (self$$1.getEl('inp').value !== e.value) {
-          self$$1.getEl('inp').value = e.value;
+    });
+
+    var PanelButton = Button.extend({
+      showPanel: function () {
+        var self = this, settings = self.settings;
+        self.classes.add('opened');
+        if (!self.panel) {
+          var panelSettings = settings.panel;
+          if (panelSettings.type) {
+            panelSettings = {
+              layout: 'grid',
+              items: panelSettings
+            };
+          }
+          panelSettings.role = panelSettings.role || 'dialog';
+          panelSettings.popover = true;
+          panelSettings.autohide = true;
+          panelSettings.ariaRoot = true;
+          self.panel = new FloatPanel(panelSettings).on('hide', function () {
+            self.classes.remove('opened');
+          }).on('cancel', function (e) {
+            e.stopPropagation();
+            self.focus();
+            self.hidePanel();
+          }).parent(self).renderTo(self.getContainerElm());
+          self.panel.fire('show');
+          self.panel.reflow();
+        } else {
+          self.panel.show();
         }
-      });
-      self$$1.state.on('change:disabled', function (e) {
-        self$$1.getEl('inp').disabled = e.value;
-      });
-      self$$1.state.on('change:statusLevel', function (e) {
-        var statusIconElm = self$$1.getEl('status');
-        var prefix = self$$1.classPrefix, value = e.value;
-        funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');
-        funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');
-        funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');
-        funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');
-        self$$1.classes.toggle('has-status', value !== 'none');
-        self$$1.repaint();
-      });
-      funcs.on(self$$1.getEl('status'), 'mouseleave', function () {
-        self$$1.tooltip().hide();
-      });
-      self$$1.on('cancel', function (e) {
-        if (self$$1.menu && self$$1.menu.visible()) {
-          e.stopPropagation();
-          self$$1.hideMenu();
+        var rtlRels = [
+          'bc-tc',
+          'bc-tl',
+          'bc-tr'
+        ];
+        var ltrRels = [
+          'bc-tc',
+          'bc-tr',
+          'bc-tl',
+          'tc-bc',
+          'tc-br',
+          'tc-bl'
+        ];
+        var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));
+        self.panel.classes.toggle('start', rel.substr(-1) === 'l');
+        self.panel.classes.toggle('end', rel.substr(-1) === 'r');
+        var isTop = rel.substr(0, 1) === 't';
+        self.panel.classes.toggle('bottom', !isTop);
+        self.panel.classes.toggle('top', isTop);
+        self.panel.moveRel(self.getEl(), rel);
+      },
+      hidePanel: function () {
+        var self = this;
+        if (self.panel) {
+          self.panel.hide();
         }
-      });
-      var focusIdx = function (idx, menu) {
-        if (menu && menu.items().length > 0) {
-          menu.items().eq(idx)[0].focus();
-        }
-      };
-      self$$1.on('keydown', function (e) {
-        var keyCode = e.keyCode;
-        if (e.target.nodeName === 'INPUT') {
-          if (keyCode === global$13.DOWN) {
-            e.preventDefault();
-            self$$1.fire('autocomplete');
-            focusIdx(0, self$$1.menu);
-          } else if (keyCode === global$13.UP) {
-            e.preventDefault();
-            focusIdx(-1, self$$1.menu);
+      },
+      postRender: function () {
+        var self = this;
+        self.aria('haspopup', true);
+        self.on('click', function (e) {
+          if (e.control === self) {
+            if (self.panel && self.panel.visible()) {
+              self.hidePanel();
+            } else {
+              self.showPanel();
+              self.panel.focus(!!e.aria);
+            }
           }
+        });
+        return self._super();
+      },
+      remove: function () {
+        if (this.panel) {
+          this.panel.remove();
+          this.panel = null;
         }
-      });
-      return self$$1._super();
-    },
-    remove: function () {
-      global$9(this.getEl('inp')).off();
-      if (this.menu) {
-        this.menu.remove();
+        return this._super();
       }
-      this._super();
-    }
-  });
+    });
 
-  var ColorBox = ComboBox.extend({
-    init: function (settings) {
-      var self = this;
-      settings.spellcheck = false;
-      if (settings.onaction) {
-        settings.icon = 'none';
-      }
-      self._super(settings);
-      self.classes.add('colorbox');
-      self.on('change keyup postrender', function () {
-        self.repaintColor(self.value());
-      });
-    },
-    repaintColor: function (value) {
-      var openElm = this.getEl('open');
-      var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;
-      if (elm) {
-        try {
-          elm.style.background = value;
-        } catch (ex) {
+    var DOM$3 = global$3.DOM;
+    var ColorButton = PanelButton.extend({
+      init: function (settings) {
+        this._super(settings);
+        this.classes.add('splitbtn');
+        this.classes.add('colorbutton');
+      },
+      color: function (color) {
+        if (color) {
+          this._color = color;
+          this.getEl('preview').style.backgroundColor = color;
+          return this;
         }
+        return this._color;
+      },
+      resetColor: function () {
+        this._color = null;
+        this.getEl('preview').style.backgroundColor = null;
+        return this;
+      },
+      renderHtml: function () {
+        var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');
+        var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+        var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
+        var textHtml = '';
+        if (text) {
+          self.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
+        }
+        return '<div id="' + id + '" class="' + self.classes + '" role="button" tabindex="-1" aria-haspopup="true">' + '<button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + '<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
+      },
+      postRender: function () {
+        var self = this, onClickHandler = self.settings.onclick;
+        self.on('click', function (e) {
+          if (e.aria && e.aria.key === 'down') {
+            return;
+          }
+          if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {
+            e.stopImmediatePropagation();
+            onClickHandler.call(self, e);
+          }
+        });
+        delete self.settings.onclick;
+        return self._super();
       }
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:value', function (e) {
-        if (self.state.get('rendered')) {
-          self.repaintColor(e.value);
-        }
-      });
-      return self._super();
-    }
-  });
+    });
 
-  var PanelButton = Button.extend({
-    showPanel: function () {
-      var self = this, settings = self.settings;
-      self.classes.add('opened');
-      if (!self.panel) {
-        var panelSettings = settings.panel;
-        if (panelSettings.type) {
-          panelSettings = {
-            layout: 'grid',
-            items: panelSettings
+    var global$e = tinymce.util.Tools.resolve('tinymce.util.Color');
+
+    var ColorPicker = Widget.extend({
+      Defaults: { classes: 'widget colorpicker' },
+      init: function (settings) {
+        this._super(settings);
+      },
+      postRender: function () {
+        var self = this;
+        var color = self.color();
+        var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
+        hueRootElm = self.getEl('h');
+        huePointElm = self.getEl('hp');
+        svRootElm = self.getEl('sv');
+        svPointElm = self.getEl('svp');
+        function getPos(elm, event) {
+          var pos = funcs.getPos(elm);
+          var x, y;
+          x = event.pageX - pos.x;
+          y = event.pageY - pos.y;
+          x = Math.max(0, Math.min(x / elm.clientWidth, 1));
+          y = Math.max(0, Math.min(y / elm.clientHeight, 1));
+          return {
+            x: x,
+            y: y
           };
         }
-        panelSettings.role = panelSettings.role || 'dialog';
-        panelSettings.popover = true;
-        panelSettings.autohide = true;
-        panelSettings.ariaRoot = true;
-        self.panel = new FloatPanel(panelSettings).on('hide', function () {
-          self.classes.remove('opened');
-        }).on('cancel', function (e) {
-          e.stopPropagation();
-          self.focus();
-          self.hidePanel();
-        }).parent(self).renderTo(self.getContainerElm());
-        self.panel.fire('show');
-        self.panel.reflow();
-      } else {
-        self.panel.show();
-      }
-      var rtlRels = [
-        'bc-tc',
-        'bc-tl',
-        'bc-tr'
-      ];
-      var ltrRels = [
-        'bc-tc',
-        'bc-tr',
-        'bc-tl',
-        'tc-bc',
-        'tc-br',
-        'tc-bl'
-      ];
-      var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));
-      self.panel.classes.toggle('start', rel.substr(-1) === 'l');
-      self.panel.classes.toggle('end', rel.substr(-1) === 'r');
-      var isTop = rel.substr(0, 1) === 't';
-      self.panel.classes.toggle('bottom', !isTop);
-      self.panel.classes.toggle('top', isTop);
-      self.panel.moveRel(self.getEl(), rel);
-    },
-    hidePanel: function () {
-      var self = this;
-      if (self.panel) {
-        self.panel.hide();
-      }
-    },
-    postRender: function () {
-      var self = this;
-      self.aria('haspopup', true);
-      self.on('click', function (e) {
-        if (e.control === self) {
-          if (self.panel && self.panel.visible()) {
-            self.hidePanel();
-          } else {
-            self.showPanel();
-            self.panel.focus(!!e.aria);
+        function updateColor(hsv, hueUpdate) {
+          var hue = (360 - hsv.h) / 360;
+          funcs.css(huePointElm, { top: hue * 100 + '%' });
+          if (!hueUpdate) {
+            funcs.css(svPointElm, {
+              left: hsv.s + '%',
+              top: 100 - hsv.v + '%'
+            });
           }
+          svRootElm.style.background = global$e({
+            s: 100,
+            v: 100,
+            h: hsv.h
+          }).toHex();
+          self.color().parse({
+            s: hsv.s,
+            v: hsv.v,
+            h: hsv.h
+          });
         }
-      });
-      return self._super();
-    },
-    remove: function () {
-      if (this.panel) {
-        this.panel.remove();
-        this.panel = null;
-      }
-      return this._super();
-    }
-  });
-
-  var DOM$3 = global$3.DOM;
-  var ColorButton = PanelButton.extend({
-    init: function (settings) {
-      this._super(settings);
-      this.classes.add('splitbtn');
-      this.classes.add('colorbutton');
-    },
-    color: function (color) {
-      if (color) {
-        this._color = color;
-        this.getEl('preview').style.backgroundColor = color;
-        return this;
-      }
-      return this._color;
-    },
-    resetColor: function () {
-      this._color = null;
-      this.getEl('preview').style.backgroundColor = null;
-      return this;
-    },
-    renderHtml: function () {
-      var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');
-      var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
-      var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
-      var textHtml = '';
-      if (text) {
-        self.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
-      }
-      return '<div id="' + id + '" class="' + self.classes + '" role="button" tabindex="-1" aria-haspopup="true">' + '<button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + '<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
-    },
-    postRender: function () {
-      var self = this, onClickHandler = self.settings.onclick;
-      self.on('click', function (e) {
-        if (e.aria && e.aria.key === 'down') {
-          return;
+        function updateSaturationAndValue(e) {
+          var pos;
+          pos = getPos(svRootElm, e);
+          hsv.s = pos.x * 100;
+          hsv.v = (1 - pos.y) * 100;
+          updateColor(hsv);
+          self.fire('change');
         }
-        if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {
-          e.stopImmediatePropagation();
-          onClickHandler.call(self, e);
+        function updateHue(e) {
+          var pos;
+          pos = getPos(hueRootElm, e);
+          hsv = color.toHsv();
+          hsv.h = (1 - pos.y) * 360;
+          updateColor(hsv, true);
+          self.fire('change');
         }
-      });
-      delete self.settings.onclick;
-      return self._super();
-    }
-  });
-
-  var global$14 = tinymce.util.Tools.resolve('tinymce.util.Color');
-
-  var ColorPicker = Widget.extend({
-    Defaults: { classes: 'widget colorpicker' },
-    init: function (settings) {
-      this._super(settings);
-    },
-    postRender: function () {
-      var self = this;
-      var color = self.color();
-      var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
-      hueRootElm = self.getEl('h');
-      huePointElm = self.getEl('hp');
-      svRootElm = self.getEl('sv');
-      svPointElm = self.getEl('svp');
-      function getPos(elm, event) {
-        var pos = funcs.getPos(elm);
-        var x, y;
-        x = event.pageX - pos.x;
-        y = event.pageY - pos.y;
-        x = Math.max(0, Math.min(x / elm.clientWidth, 1));
-        y = Math.max(0, Math.min(y / elm.clientHeight, 1));
-        return {
-          x: x,
-          y: y
+        self._repaint = function () {
+          hsv = color.toHsv();
+          updateColor(hsv);
         };
-      }
-      function updateColor(hsv, hueUpdate) {
-        var hue = (360 - hsv.h) / 360;
-        funcs.css(huePointElm, { top: hue * 100 + '%' });
-        if (!hueUpdate) {
-          funcs.css(svPointElm, {
-            left: hsv.s + '%',
-            top: 100 - hsv.v + '%'
-          });
-        }
-        svRootElm.style.background = global$14({
-          s: 100,
-          v: 100,
-          h: hsv.h
-        }).toHex();
-        self.color().parse({
-          s: hsv.s,
-          v: hsv.v,
-          h: hsv.h
+        self._super();
+        self._svdraghelper = new DragHelper(self._id + '-sv', {
+          start: updateSaturationAndValue,
+          drag: updateSaturationAndValue
         });
-      }
-      function updateSaturationAndValue(e) {
-        var pos;
-        pos = getPos(svRootElm, e);
-        hsv.s = pos.x * 100;
-        hsv.v = (1 - pos.y) * 100;
-        updateColor(hsv);
-        self.fire('change');
-      }
-      function updateHue(e) {
-        var pos;
-        pos = getPos(hueRootElm, e);
-        hsv = color.toHsv();
-        hsv.h = (1 - pos.y) * 360;
-        updateColor(hsv, true);
-        self.fire('change');
-      }
-      self._repaint = function () {
-        hsv = color.toHsv();
-        updateColor(hsv);
-      };
-      self._super();
-      self._svdraghelper = new DragHelper(self._id + '-sv', {
-        start: updateSaturationAndValue,
-        drag: updateSaturationAndValue
-      });
-      self._hdraghelper = new DragHelper(self._id + '-h', {
-        start: updateHue,
-        drag: updateHue
-      });
-      self._repaint();
-    },
-    rgb: function () {
-      return this.color().toRgb();
-    },
-    value: function (value) {
-      var self = this;
-      if (arguments.length) {
-        self.color().parse(value);
-        if (self._rendered) {
-          self._repaint();
+        self._hdraghelper = new DragHelper(self._id + '-h', {
+          start: updateHue,
+          drag: updateHue
+        });
+        self._repaint();
+      },
+      rgb: function () {
+        return this.color().toRgb();
+      },
+      value: function (value) {
+        var self = this;
+        if (arguments.length) {
+          self.color().parse(value);
+          if (self._rendered) {
+            self._repaint();
+          }
+        } else {
+          return self.color().toHex();
         }
-      } else {
-        return self.color().toHex();
-      }
-    },
-    color: function () {
-      if (!this._color) {
-        this._color = global$14();
-      }
-      return this._color;
-    },
-    renderHtml: function () {
-      var self = this;
-      var id = self._id;
-      var prefix = self.classPrefix;
-      var hueHtml;
-      var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
-      function getOldIeFallbackHtml() {
-        var i, l, html = '', gradientPrefix, stopsList;
-        gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
-        stopsList = stops.split(',');
-        for (i = 0, l = stopsList.length - 1; i < l; i++) {
-          html += '<div class="' + prefix + 'colorpicker-h-chunk" style="' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '"></div>';
+      },
+      color: function () {
+        if (!this._color) {
+          this._color = global$e();
         }
-        return html;
+        return this._color;
+      },
+      renderHtml: function () {
+        var self = this;
+        var id = self._id;
+        var prefix = self.classPrefix;
+        var hueHtml;
+        var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
+        function getOldIeFallbackHtml() {
+          var i, l, html = '', gradientPrefix, stopsList;
+          gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
+          stopsList = stops.split(',');
+          for (i = 0, l = stopsList.length - 1; i < l; i++) {
+            html += '<div class="' + prefix + 'colorpicker-h-chunk" style="' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '"></div>';
+          }
+          return html;
+        }
+        var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';
+        hueHtml = '<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' + getOldIeFallbackHtml() + '<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' + '</div>';
+        return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' + '<div class="' + prefix + 'colorpicker-overlay1">' + '<div class="' + prefix + 'colorpicker-overlay2">' + '<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' + '<div class="' + prefix + 'colorpicker-selector2"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';
       }
-      var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';
-      hueHtml = '<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' + getOldIeFallbackHtml() + '<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' + '</div>';
-      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' + '<div class="' + prefix + 'colorpicker-overlay1">' + '<div class="' + prefix + 'colorpicker-overlay2">' + '<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' + '<div class="' + prefix + 'colorpicker-selector2"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';
-    }
-  });
+    });
 
-  var DropZone = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      settings = global$2.extend({
-        height: 100,
-        text: 'Drop an image here',
-        multiple: false,
-        accept: null
-      }, settings);
-      self._super(settings);
-      self.classes.add('dropzone');
-      if (settings.multiple) {
-        self.classes.add('multiple');
-      }
-    },
-    renderHtml: function () {
-      var self = this;
-      var attrs, elm;
-      var cfg = self.settings;
-      attrs = {
-        id: self._id,
-        hidefocus: '1'
-      };
-      elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');
-      if (cfg.height) {
-        funcs.css(elm, 'height', cfg.height + 'px');
-      }
-      if (cfg.width) {
-        funcs.css(elm, 'width', cfg.width + 'px');
-      }
-      elm.className = self.classes;
-      return elm.outerHTML;
-    },
-    postRender: function () {
-      var self = this;
-      var toggleDragClass = function (e) {
-        e.preventDefault();
-        self.classes.toggle('dragenter');
-        self.getEl().className = self.classes;
-      };
-      var filter = function (files) {
-        var accept = self.settings.accept;
-        if (typeof accept !== 'string') {
-          return files;
+    var DropZone = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        settings = global$2.extend({
+          height: 100,
+          text: 'Drop an image here',
+          multiple: false,
+          accept: null
+        }, settings);
+        self._super(settings);
+        self.classes.add('dropzone');
+        if (settings.multiple) {
+          self.classes.add('multiple');
         }
-        var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');
-        return global$2.grep(files, function (file) {
-          return re.test(file.name);
-        });
-      };
-      self._super();
-      self.$el.on('dragover', function (e) {
-        e.preventDefault();
-      });
-      self.$el.on('dragenter', toggleDragClass);
-      self.$el.on('dragleave', toggleDragClass);
-      self.$el.on('drop', function (e) {
-        e.preventDefault();
-        if (self.state.get('disabled')) {
-          return;
+      },
+      renderHtml: function () {
+        var self = this;
+        var attrs, elm;
+        var cfg = self.settings;
+        attrs = {
+          id: self._id,
+          hidefocus: '1'
+        };
+        elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');
+        if (cfg.height) {
+          funcs.css(elm, 'height', cfg.height + 'px');
         }
-        var files = filter(e.dataTransfer.files);
-        self.value = function () {
-          if (!files.length) {
-            return null;
-          } else if (self.settings.multiple) {
+        if (cfg.width) {
+          funcs.css(elm, 'width', cfg.width + 'px');
+        }
+        elm.className = self.classes;
+        return elm.outerHTML;
+      },
+      postRender: function () {
+        var self = this;
+        var toggleDragClass = function (e) {
+          e.preventDefault();
+          self.classes.toggle('dragenter');
+          self.getEl().className = self.classes;
+        };
+        var filter = function (files) {
+          var accept = self.settings.accept;
+          if (typeof accept !== 'string') {
             return files;
-          } else {
-            return files[0];
           }
+          var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');
+          return global$2.grep(files, function (file) {
+            return re.test(file.name);
+          });
         };
-        if (files.length) {
-          self.fire('change', e);
-        }
-      });
-    },
-    remove: function () {
-      this.$el.off();
-      this._super();
-    }
-  });
+        self._super();
+        self.$el.on('dragover', function (e) {
+          e.preventDefault();
+        });
+        self.$el.on('dragenter', toggleDragClass);
+        self.$el.on('dragleave', toggleDragClass);
+        self.$el.on('drop', function (e) {
+          e.preventDefault();
+          if (self.state.get('disabled')) {
+            return;
+          }
+          var files = filter(e.dataTransfer.files);
+          self.value = function () {
+            if (!files.length) {
+              return null;
+            } else if (self.settings.multiple) {
+              return files;
+            } else {
+              return files[0];
+            }
+          };
+          if (files.length) {
+            self.fire('change', e);
+          }
+        });
+      },
+      remove: function () {
+        this.$el.off();
+        this._super();
+      }
+    });
 
-  var Path = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      if (!settings.delimiter) {
-        settings.delimiter = '\xBB';
-      }
-      self._super(settings);
-      self.classes.add('path');
-      self.canFocus = true;
-      self.on('click', function (e) {
-        var index;
-        var target = e.target;
-        if (index = target.getAttribute('data-index')) {
-          self.fire('select', {
-            value: self.row()[index],
-            index: index
-          });
+    var Path = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        if (!settings.delimiter) {
+          settings.delimiter = '\xBB';
         }
-      });
-      self.row(self.settings.row);
-    },
-    focus: function () {
-      var self = this;
-      self.getEl().firstChild.focus();
-      return self;
-    },
-    row: function (row) {
-      if (!arguments.length) {
-        return this.state.get('row');
+        self._super(settings);
+        self.classes.add('path');
+        self.canFocus = true;
+        self.on('click', function (e) {
+          var index;
+          var target = e.target;
+          if (index = target.getAttribute('data-index')) {
+            self.fire('select', {
+              value: self.row()[index],
+              index: index
+            });
+          }
+        });
+        self.row(self.settings.row);
+      },
+      focus: function () {
+        var self = this;
+        self.getEl().firstChild.focus();
+        return self;
+      },
+      row: function (row) {
+        if (!arguments.length) {
+          return this.state.get('row');
+        }
+        this.state.set('row', row);
+        return this;
+      },
+      renderHtml: function () {
+        var self = this;
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + self._getDataPathHtml(self.state.get('row')) + '</div>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:row', function (e) {
+          self.innerHtml(self._getDataPathHtml(e.value));
+        });
+        return self._super();
+      },
+      _getDataPathHtml: function (data) {
+        var self = this;
+        var parts = data || [];
+        var i, l, html = '';
+        var prefix = self.classPrefix;
+        for (i = 0, l = parts.length; i < l; i++) {
+          html += (i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') + '<div role="button" class="' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' + i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + (i + 1) + '">' + parts[i].name + '</div>';
+        }
+        if (!html) {
+          html = '<div class="' + prefix + 'path-item">\xA0</div>';
+        }
+        return html;
       }
-      this.state.set('row', row);
-      return this;
-    },
-    renderHtml: function () {
-      var self = this;
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + self._getDataPathHtml(self.state.get('row')) + '</div>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:row', function (e) {
-        self.innerHtml(self._getDataPathHtml(e.value));
-      });
-      return self._super();
-    },
-    _getDataPathHtml: function (data) {
-      var self = this;
-      var parts = data || [];
-      var i, l, html = '';
-      var prefix = self.classPrefix;
-      for (i = 0, l = parts.length; i < l; i++) {
-        html += (i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') + '<div role="button" class="' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' + i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + (i + 1) + '">' + parts[i].name + '</div>';
-      }
-      if (!html) {
-        html = '<div class="' + prefix + 'path-item">\xA0</div>';
-      }
-      return html;
-    }
-  });
+    });
 
-  var ElementPath = Path.extend({
-    postRender: function () {
-      var self = this, editor = self.settings.editor;
-      function isHidden(elm) {
-        if (elm.nodeType === 1) {
-          if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {
-            return true;
+    var ElementPath = Path.extend({
+      postRender: function () {
+        var self = this, editor = self.settings.editor;
+        function isHidden(elm) {
+          if (elm.nodeType === 1) {
+            if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {
+              return true;
+            }
+            if (elm.getAttribute('data-mce-type') === 'bookmark') {
+              return true;
+            }
           }
-          if (elm.getAttribute('data-mce-type') === 'bookmark') {
-            return true;
-          }
+          return false;
         }
-        return false;
-      }
-      if (editor.settings.elementpath !== false) {
-        self.on('select', function (e) {
-          editor.focus();
-          editor.selection.select(this.row()[e.index].element);
-          editor.nodeChanged();
-        });
-        editor.on('nodeChange', function (e) {
-          var outParents = [];
-          var parents = e.parents;
-          var i = parents.length;
-          while (i--) {
-            if (parents[i].nodeType === 1 && !isHidden(parents[i])) {
-              var args = editor.fire('ResolveName', {
-                name: parents[i].nodeName.toLowerCase(),
-                target: parents[i]
-              });
-              if (!args.isDefaultPrevented()) {
-                outParents.push({
-                  name: args.name,
-                  element: parents[i]
+        if (editor.settings.elementpath !== false) {
+          self.on('select', function (e) {
+            editor.focus();
+            editor.selection.select(this.row()[e.index].element);
+            editor.nodeChanged();
+          });
+          editor.on('nodeChange', function (e) {
+            var outParents = [];
+            var parents = e.parents;
+            var i = parents.length;
+            while (i--) {
+              if (parents[i].nodeType === 1 && !isHidden(parents[i])) {
+                var args = editor.fire('ResolveName', {
+                  name: parents[i].nodeName.toLowerCase(),
+                  target: parents[i]
                 });
+                if (!args.isDefaultPrevented()) {
+                  outParents.push({
+                    name: args.name,
+                    element: parents[i]
+                  });
+                }
+                if (args.isPropagationStopped()) {
+                  break;
+                }
               }
-              if (args.isPropagationStopped()) {
-                break;
-              }
             }
-          }
-          self.row(outParents);
-        });
+            self.row(outParents);
+          });
+        }
+        return self._super();
       }
-      return self._super();
-    }
-  });
+    });
 
-  var FormItem = Container.extend({
-    Defaults: {
-      layout: 'flex',
-      align: 'center',
-      defaults: { flex: 1 }
-    },
-    renderHtml: function () {
-      var self = this, layout = self._layout, prefix = self.classPrefix;
-      self.classes.add('formitem');
-      layout.preRender(self);
-      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<div id="' + self._id + '-title" class="' + prefix + 'title">' + self.settings.title + '</div>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
-    }
-  });
+    var FormItem = Container.extend({
+      Defaults: {
+        layout: 'flex',
+        align: 'center',
+        defaults: { flex: 1 }
+      },
+      renderHtml: function () {
+        var self = this, layout = self._layout, prefix = self.classPrefix;
+        self.classes.add('formitem');
+        layout.preRender(self);
+        return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<div id="' + self._id + '-title" class="' + prefix + 'title">' + self.settings.title + '</div>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';
+      }
+    });
 
-  var Form = Container.extend({
-    Defaults: {
-      containerCls: 'form',
-      layout: 'flex',
-      direction: 'column',
-      align: 'stretch',
-      flex: 1,
-      padding: 15,
-      labelGap: 30,
-      spacing: 10,
-      callbacks: {
-        submit: function () {
-          this.submit();
+    var Form = Container.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 self = this, items = self.items();
-      if (!self.settings.formItemDefaults) {
-        self.settings.formItemDefaults = {
-          layout: 'flex',
-          autoResize: 'overflow',
-          defaults: { flex: 1 }
-        };
-      }
-      items.each(function (ctrl) {
-        var formItem;
-        var label = ctrl.settings.label;
-        if (label) {
-          formItem = new FormItem(global$2.extend({
-            items: {
-              type: 'label',
-              id: ctrl._id + '-l',
-              text: label,
-              flex: 0,
-              forId: ctrl._id,
-              disabled: ctrl.disabled()
+      },
+      preRender: function () {
+        var self = this, items = self.items();
+        if (!self.settings.formItemDefaults) {
+          self.settings.formItemDefaults = {
+            layout: 'flex',
+            autoResize: 'overflow',
+            defaults: { flex: 1 }
+          };
+        }
+        items.each(function (ctrl) {
+          var formItem;
+          var label = ctrl.settings.label;
+          if (label) {
+            formItem = new FormItem(global$2.extend({
+              items: {
+                type: 'label',
+                id: ctrl._id + '-l',
+                text: label,
+                flex: 0,
+                forId: ctrl._id,
+                disabled: ctrl.disabled()
+              }
+            }, self.settings.formItemDefaults));
+            formItem.type = 'formitem';
+            ctrl.aria('labelledby', ctrl._id + '-l');
+            if (typeof ctrl.settings.flex === 'undefined') {
+              ctrl.settings.flex = 1;
             }
-          }, self.settings.formItemDefaults));
-          formItem.type = 'formitem';
-          ctrl.aria('labelledby', ctrl._id + '-l');
-          if (typeof ctrl.settings.flex === 'undefined') {
-            ctrl.settings.flex = 1;
+            self.replace(ctrl, formItem);
+            formItem.add(ctrl);
           }
-          self.replace(ctrl, formItem);
-          formItem.add(ctrl);
-        }
-      });
-    },
-    submit: function () {
-      return this.fire('submit', { data: this.toJSON() });
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.fromJSON(self.settings.data);
-    },
-    bindStates: function () {
-      var self = this;
-      self._super();
-      function recalcLabels() {
-        var maxLabelWidth = 0;
-        var labels = [];
-        var i, labelGap, items;
-        if (self.settings.labelGapCalc === false) {
-          return;
-        }
-        if (self.settings.labelGapCalc === 'children') {
-          items = self.find('formitem');
-        } else {
-          items = self.items();
-        }
-        items.filter('formitem').each(function (item) {
-          var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
-          maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
-          labels.push(labelCtrl);
         });
-        labelGap = self.settings.labelGap || 0;
-        i = labels.length;
-        while (i--) {
-          labels[i].settings.minWidth = maxLabelWidth + labelGap;
+      },
+      submit: function () {
+        return this.fire('submit', { data: this.toJSON() });
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.fromJSON(self.settings.data);
+      },
+      bindStates: function () {
+        var self = this;
+        self._super();
+        function recalcLabels() {
+          var maxLabelWidth = 0;
+          var labels = [];
+          var i, labelGap, items;
+          if (self.settings.labelGapCalc === false) {
+            return;
+          }
+          if (self.settings.labelGapCalc === 'children') {
+            items = self.find('formitem');
+          } else {
+            items = self.items();
+          }
+          items.filter('formitem').each(function (item) {
+            var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
+            maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
+            labels.push(labelCtrl);
+          });
+          labelGap = self.settings.labelGap || 0;
+          i = labels.length;
+          while (i--) {
+            labels[i].settings.minWidth = maxLabelWidth + labelGap;
+          }
         }
+        self.on('show', recalcLabels);
+        recalcLabels();
       }
-      self.on('show', recalcLabels);
-      recalcLabels();
-    }
-  });
+    });
 
-  var FieldSet = Form.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 self = this, layout = self._layout, prefix = self.classPrefix;
-      self.preRender();
-      layout.preRender(self);
-      return '<fieldset id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' + self.settings.title + '</legend>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';
-    }
-  });
+    var FieldSet = Form.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 self = this, layout = self._layout, prefix = self.classPrefix;
+        self.preRender();
+        layout.preRender(self);
+        return '<fieldset id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' + self.settings.title + '</legend>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';
+      }
+    });
 
-  var unique$1 = 0;
-  var generate = function (prefix) {
-    var date = new Date();
-    var time = date.getTime();
-    var random = Math.floor(Math.random() * 1000000000);
-    unique$1++;
-    return prefix + '_' + random + unique$1 + String(time);
-  };
+    var unique$1 = 0;
+    var generate = function (prefix) {
+      var date = new Date();
+      var time = date.getTime();
+      var random = Math.floor(Math.random() * 1000000000);
+      unique$1++;
+      return prefix + '_' + random + unique$1 + String(time);
+    };
 
-  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: constant(node) };
-  };
-  var fromPoint = function (docElm, x, y) {
-    var doc = docElm.dom();
-    return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
-  };
-  var Element$$1 = {
-    fromHtml: fromHtml,
-    fromTag: fromTag,
-    fromText: fromText,
-    fromDom: fromDom,
-    fromPoint: fromPoint
-  };
-
-  var cached = function (f) {
-    var called = false;
-    var r;
-    return function () {
-      var args = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-        args[_i] = arguments[_i];
+    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';
       }
-      if (!called) {
-        called = true;
-        r = f.apply(null, args);
-      }
-      return r;
+      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: constant(node) };
+    };
+    var fromPoint = function (docElm, x, y) {
+      var doc = docElm.dom();
+      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
+    };
+    var Element$$1 = {
+      fromHtml: fromHtml,
+      fromTag: fromTag,
+      fromText: fromText,
+      fromDom: fromDom,
+      fromPoint: fromPoint
+    };
 
-  var $_vi4lpw5jjgwefvz = {
-    ATTRIBUTE: Node.ATTRIBUTE_NODE,
-    CDATA_SECTION: Node.CDATA_SECTION_NODE,
-    COMMENT: Node.COMMENT_NODE,
-    DOCUMENT: Node.DOCUMENT_NODE,
-    DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,
-    DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,
-    ELEMENT: Node.ELEMENT_NODE,
-    TEXT: Node.TEXT_NODE,
-    PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,
-    ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,
-    ENTITY: Node.ENTITY_NODE,
-    NOTATION: Node.NOTATION_NODE
-  };
-
-  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$1 = function (t) {
-    return function (element) {
-      return type(element) === t;
+    var cached = function (f) {
+      var called = false;
+      var r;
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        if (!called) {
+          called = true;
+          r = f.apply(null, args);
+        }
+        return r;
+      };
     };
-  };
-  var isComment = function (element) {
-    return type(element) === $_vi4lpw5jjgwefvz.COMMENT || name(element) === '#comment';
-  };
-  var isElement = isType$1($_vi4lpw5jjgwefvz.ELEMENT);
-  var isText = isType$1($_vi4lpw5jjgwefvz.TEXT);
-  var isDocument = isType$1($_vi4lpw5jjgwefvz.DOCUMENT);
-  var $_8bzgjvw4jjgwefvy = {
-    name: name,
-    type: type,
-    value: value,
-    isElement: isElement,
-    isText: isText,
-    isDocument: isDocument,
-    isComment: isComment
-  };
 
-  var inBody = function (element) {
-    var dom = $_8bzgjvw4jjgwefvy.isText(element) ? element.dom().parentNode : element.dom();
-    return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);
-  };
-  var body = cached(function () {
-    return getBody(Element$$1.fromDom(document));
-  });
-  var getBody = function (doc) {
-    var body = doc.dom().body;
-    if (body === null || body === undefined)
-      throw 'Body is not available yet';
-    return Element$$1.fromDom(body);
-  };
-  var $_g7jljiw2jjgwefvu = {
-    body: body,
-    getBody: getBody,
-    inBody: inBody
-  };
+    var ATTRIBUTE = Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = Node.CDATA_SECTION_NODE;
+    var COMMENT = Node.COMMENT_NODE;
+    var DOCUMENT = Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = Node.ELEMENT_NODE;
+    var TEXT = Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = Node.ENTITY_NODE;
+    var NOTATION = Node.NOTATION_NODE;
 
-  var Immutable = function () {
-    var fields = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-      fields[_i] = arguments[_i];
-    }
-    return function () {
-      var values = [];
+    var Immutable = function () {
+      var fields = [];
       for (var _i = 0; _i < arguments.length; _i++) {
-        values[_i] = arguments[_i];
+        fields[_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 = {};
-      each(fields, function (name, i) {
-        struct[name] = constant(values[i]);
-      });
-      return struct;
+      return function () {
+        var values = [];
+        for (var _i = 0; _i < arguments.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 = {};
+        each(fields, function (name, i) {
+          struct[name] = constant(values[i]);
+        });
+        return struct;
+      };
     };
-  };
 
-  var toArray = function (target, f) {
-    var r = [];
-    var recurse = function (e) {
-      r.push(e);
-      return f(e);
+    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 cur = f(target);
-    do {
-      cur = cur.bind(recurse);
-    } while (cur.isSome());
-    return r;
-  };
-  var $_5edc27wcjjgwefwz = { toArray: toArray };
+    var resolve = function (p, scope) {
+      var parts = p.split('.');
+      return path(parts, scope);
+    };
 
-  var Global = typeof window !== 'undefined' ? window : Function('return this;')();
+    var unsafe = function (name, scope) {
+      return 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 Global$1 = { getOrDie: getOrDie };
 
-  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 node = function () {
+      var f = Global$1.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 Node$1 = {
+      documentPositionPreceding: documentPositionPreceding,
+      documentPositionContainedBy: documentPositionContainedBy
+    };
 
-  var unsafe = function (name, scope) {
-    return 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 $_eggz6rwfjjgwefxb = { getOrDie: getOrDie };
-
-  var node = function () {
-    var f = $_eggz6rwfjjgwefxb.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 $_d3tk25wejjgwefxa = {
-    documentPositionPreceding: documentPositionPreceding,
-    documentPositionContainedBy: documentPositionContainedBy
-  };
-
-  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)
+    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: 0,
-        minor: 0
+        major: major,
+        minor: minor
       };
-    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 Version = {
+      nu: nu,
+      detect: detect,
+      unknown: unknown
     };
-  };
-  var $_f8xw27wljjgwefxn = {
-    nu: nu,
-    detect: detect,
-    unknown: unknown
-  };
 
-  var edge = 'Edge';
-  var chrome = 'Chrome';
-  var ie = 'IE';
-  var opera = 'Opera';
-  var firefox = 'Firefox';
-  var safari = 'Safari';
-  var isBrowser = function (name, current) {
-    return function () {
-      return current === name;
+    var edge = 'Edge';
+    var chrome = 'Chrome';
+    var ie = 'IE';
+    var opera = '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: $_f8xw27wljjgwefxn.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, current),
-      isOpera: isBrowser(opera, current),
-      isFirefox: isBrowser(firefox, current),
-      isSafari: isBrowser(safari, current)
+    var unknown$1 = function () {
+      return nu$1({
+        current: undefined,
+        version: Version.unknown()
+      });
     };
-  };
-  var $_6jz8s6wkjjgwefxk = {
-    unknown: unknown$1,
-    nu: nu$1,
-    edge: constant(edge),
-    chrome: constant(chrome),
-    ie: constant(ie),
-    opera: constant(opera),
-    firefox: constant(firefox),
-    safari: constant(safari)
-  };
-
-  var windows$1 = 'Windows';
-  var ios = 'iOS';
-  var android = 'Android';
-  var linux = 'Linux';
-  var osx = 'OSX';
-  var solaris = 'Solaris';
-  var freebsd = 'FreeBSD';
-  var isOS = function (name, current) {
-    return function () {
-      return current === name;
+    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, current),
+        isOpera: isBrowser(opera, current),
+        isFirefox: isBrowser(firefox, current),
+        isSafari: isBrowser(safari, current)
+      };
     };
-  };
-  var unknown$2 = function () {
-    return nu$2({
-      current: undefined,
-      version: $_f8xw27wljjgwefxn.unknown()
-    });
-  };
-  var nu$2 = function (info) {
-    var current = info.current;
-    var version = info.version;
-    return {
-      current: current,
-      version: version,
-      isWindows: isOS(windows$1, current),
-      isiOS: isOS(ios, current),
-      isAndroid: isOS(android, current),
-      isOSX: isOS(osx, current),
-      isLinux: isOS(linux, current),
-      isSolaris: isOS(solaris, current),
-      isFreeBSD: isOS(freebsd, current)
+    var Browser = {
+      unknown: unknown$1,
+      nu: nu$1,
+      edge: constant(edge),
+      chrome: constant(chrome),
+      ie: constant(ie),
+      opera: constant(opera),
+      firefox: constant(firefox),
+      safari: constant(safari)
     };
-  };
-  var $_ac4rxfwmjjgwefxp = {
-    unknown: unknown$2,
-    nu: nu$2,
-    windows: constant(windows$1),
-    ios: constant(ios),
-    android: constant(android),
-    linux: constant(linux),
-    osx: constant(osx),
-    solaris: constant(solaris),
-    freebsd: 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: constant(isiPad),
-      isiPhone: constant(isiPhone),
-      isTablet: constant(isTablet),
-      isPhone: constant(isPhone),
-      isTouch: constant(isTouch),
-      isAndroid: os.isAndroid,
-      isiOS: os.isiOS,
-      isWebView: constant(iOSwebview)
+    var windows$1 = 'Windows';
+    var ios = 'iOS';
+    var android = 'Android';
+    var linux = 'Linux';
+    var osx = 'OSX';
+    var solaris = 'Solaris';
+    var freebsd = 'FreeBSD';
+    var isOS = function (name, current) {
+      return function () {
+        return current === name;
+      };
     };
-  }
-
-  var detect$1 = function (candidates, userAgent) {
-    var agent = String(userAgent).toLowerCase();
-    return find(candidates, function (candidate) {
-      return candidate.search(agent);
-    });
-  };
-  var detectBrowser = function (browsers, userAgent) {
-    return detect$1(browsers, userAgent).map(function (browser) {
-      var version = $_f8xw27wljjgwefxn.detect(browser.versionRegexes, userAgent);
+    var unknown$2 = function () {
+      return nu$2({
+        current: undefined,
+        version: Version.unknown()
+      });
+    };
+    var nu$2 = function (info) {
+      var current = info.current;
+      var version = info.version;
       return {
-        current: browser.name,
-        version: version
+        current: current,
+        version: version,
+        isWindows: isOS(windows$1, current),
+        isiOS: isOS(ios, current),
+        isAndroid: isOS(android, current),
+        isOSX: isOS(osx, current),
+        isLinux: isOS(linux, current),
+        isSolaris: isOS(solaris, current),
+        isFreeBSD: isOS(freebsd, current)
       };
-    });
-  };
-  var detectOs = function (oses, userAgent) {
-    return detect$1(oses, userAgent).map(function (os) {
-      var version = $_f8xw27wljjgwefxn.detect(os.versionRegexes, userAgent);
+    };
+    var OperatingSystem = {
+      unknown: unknown$2,
+      nu: nu$2,
+      windows: constant(windows$1),
+      ios: constant(ios),
+      android: constant(android),
+      linux: constant(linux),
+      osx: constant(osx),
+      solaris: constant(solaris),
+      freebsd: constant(freebsd)
+    };
+
+    var DeviceType = function (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 {
-        current: os.name,
-        version: version
+        isiPad: constant(isiPad),
+        isiPhone: constant(isiPhone),
+        isTablet: constant(isTablet),
+        isPhone: constant(isPhone),
+        isTouch: constant(isTouch),
+        isAndroid: os.isAndroid,
+        isiOS: os.isiOS,
+        isWebView: constant(iOSwebview)
       };
-    });
-  };
-  var $_d66zk7wojjgwefxw = {
-    detectBrowser: detectBrowser,
-    detectOs: detectOs
-  };
+    };
 
-  var contains$1 = function (str, substr) {
-    return str.indexOf(substr) !== -1;
-  };
+    var detect$1 = function (candidates, userAgent) {
+      var agent = String(userAgent).toLowerCase();
+      return find(candidates, function (candidate) {
+        return candidate.search(agent);
+      });
+    };
+    var detectBrowser = function (browsers, userAgent) {
+      return detect$1(browsers, userAgent).map(function (browser) {
+        var version = Version.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 = Version.detect(os.versionRegexes, userAgent);
+        return {
+          current: os.name,
+          version: version
+        };
+      });
+    };
+    var UaString = {
+      detectBrowser: detectBrowser,
+      detectOs: detectOs
+    };
 
-  var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
-  var checkContains = function (target) {
-    return function (uastring) {
-      return contains$1(uastring, target);
+    var contains$1 = function (str, substr) {
+      return str.indexOf(substr) !== -1;
     };
-  };
-  var browsers = [
-    {
-      name: 'Edge',
-      versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
-      search: function (uastring) {
-        var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
-        return monstrosity;
+
+    var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
+    var checkContains = function (target) {
+      return function (uastring) {
+        return contains$1(uastring, target);
+      };
+    };
+    var browsers = [
+      {
+        name: 'Edge',
+        versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
+        search: function (uastring) {
+          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');
+          return monstrosity;
+        }
+      },
+      {
+        name: 'Chrome',
+        versionRegexes: [
+          /.*?chrome\/([0-9]+)\.([0-9]+).*/,
+          normalVersionRegex
+        ],
+        search: function (uastring) {
+          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
+        }
+      },
+      {
+        name: 'IE',
+        versionRegexes: [
+          /.*?msie\ ?([0-9]+)\.([0-9]+).*/,
+          /.*?rv:([0-9]+)\.([0-9]+).*/
+        ],
+        search: function (uastring) {
+          return contains$1(uastring, 'msie') || contains$1(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 (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
+        }
       }
-    },
-    {
-      name: 'Chrome',
-      versionRegexes: [
-        /.*?chrome\/([0-9]+)\.([0-9]+).*/,
-        normalVersionRegex
-      ],
-      search: function (uastring) {
-        return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');
+    ];
+    var oses = [
+      {
+        name: 'Windows',
+        search: checkContains('win'),
+        versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
+      },
+      {
+        name: 'iOS',
+        search: function (uastring) {
+          return contains$1(uastring, 'iphone') || contains$1(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: []
       }
-    },
-    {
-      name: 'IE',
-      versionRegexes: [
-        /.*?msie\ ?([0-9]+)\.([0-9]+).*/,
-        /.*?rv:([0-9]+)\.([0-9]+).*/
-      ],
-      search: function (uastring) {
-        return contains$1(uastring, 'msie') || contains$1(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 (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');
-      }
-    }
-  ];
-  var oses = [
-    {
-      name: 'Windows',
-      search: checkContains('win'),
-      versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
-    },
-    {
-      name: 'iOS',
-      search: function (uastring) {
-        return contains$1(uastring, 'iphone') || contains$1(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 $_frphugwpjjgwefy0 = {
-    browsers: constant(browsers),
-    oses: constant(oses)
-  };
+    ];
+    var PlatformInfo = {
+      browsers: constant(browsers),
+      oses: constant(oses)
+    };
 
-  var detect$2 = function (userAgent) {
-    var browsers = $_frphugwpjjgwefy0.browsers();
-    var oses = $_frphugwpjjgwefy0.oses();
-    var browser = $_d66zk7wojjgwefxw.detectBrowser(browsers, userAgent).fold($_6jz8s6wkjjgwefxk.unknown, $_6jz8s6wkjjgwefxk.nu);
-    var os = $_d66zk7wojjgwefxw.detectOs(oses, userAgent).fold($_ac4rxfwmjjgwefxp.unknown, $_ac4rxfwmjjgwefxp.nu);
-    var deviceType = DeviceType(os, browser, userAgent);
-    return {
-      browser: browser,
-      os: os,
-      deviceType: deviceType
+    var detect$2 = function (userAgent) {
+      var browsers = PlatformInfo.browsers();
+      var oses = PlatformInfo.oses();
+      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);
+      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
+      var deviceType = DeviceType(os, browser, userAgent);
+      return {
+        browser: browser,
+        os: os,
+        deviceType: deviceType
+      };
     };
-  };
-  var $_2lmz7fwjjjgwefxj = { detect: detect$2 };
+    var PlatformDetection = { detect: detect$2 };
 
-  var detect$3 = cached(function () {
-    var userAgent = navigator.userAgent;
-    return $_2lmz7fwjjjgwefxj.detect(userAgent);
-  });
-  var $_3d6uczwijjgwefxg = { detect: detect$3 };
+    var detect$3 = cached(function () {
+      var userAgent = navigator.userAgent;
+      return PlatformDetection.detect(userAgent);
+    });
+    var PlatformDetection$1 = { detect: detect$3 };
 
-  var ELEMENT = $_vi4lpw5jjgwefvz.ELEMENT;
-  var DOCUMENT = $_vi4lpw5jjgwefvz.DOCUMENT;
-  var is = 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) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
-  };
-  var one = function (selector, scope) {
-    var base = scope === undefined ? document : scope.dom();
-    return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
-  };
-  var $_ofcqhwtjjgwefyb = {
-    all: all,
-    is: is,
-    one: one
-  };
+    var ELEMENT$1 = ELEMENT;
+    var DOCUMENT$1 = DOCUMENT;
+    var bypassSelector = function (dom) {
+      return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
+    };
+    var all = function (selector, scope) {
+      var base = scope === undefined ? document : scope.dom();
+      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);
+    };
+    var one = function (selector, scope) {
+      var base = scope === undefined ? document : scope.dom();
+      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);
+    };
 
-  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 exists(elements, 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 $_d3tk25wejjgwefxa.documentPositionContainedBy(e1.dom(), e2.dom());
-  };
-  var browser = $_3d6uczwijjgwefxg.detect().browser;
-  var contains$2 = browser.isIE() ? ieContains : regularContains;
-  var $_bdbghwwdjjgwefx0 = {
-    eq: eq,
-    isEqualNode: isEqualNode,
-    member: member,
-    contains: contains$2,
-    is: $_ofcqhwtjjgwefyb.is
-  };
-
-  var owner = function (element) {
-    return Element$$1.fromDom(element.dom().ownerDocument);
-  };
-  var documentElement = function (element) {
-    return Element$$1.fromDom(element.dom().ownerDocument.documentElement);
-  };
-  var defaultView = function (element) {
-    var el = element.dom();
-    var defaultView = el.ownerDocument.defaultView;
-    return Element$$1.fromDom(defaultView);
-  };
-  var parent = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.parentNode).map(Element$$1.fromDom);
-  };
-  var findIndex$1 = function (element) {
-    return parent(element).bind(function (p) {
-      var kin = children(p);
-      return findIndex(kin, function (elem) {
-        return $_bdbghwwdjjgwefx0.eq(element, elem);
-      });
-    });
-  };
-  var parents = function (element, isRoot) {
-    var stop = isFunction(isRoot) ? isRoot : constant(false);
-    var dom = element.dom();
-    var ret = [];
-    while (dom.parentNode !== null && dom.parentNode !== undefined) {
-      var rawParent = dom.parentNode;
-      var parent = Element$$1.fromDom(rawParent);
-      ret.push(parent);
-      if (stop(parent) === true)
-        break;
-      else
-        dom = rawParent;
-    }
-    return ret;
-  };
-  var siblings = function (element) {
-    var filterSelf = function (elements) {
-      return filter(elements, function (x) {
-        return !$_bdbghwwdjjgwefx0.eq(element, x);
-      });
+    var regularContains = function (e1, e2) {
+      var d1 = e1.dom(), d2 = e2.dom();
+      return d1 === d2 ? false : d1.contains(d2);
     };
-    return parent(element).map(children).map(filterSelf).getOr([]);
-  };
-  var offsetParent = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.offsetParent).map(Element$$1.fromDom);
-  };
-  var prevSibling = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.previousSibling).map(Element$$1.fromDom);
-  };
-  var nextSibling = function (element) {
-    var dom = element.dom();
-    return Option.from(dom.nextSibling).map(Element$$1.fromDom);
-  };
-  var prevSiblings = function (element) {
-    return reverse($_5edc27wcjjgwefwz.toArray(element, prevSibling));
-  };
-  var nextSiblings = function (element) {
-    return $_5edc27wcjjgwefwz.toArray(element, nextSibling);
-  };
-  var children = function (element) {
-    var dom = element.dom();
-    return map(dom.childNodes, Element$$1.fromDom);
-  };
-  var child = function (element, index) {
-    var children = element.dom().childNodes;
-    return Option.from(children[index]).map(Element$$1.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 = 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 $_r7112w6jjgwefw2 = {
-    owner: owner,
-    defaultView: defaultView,
-    documentElement: documentElement,
-    parent: parent,
-    findIndex: findIndex$1,
-    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 ieContains = function (e1, e2) {
+      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());
+    };
+    var browser = PlatformDetection$1.detect().browser;
+    var contains$2 = browser.isIE() ? ieContains : regularContains;
 
-  var all$1 = function (predicate) {
-    return descendants($_g7jljiw2jjgwefvu.body(), predicate);
-  };
-  var ancestors = function (scope, predicate, isRoot) {
-    return filter($_r7112w6jjgwefw2.parents(scope, isRoot), predicate);
-  };
-  var siblings$1 = function (scope, predicate) {
-    return filter($_r7112w6jjgwefw2.siblings(scope), predicate);
-  };
-  var children$1 = function (scope, predicate) {
-    return filter($_r7112w6jjgwefw2.children(scope), predicate);
-  };
-  var descendants = function (scope, predicate) {
-    var result = [];
-    each($_r7112w6jjgwefw2.children(scope), function (x) {
-      if (predicate(x)) {
-        result = result.concat([x]);
-      }
-      result = result.concat(descendants(x, predicate));
-    });
-    return result;
-  };
-  var $_3dx616w1jjgwefvq = {
-    all: all$1,
-    ancestors: ancestors,
-    siblings: siblings$1,
-    children: children$1,
-    descendants: descendants
-  };
+    var spot = Immutable('element', 'offset');
 
-  var all$2 = function (selector) {
-    return $_ofcqhwtjjgwefyb.all(selector);
-  };
-  var ancestors$1 = function (scope, selector, isRoot) {
-    return $_3dx616w1jjgwefvq.ancestors(scope, function (e) {
-      return $_ofcqhwtjjgwefyb.is(e, selector);
-    }, isRoot);
-  };
-  var siblings$2 = function (scope, selector) {
-    return $_3dx616w1jjgwefvq.siblings(scope, function (e) {
-      return $_ofcqhwtjjgwefyb.is(e, selector);
-    });
-  };
-  var children$2 = function (scope, selector) {
-    return $_3dx616w1jjgwefvq.children(scope, function (e) {
-      return $_ofcqhwtjjgwefyb.is(e, selector);
-    });
-  };
-  var descendants$1 = function (scope, selector) {
-    return $_ofcqhwtjjgwefyb.all(selector, scope);
-  };
-  var $_5wsttjw0jjgwefvp = {
-    all: all$2,
-    ancestors: ancestors$1,
-    siblings: siblings$2,
-    children: children$2,
-    descendants: descendants$1
-  };
+    var descendants$1 = function (scope, selector) {
+      return all(selector, scope);
+    };
 
-  var trim$1 = global$2.trim;
-  var hasContentEditableState = function (value) {
-    return function (node) {
-      if (node && node.nodeType === 1) {
-        if (node.contentEditable === value) {
-          return true;
+    var trim$1 = global$2.trim;
+    var hasContentEditableState = function (value) {
+      return function (node) {
+        if (node && node.nodeType === 1) {
+          if (node.contentEditable === value) {
+            return true;
+          }
+          if (node.getAttribute('data-mce-contenteditable') === value) {
+            return true;
+          }
         }
-        if (node.getAttribute('data-mce-contenteditable') === value) {
-          return true;
+        return false;
+      };
+    };
+    var isContentEditableTrue = hasContentEditableState('true');
+    var isContentEditableFalse = hasContentEditableState('false');
+    var create = function (type, title, url, level, attach) {
+      return {
+        type: type,
+        title: title,
+        url: url,
+        level: level,
+        attach: attach
+      };
+    };
+    var isChildOfContentEditableTrue = function (node) {
+      while (node = node.parentNode) {
+        var value = node.contentEditable;
+        if (value && value !== 'inherit') {
+          return isContentEditableTrue(node);
         }
       }
       return false;
     };
-  };
-  var isContentEditableTrue = hasContentEditableState('true');
-  var isContentEditableFalse = hasContentEditableState('false');
-  var create = function (type, title, url, level, attach) {
-    return {
-      type: type,
-      title: title,
-      url: url,
-      level: level,
-      attach: attach
+    var select = function (selector, root) {
+      return map(descendants$1(Element$$1.fromDom(root), selector), function (element) {
+        return element.dom();
+      });
     };
-  };
-  var isChildOfContentEditableTrue = function (node) {
-    while (node = node.parentNode) {
-      var value = node.contentEditable;
-      if (value && value !== 'inherit') {
-        return isContentEditableTrue(node);
-      }
-    }
-    return false;
-  };
-  var select = function (selector, root) {
-    return map($_5wsttjw0jjgwefvp.descendants(Element$$1.fromDom(root), selector), function (element) {
-      return element.dom();
-    });
-  };
-  var getElementText = function (elm) {
-    return elm.innerText || elm.textContent;
-  };
-  var getOrGenerateId = function (elm) {
-    return elm.id ? elm.id : generate('h');
-  };
-  var isAnchor = function (elm) {
-    return elm && elm.nodeName === 'A' && (elm.id || elm.name);
-  };
-  var isValidAnchor = function (elm) {
-    return isAnchor(elm) && isEditable(elm);
-  };
-  var isHeader = function (elm) {
-    return elm && /^(H[1-6])$/.test(elm.nodeName);
-  };
-  var isEditable = function (elm) {
-    return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);
-  };
-  var isValidHeader = function (elm) {
-    return isHeader(elm) && isEditable(elm);
-  };
-  var getLevel = function (elm) {
-    return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;
-  };
-  var headerTarget = function (elm) {
-    var headerId = getOrGenerateId(elm);
-    var attach = function () {
-      elm.id = headerId;
+    var getElementText = function (elm) {
+      return elm.innerText || elm.textContent;
     };
-    return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);
-  };
-  var anchorTarget = function (elm) {
-    var anchorId = elm.id || elm.name;
-    var anchorText = getElementText(elm);
-    return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);
-  };
-  var getHeaderTargets = function (elms) {
-    return map(filter(elms, isValidHeader), headerTarget);
-  };
-  var getAnchorTargets = function (elms) {
-    return map(filter(elms, isValidAnchor), anchorTarget);
-  };
-  var getTargetElements = function (elm) {
-    var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);
-    return elms;
-  };
-  var hasTitle = function (target) {
-    return trim$1(target.title).length > 0;
-  };
-  var find$3 = function (elm) {
-    var elms = getTargetElements(elm);
-    return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);
-  };
-  var $_7cacckvxjjgwefv6 = { find: find$3 };
+    var getOrGenerateId = function (elm) {
+      return elm.id ? elm.id : generate('h');
+    };
+    var isAnchor = function (elm) {
+      return elm && elm.nodeName === 'A' && (elm.id || elm.name);
+    };
+    var isValidAnchor = function (elm) {
+      return isAnchor(elm) && isEditable(elm);
+    };
+    var isHeader = function (elm) {
+      return elm && /^(H[1-6])$/.test(elm.nodeName);
+    };
+    var isEditable = function (elm) {
+      return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);
+    };
+    var isValidHeader = function (elm) {
+      return isHeader(elm) && isEditable(elm);
+    };
+    var getLevel = function (elm) {
+      return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;
+    };
+    var headerTarget = function (elm) {
+      var headerId = getOrGenerateId(elm);
+      var attach = function () {
+        elm.id = headerId;
+      };
+      return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);
+    };
+    var anchorTarget = function (elm) {
+      var anchorId = elm.id || elm.name;
+      var anchorText = getElementText(elm);
+      return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);
+    };
+    var getHeaderTargets = function (elms) {
+      return map(filter(elms, isValidHeader), headerTarget);
+    };
+    var getAnchorTargets = function (elms) {
+      return map(filter(elms, isValidAnchor), anchorTarget);
+    };
+    var getTargetElements = function (elm) {
+      var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);
+      return elms;
+    };
+    var hasTitle = function (target) {
+      return trim$1(target.title).length > 0;
+    };
+    var find$3 = function (elm) {
+      var elms = getTargetElements(elm);
+      return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);
+    };
+    var LinkTargets = { find: find$3 };
 
-  var getActiveEditor = function () {
-    return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;
-  };
-  var history = {};
-  var HISTORY_LENGTH = 5;
-  var clearHistory = function () {
-    history = {};
-  };
-  var toMenuItem = function (target) {
-    return {
-      title: target.title,
-      value: {
-        title: { raw: target.title },
-        url: target.url,
-        attach: target.attach
-      }
+    var getActiveEditor = function () {
+      return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;
     };
-  };
-  var toMenuItems = function (targets) {
-    return global$2.map(targets, toMenuItem);
-  };
-  var staticMenuItem = function (title, url) {
-    return {
-      title: title,
-      value: {
+    var history = {};
+    var HISTORY_LENGTH = 5;
+    var clearHistory = function () {
+      history = {};
+    };
+    var toMenuItem = function (target) {
+      return {
+        title: target.title,
+        value: {
+          title: { raw: target.title },
+          url: target.url,
+          attach: target.attach
+        }
+      };
+    };
+    var toMenuItems = function (targets) {
+      return global$2.map(targets, toMenuItem);
+    };
+    var staticMenuItem = function (title, url) {
+      return {
         title: title,
-        url: url,
-        attach: noop
-      }
+        value: {
+          title: title,
+          url: url,
+          attach: noop
+        }
+      };
     };
-  };
-  var isUniqueUrl = function (url, targets) {
-    var foundTarget = exists(targets, function (target) {
-      return target.url === url;
-    });
-    return !foundTarget;
-  };
-  var getSetting = function (editorSettings, name, defaultValue) {
-    var value = name in editorSettings ? editorSettings[name] : defaultValue;
-    return value === false ? null : value;
-  };
-  var createMenuItems = function (term, targets, fileType, editorSettings) {
-    var separator = { title: '-' };
-    var fromHistoryMenuItems = function (history) {
-      var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];
-      var uniqueHistory = filter(historyItems, function (url) {
-        return isUniqueUrl(url, targets);
+    var isUniqueUrl = function (url, targets) {
+      var foundTarget = exists(targets, function (target) {
+        return target.url === url;
       });
-      return global$2.map(uniqueHistory, function (url) {
-        return {
-          title: url,
-          value: {
-            title: url,
-            url: url,
-            attach: noop
-          }
-        };
-      });
+      return !foundTarget;
     };
-    var fromMenuItems = function (type) {
-      var filteredTargets = filter(targets, function (target) {
-        return target.type === type;
-      });
-      return toMenuItems(filteredTargets);
+    var getSetting = function (editorSettings, name, defaultValue) {
+      var value = name in editorSettings ? editorSettings[name] : defaultValue;
+      return value === false ? null : value;
     };
-    var anchorMenuItems = function () {
-      var anchorMenuItems = fromMenuItems('anchor');
-      var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');
-      var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');
-      if (topAnchor !== null) {
-        anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));
+    var createMenuItems = function (term, targets, fileType, editorSettings) {
+      var separator = { title: '-' };
+      var fromHistoryMenuItems = function (history) {
+        var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];
+        var uniqueHistory = filter(historyItems, function (url) {
+          return isUniqueUrl(url, targets);
+        });
+        return global$2.map(uniqueHistory, function (url) {
+          return {
+            title: url,
+            value: {
+              title: url,
+              url: url,
+              attach: noop
+            }
+          };
+        });
+      };
+      var fromMenuItems = function (type) {
+        var filteredTargets = filter(targets, function (target) {
+          return target.type === type;
+        });
+        return toMenuItems(filteredTargets);
+      };
+      var anchorMenuItems = function () {
+        var anchorMenuItems = fromMenuItems('anchor');
+        var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');
+        var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');
+        if (topAnchor !== null) {
+          anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));
+        }
+        if (bottomAchor !== null) {
+          anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));
+        }
+        return anchorMenuItems;
+      };
+      var join = function (items) {
+        return foldl(items, function (a, b) {
+          var bothEmpty = a.length === 0 || b.length === 0;
+          return bothEmpty ? a.concat(b) : a.concat(separator, b);
+        }, []);
+      };
+      if (editorSettings.typeahead_urls === false) {
+        return [];
       }
-      if (bottomAchor !== null) {
-        anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));
+      return fileType === 'file' ? join([
+        filterByQuery(term, fromHistoryMenuItems(history)),
+        filterByQuery(term, fromMenuItems('header')),
+        filterByQuery(term, anchorMenuItems())
+      ]) : filterByQuery(term, fromHistoryMenuItems(history));
+    };
+    var addToHistory = function (url, fileType) {
+      var items = history[fileType];
+      if (!/^https?/.test(url)) {
+        return;
       }
-      return anchorMenuItems;
+      if (items) {
+        if (indexOf(items, url).isNone()) {
+          history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);
+        }
+      } else {
+        history[fileType] = [url];
+      }
     };
-    var join = function (items) {
-      return foldl(items, function (a, b) {
-        var bothEmpty = a.length === 0 || b.length === 0;
-        return bothEmpty ? a.concat(b) : a.concat(separator, b);
-      }, []);
+    var filterByQuery = function (term, menuItems) {
+      var lowerCaseTerm = term.toLowerCase();
+      var result = global$2.grep(menuItems, function (item) {
+        return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;
+      });
+      return result.length === 1 && result[0].title === term ? [] : result;
     };
-    if (editorSettings.typeahead_urls === false) {
-      return [];
-    }
-    return fileType === 'file' ? join([
-      filterByQuery(term, fromHistoryMenuItems(history)),
-      filterByQuery(term, fromMenuItems('header')),
-      filterByQuery(term, anchorMenuItems())
-    ]) : filterByQuery(term, fromHistoryMenuItems(history));
-  };
-  var addToHistory = function (url, fileType) {
-    var items = history[fileType];
-    if (!/^https?/.test(url)) {
-      return;
-    }
-    if (items) {
-      if (indexOf(items, url).isNone()) {
-        history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);
-      }
-    } else {
-      history[fileType] = [url];
-    }
-  };
-  var filterByQuery = function (term, menuItems) {
-    var lowerCaseTerm = term.toLowerCase();
-    var result = global$2.grep(menuItems, function (item) {
-      return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;
-    });
-    return result.length === 1 && result[0].title === term ? [] : result;
-  };
-  var getTitle = function (linkDetails) {
-    var title = linkDetails.title;
-    return title.raw ? title.raw : title;
-  };
-  var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {
-    var autocomplete = function (term) {
-      var linkTargets = $_7cacckvxjjgwefv6.find(bodyElm);
-      var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);
-      ctrl.showAutoComplete(menuItems, term);
+    var getTitle = function (linkDetails) {
+      var title = linkDetails.title;
+      return title.raw ? title.raw : title;
     };
-    ctrl.on('autocomplete', function () {
-      autocomplete(ctrl.value());
-    });
-    ctrl.on('selectitem', function (e) {
-      var linkDetails = e.value;
-      ctrl.value(linkDetails.url);
-      var title = getTitle(linkDetails);
-      if (fileType === 'image') {
-        ctrl.fire('change', {
-          meta: {
-            alt: title,
-            attach: linkDetails.attach
+    var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {
+      var autocomplete = function (term) {
+        var linkTargets = LinkTargets.find(bodyElm);
+        var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);
+        ctrl.showAutoComplete(menuItems, term);
+      };
+      ctrl.on('autocomplete', function () {
+        autocomplete(ctrl.value());
+      });
+      ctrl.on('selectitem', function (e) {
+        var linkDetails = e.value;
+        ctrl.value(linkDetails.url);
+        var title = getTitle(linkDetails);
+        if (fileType === 'image') {
+          ctrl.fire('change', {
+            meta: {
+              alt: title,
+              attach: linkDetails.attach
+            }
+          });
+        } else {
+          ctrl.fire('change', {
+            meta: {
+              text: title,
+              attach: linkDetails.attach
+            }
+          });
+        }
+        ctrl.focus();
+      });
+      ctrl.on('click', function (e) {
+        if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {
+          autocomplete('');
+        }
+      });
+      ctrl.on('PostRender', function () {
+        ctrl.getRoot().on('submit', function (e) {
+          if (!e.isDefaultPrevented()) {
+            addToHistory(ctrl.value(), fileType);
           }
         });
+      });
+    };
+    var statusToUiState = function (result) {
+      var status = result.status, message = result.message;
+      if (status === 'valid') {
+        return {
+          status: 'ok',
+          message: message
+        };
+      } else if (status === 'unknown') {
+        return {
+          status: 'warn',
+          message: message
+        };
+      } else if (status === 'invalid') {
+        return {
+          status: 'warn',
+          message: message
+        };
       } else {
-        ctrl.fire('change', {
-          meta: {
-            text: title,
-            attach: linkDetails.attach
+        return {
+          status: 'none',
+          message: ''
+        };
+      }
+    };
+    var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {
+      var validatorHandler = editorSettings.filepicker_validator_handler;
+      if (validatorHandler) {
+        var validateUrl_1 = function (url) {
+          if (url.length === 0) {
+            ctrl.statusLevel('none');
+            return;
           }
+          validatorHandler({
+            url: url,
+            type: fileType
+          }, function (result) {
+            var uiState = statusToUiState(result);
+            ctrl.statusMessage(uiState.message);
+            ctrl.statusLevel(uiState.status);
+          });
+        };
+        ctrl.state.on('change:value', function (e) {
+          validateUrl_1(e.value);
         });
       }
-      ctrl.focus();
-    });
-    ctrl.on('click', function (e) {
-      if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {
-        autocomplete('');
-      }
-    });
-    ctrl.on('PostRender', function () {
-      ctrl.getRoot().on('submit', function (e) {
-        if (!e.isDefaultPrevented()) {
-          addToHistory(ctrl.value(), fileType);
+    };
+    var FilePicker = ComboBox.extend({
+      Statics: { clearHistory: clearHistory },
+      init: function (settings) {
+        var self = this, editor = getActiveEditor(), editorSettings = editor.settings;
+        var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
+        var fileType = settings.filetype;
+        settings.spellcheck = false;
+        fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
+        if (fileBrowserCallbackTypes) {
+          fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);
         }
-      });
-    });
-  };
-  var statusToUiState = function (result) {
-    var status = result.status, message = result.message;
-    if (status === 'valid') {
-      return {
-        status: 'ok',
-        message: message
-      };
-    } else if (status === 'unknown') {
-      return {
-        status: 'warn',
-        message: message
-      };
-    } else if (status === 'invalid') {
-      return {
-        status: 'warn',
-        message: message
-      };
-    } else {
-      return {
-        status: 'none',
-        message: ''
-      };
-    }
-  };
-  var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {
-    var validatorHandler = editorSettings.filepicker_validator_handler;
-    if (validatorHandler) {
-      var validateUrl_1 = function (url) {
-        if (url.length === 0) {
-          ctrl.statusLevel('none');
-          return;
-        }
-        validatorHandler({
-          url: url,
-          type: fileType
-        }, function (result) {
-          var uiState = statusToUiState(result);
-          ctrl.statusMessage(uiState.message);
-          ctrl.statusLevel(uiState.status);
-        });
-      };
-      ctrl.state.on('change:value', function (e) {
-        validateUrl_1(e.value);
-      });
-    }
-  };
-  var FilePicker = ComboBox.extend({
-    Statics: { clearHistory: clearHistory },
-    init: function (settings) {
-      var self = this, editor = getActiveEditor(), editorSettings = editor.settings;
-      var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
-      var fileType = settings.filetype;
-      settings.spellcheck = false;
-      fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
-      if (fileBrowserCallbackTypes) {
-        fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);
-      }
-      if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {
-        fileBrowserCallback = editorSettings.file_picker_callback;
-        if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
-          actionCallback = function () {
-            var meta = self.fire('beforecall').meta;
-            meta = global$2.extend({ filetype: fileType }, meta);
-            fileBrowserCallback.call(editor, function (value, meta) {
-              self.value(value).fire('change', { meta: meta });
-            }, self.value(), meta);
-          };
-        } else {
-          fileBrowserCallback = editorSettings.file_browser_callback;
+        if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {
+          fileBrowserCallback = editorSettings.file_picker_callback;
           if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
             actionCallback = function () {
-              fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);
+              var meta = self.fire('beforecall').meta;
+              meta = global$2.extend({ filetype: fileType }, meta);
+              fileBrowserCallback.call(editor, function (value, meta) {
+                self.value(value).fire('change', { meta: meta });
+              }, self.value(), meta);
             };
+          } else {
+            fileBrowserCallback = editorSettings.file_browser_callback;
+            if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
+              actionCallback = function () {
+                fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);
+              };
+            }
           }
         }
+        if (actionCallback) {
+          settings.icon = 'browse';
+          settings.onaction = actionCallback;
+        }
+        self._super(settings);
+        self.classes.add('filepicker');
+        setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);
+        setupLinkValidatorHandler(self, editorSettings, fileType);
       }
-      if (actionCallback) {
-        settings.icon = 'browse';
-        settings.onaction = actionCallback;
-      }
-      self._super(settings);
-      self.classes.add('filepicker');
-      setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);
-      setupLinkValidatorHandler(self, editorSettings, fileType);
-    }
-  });
+    });
 
-  var FitLayout = AbsoluteLayout.extend({
-    recalc: function (container) {
-      var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;
-      container.items().filter(':visible').each(function (ctrl) {
-        ctrl.layoutRect({
-          x: paddingBox.left,
-          y: paddingBox.top,
-          w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
-          h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+    var FitLayout = AbsoluteLayout.extend({
+      recalc: function (container) {
+        var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;
+        container.items().filter(':visible').each(function (ctrl) {
+          ctrl.layoutRect({
+            x: paddingBox.left,
+            y: paddingBox.top,
+            w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
+            h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+          });
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
         });
-        if (ctrl.recalc) {
-          ctrl.recalc();
-        }
-      });
-    }
-  });
+      }
+    });
 
-  var FlexLayout = AbsoluteLayout.extend({
-    recalc: function (container) {
-      var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
-      var ctrl, ctrlLayoutRect, ctrlSettings, flex;
-      var maxSizeItems = [];
-      var size, maxSize, ratio, rect, pos, maxAlignEndPos;
-      var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
-      var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
-      var alignDeltaSizeName, alignContentSizeName;
-      var max = Math.max, min = Math.min;
-      items = container.items().filter(':visible');
-      contLayoutRect = container.layoutRect();
-      contPaddingBox = container.paddingBox;
-      contSettings = container.settings;
-      direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;
-      align = contSettings.align;
-      pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;
-      spacing = contSettings.spacing || 0;
-      if (direction === 'row-reversed' || direction === 'column-reverse') {
-        items = items.set(items.toArray().reverse());
-        direction = direction.split('-')[0];
-      }
-      if (direction === 'column') {
-        posName = 'y';
-        sizeName = 'h';
-        minSizeName = 'minH';
-        maxSizeName = 'maxH';
-        innerSizeName = 'innerH';
-        beforeName = 'top';
-        deltaSizeName = 'deltaH';
-        contentSizeName = 'contentH';
-        alignBeforeName = 'left';
-        alignSizeName = 'w';
-        alignAxisName = 'x';
-        alignInnerSizeName = 'innerW';
-        alignMinSizeName = 'minW';
-        alignAfterName = 'right';
-        alignDeltaSizeName = 'deltaW';
-        alignContentSizeName = 'contentW';
-      } else {
-        posName = 'x';
-        sizeName = 'w';
-        minSizeName = 'minW';
-        maxSizeName = 'maxW';
-        innerSizeName = 'innerW';
-        beforeName = 'left';
-        deltaSizeName = 'deltaW';
-        contentSizeName = 'contentW';
-        alignBeforeName = 'top';
-        alignSizeName = 'h';
-        alignAxisName = 'y';
-        alignInnerSizeName = 'innerH';
-        alignMinSizeName = 'minH';
-        alignAfterName = 'bottom';
-        alignDeltaSizeName = 'deltaH';
-        alignContentSizeName = 'contentH';
-      }
-      availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
-      maxAlignEndPos = totalFlex = 0;
-      for (i = 0, l = items.length; i < l; i++) {
-        ctrl = items[i];
-        ctrlLayoutRect = ctrl.layoutRect();
-        ctrlSettings = ctrl.settings;
-        flex = ctrlSettings.flex;
-        availableSpace -= i < l - 1 ? spacing : 0;
-        if (flex > 0) {
-          totalFlex += flex;
-          if (ctrlLayoutRect[maxSizeName]) {
-            maxSizeItems.push(ctrl);
-          }
-          ctrlLayoutRect.flex = flex;
+    var FlexLayout = AbsoluteLayout.extend({
+      recalc: function (container) {
+        var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
+        var ctrl, ctrlLayoutRect, ctrlSettings, flex;
+        var maxSizeItems = [];
+        var size, maxSize, ratio, rect, pos, maxAlignEndPos;
+        var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
+        var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
+        var alignDeltaSizeName, alignContentSizeName;
+        var max = Math.max, min = Math.min;
+        items = container.items().filter(':visible');
+        contLayoutRect = container.layoutRect();
+        contPaddingBox = container.paddingBox;
+        contSettings = container.settings;
+        direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;
+        align = contSettings.align;
+        pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;
+        spacing = contSettings.spacing || 0;
+        if (direction === 'row-reversed' || direction === 'column-reverse') {
+          items = items.set(items.toArray().reverse());
+          direction = direction.split('-')[0];
         }
-        availableSpace -= ctrlLayoutRect[minSizeName];
-        size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
-        if (size > maxAlignEndPos) {
-          maxAlignEndPos = size;
+        if (direction === 'column') {
+          posName = 'y';
+          sizeName = 'h';
+          minSizeName = 'minH';
+          maxSizeName = 'maxH';
+          innerSizeName = 'innerH';
+          beforeName = 'top';
+          deltaSizeName = 'deltaH';
+          contentSizeName = 'contentH';
+          alignBeforeName = 'left';
+          alignSizeName = 'w';
+          alignAxisName = 'x';
+          alignInnerSizeName = 'innerW';
+          alignMinSizeName = 'minW';
+          alignAfterName = 'right';
+          alignDeltaSizeName = 'deltaW';
+          alignContentSizeName = 'contentW';
+        } else {
+          posName = 'x';
+          sizeName = 'w';
+          minSizeName = 'minW';
+          maxSizeName = 'maxW';
+          innerSizeName = 'innerW';
+          beforeName = 'left';
+          deltaSizeName = 'deltaW';
+          contentSizeName = 'contentW';
+          alignBeforeName = 'top';
+          alignSizeName = 'h';
+          alignAxisName = 'y';
+          alignInnerSizeName = 'innerH';
+          alignMinSizeName = 'minH';
+          alignAfterName = 'bottom';
+          alignDeltaSizeName = 'deltaH';
+          alignContentSizeName = 'contentH';
         }
-      }
-      rect = {};
-      if (availableSpace < 0) {
-        rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
-      } else {
-        rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
-      }
-      rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
-      rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
-      rect[alignContentSizeName] = maxAlignEndPos;
-      rect.minW = min(rect.minW, contLayoutRect.maxW);
-      rect.minH = min(rect.minH, contLayoutRect.maxH);
-      rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
-      rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
-      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
-        rect.w = rect.minW;
-        rect.h = rect.minH;
-        container.layoutRect(rect);
-        this.recalc(container);
-        if (container._lastRect === null) {
-          var parentCtrl = container.parent();
-          if (parentCtrl) {
-            parentCtrl._lastRect = null;
-            parentCtrl.recalc();
+        availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
+        maxAlignEndPos = totalFlex = 0;
+        for (i = 0, l = items.length; i < l; i++) {
+          ctrl = items[i];
+          ctrlLayoutRect = ctrl.layoutRect();
+          ctrlSettings = ctrl.settings;
+          flex = ctrlSettings.flex;
+          availableSpace -= i < l - 1 ? spacing : 0;
+          if (flex > 0) {
+            totalFlex += flex;
+            if (ctrlLayoutRect[maxSizeName]) {
+              maxSizeItems.push(ctrl);
+            }
+            ctrlLayoutRect.flex = flex;
           }
+          availableSpace -= ctrlLayoutRect[minSizeName];
+          size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
+          if (size > maxAlignEndPos) {
+            maxAlignEndPos = size;
+          }
         }
-        return;
-      }
-      ratio = availableSpace / totalFlex;
-      for (i = 0, l = maxSizeItems.length; i < l; i++) {
-        ctrl = maxSizeItems[i];
-        ctrlLayoutRect = ctrl.layoutRect();
-        maxSize = ctrlLayoutRect[maxSizeName];
-        size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
-        if (size > maxSize) {
-          availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];
-          totalFlex -= ctrlLayoutRect.flex;
-          ctrlLayoutRect.flex = 0;
-          ctrlLayoutRect.maxFlexSize = maxSize;
+        rect = {};
+        if (availableSpace < 0) {
+          rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
         } else {
-          ctrlLayoutRect.maxFlexSize = 0;
+          rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
         }
-      }
-      ratio = availableSpace / totalFlex;
-      pos = contPaddingBox[beforeName];
-      rect = {};
-      if (totalFlex === 0) {
-        if (pack === 'end') {
-          pos = availableSpace + contPaddingBox[beforeName];
-        } else if (pack === 'center') {
-          pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];
-          if (pos < 0) {
-            pos = contPaddingBox[beforeName];
+        rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
+        rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
+        rect[alignContentSizeName] = maxAlignEndPos;
+        rect.minW = min(rect.minW, contLayoutRect.maxW);
+        rect.minH = min(rect.minH, contLayoutRect.maxH);
+        rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
+        rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
+        if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
+          rect.w = rect.minW;
+          rect.h = rect.minH;
+          container.layoutRect(rect);
+          this.recalc(container);
+          if (container._lastRect === null) {
+            var parentCtrl = container.parent();
+            if (parentCtrl) {
+              parentCtrl._lastRect = null;
+              parentCtrl.recalc();
+            }
           }
-        } else if (pack === 'justify') {
-          pos = contPaddingBox[beforeName];
-          spacing = Math.floor(availableSpace / (items.length - 1));
+          return;
         }
-      }
-      rect[alignAxisName] = contPaddingBox[alignBeforeName];
-      for (i = 0, l = items.length; i < l; i++) {
-        ctrl = items[i];
-        ctrlLayoutRect = ctrl.layoutRect();
-        size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
-        if (align === 'center') {
-          rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);
-        } else if (align === 'stretch') {
-          rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);
-          rect[alignAxisName] = contPaddingBox[alignBeforeName];
-        } else if (align === 'end') {
-          rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+        ratio = availableSpace / totalFlex;
+        for (i = 0, l = maxSizeItems.length; i < l; i++) {
+          ctrl = maxSizeItems[i];
+          ctrlLayoutRect = ctrl.layoutRect();
+          maxSize = ctrlLayoutRect[maxSizeName];
+          size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
+          if (size > maxSize) {
+            availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];
+            totalFlex -= ctrlLayoutRect.flex;
+            ctrlLayoutRect.flex = 0;
+            ctrlLayoutRect.maxFlexSize = maxSize;
+          } else {
+            ctrlLayoutRect.maxFlexSize = 0;
+          }
         }
-        if (ctrlLayoutRect.flex > 0) {
-          size += ctrlLayoutRect.flex * ratio;
+        ratio = availableSpace / totalFlex;
+        pos = contPaddingBox[beforeName];
+        rect = {};
+        if (totalFlex === 0) {
+          if (pack === 'end') {
+            pos = availableSpace + contPaddingBox[beforeName];
+          } else if (pack === 'center') {
+            pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];
+            if (pos < 0) {
+              pos = contPaddingBox[beforeName];
+            }
+          } else if (pack === 'justify') {
+            pos = contPaddingBox[beforeName];
+            spacing = Math.floor(availableSpace / (items.length - 1));
+          }
         }
-        rect[sizeName] = size;
-        rect[posName] = pos;
-        ctrl.layoutRect(rect);
-        if (ctrl.recalc) {
-          ctrl.recalc();
+        rect[alignAxisName] = contPaddingBox[alignBeforeName];
+        for (i = 0, l = items.length; i < l; i++) {
+          ctrl = items[i];
+          ctrlLayoutRect = ctrl.layoutRect();
+          size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
+          if (align === 'center') {
+            rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);
+          } else if (align === 'stretch') {
+            rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);
+            rect[alignAxisName] = contPaddingBox[alignBeforeName];
+          } else if (align === 'end') {
+            rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+          }
+          if (ctrlLayoutRect.flex > 0) {
+            size += ctrlLayoutRect.flex * ratio;
+          }
+          rect[sizeName] = size;
+          rect[posName] = pos;
+          ctrl.layoutRect(rect);
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
+          pos += size + spacing;
         }
-        pos += size + spacing;
       }
-    }
-  });
+    });
 
-  var FlowLayout = Layout.extend({
-    Defaults: {
-      containerClass: 'flow-layout',
-      controlClass: 'flow-layout-item',
-      endClass: 'break'
-    },
-    recalc: function (container) {
-      container.items().filter(':visible').each(function (ctrl) {
-        if (ctrl.recalc) {
-          ctrl.recalc();
-        }
-      });
-    },
-    isNative: function () {
-      return true;
-    }
-  });
-
-  function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {
-    return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);
-  }
-
-  var first$1 = function (predicate) {
-    return descendant($_g7jljiw2jjgwefvu.body(), predicate);
-  };
-  var ancestor = function (scope, predicate, isRoot) {
-    var element = scope.dom();
-    var stop = isFunction(isRoot) ? isRoot : constant(false);
-    while (element.parentNode) {
-      element = element.parentNode;
-      var el = Element$$1.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 = function (scope, predicate) {
-    var element = scope.dom();
-    if (!element.parentNode)
-      return Option.none();
-    return child$1(Element$$1.fromDom(element.parentNode), function (x) {
-      return !$_bdbghwwdjjgwefx0.eq(scope, x) && predicate(x);
-    });
-  };
-  var child$1 = function (scope, predicate) {
-    var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));
-    return result.map(Element$$1.fromDom);
-  };
-  var descendant = function (scope, predicate) {
-    var descend = function (node) {
-      for (var i = 0; i < node.childNodes.length; i++) {
-        if (predicate(Element$$1.fromDom(node.childNodes[i])))
-          return Option.some(Element$$1.fromDom(node.childNodes[i]));
-        var res = descend(node.childNodes[i]);
-        if (res.isSome())
-          return res;
+    var FlowLayout = Layout.extend({
+      Defaults: {
+        containerClass: 'flow-layout',
+        controlClass: 'flow-layout-item',
+        endClass: 'break'
+      },
+      recalc: function (container) {
+        container.items().filter(':visible').each(function (ctrl) {
+          if (ctrl.recalc) {
+            ctrl.recalc();
+          }
+        });
+      },
+      isNative: function () {
+        return true;
       }
-      return Option.none();
-    };
-    return descend(scope.dom());
-  };
-  var $_2htnvowzjjgwefz5 = {
-    first: first$1,
-    ancestor: ancestor,
-    closest: closest,
-    sibling: sibling,
-    child: child$1,
-    descendant: descendant
-  };
-
-  var first$2 = function (selector) {
-    return $_ofcqhwtjjgwefyb.one(selector);
-  };
-  var ancestor$1 = function (scope, selector, isRoot) {
-    return $_2htnvowzjjgwefz5.ancestor(scope, function (e) {
-      return $_ofcqhwtjjgwefyb.is(e, selector);
-    }, isRoot);
-  };
-  var sibling$1 = function (scope, selector) {
-    return $_2htnvowzjjgwefz5.sibling(scope, function (e) {
-      return $_ofcqhwtjjgwefyb.is(e, selector);
     });
-  };
-  var child$2 = function (scope, selector) {
-    return $_2htnvowzjjgwefz5.child(scope, function (e) {
-      return $_ofcqhwtjjgwefyb.is(e, selector);
-    });
-  };
-  var descendant$1 = function (scope, selector) {
-    return $_ofcqhwtjjgwefyb.one(selector, scope);
-  };
-  var closest$1 = function (scope, selector, isRoot) {
-    return ClosestOrAncestor($_ofcqhwtjjgwefyb.is, ancestor$1, scope, selector, isRoot);
-  };
-  var $_4ftvxwwyjjgwefz3 = {
-    first: first$2,
-    ancestor: ancestor$1,
-    sibling: sibling$1,
-    child: child$2,
-    descendant: descendant$1,
-    closest: closest$1
-  };
 
-  var toggleFormat = function (editor, fmt) {
-    return function () {
-      editor.execCommand('mceToggleFormat', false, fmt);
+    var descendant$1 = function (scope, selector) {
+      return one(selector, scope);
     };
-  };
-  var addFormatChangedListener = function (editor, name, changed) {
-    var handler = function (state) {
-      changed(state, name);
+
+    var toggleFormat = function (editor, fmt) {
+      return function () {
+        editor.execCommand('mceToggleFormat', false, fmt);
+      };
     };
-    if (editor.formatter) {
-      editor.formatter.formatChanged(name, handler);
-    } else {
-      editor.on('init', function () {
+    var addFormatChangedListener = function (editor, name, changed) {
+      var handler = function (state) {
+        changed(state, name);
+      };
+      if (editor.formatter) {
         editor.formatter.formatChanged(name, handler);
-      });
-    }
-  };
-  var postRenderFormatToggle = function (editor, name) {
-    return function (e) {
-      addFormatChangedListener(editor, name, function (state) {
-        e.control.active(state);
-      });
+      } else {
+        editor.on('init', function () {
+          editor.formatter.formatChanged(name, handler);
+        });
+      }
     };
-  };
+    var postRenderFormatToggle = function (editor, name) {
+      return function (e) {
+        addFormatChangedListener(editor, name, function (state) {
+          e.control.active(state);
+        });
+      };
+    };
 
-  var register = function (editor) {
-    var alignFormats = [
-      'alignleft',
-      'aligncenter',
-      'alignright',
-      'alignjustify'
-    ];
-    var defaultAlign = 'alignleft';
-    var alignMenuItems = [
-      {
-        text: 'Left',
-        icon: 'alignleft',
-        onclick: toggleFormat(editor, 'alignleft')
-      },
-      {
-        text: 'Center',
-        icon: 'aligncenter',
-        onclick: toggleFormat(editor, 'aligncenter')
-      },
-      {
-        text: 'Right',
-        icon: 'alignright',
-        onclick: toggleFormat(editor, 'alignright')
-      },
-      {
-        text: 'Justify',
-        icon: 'alignjustify',
-        onclick: toggleFormat(editor, 'alignjustify')
-      }
-    ];
-    editor.addMenuItem('align', {
-      text: 'Align',
-      menu: alignMenuItems
-    });
-    editor.addButton('align', {
-      type: 'menubutton',
-      icon: defaultAlign,
-      menu: alignMenuItems,
-      onShowMenu: function (e) {
-        var menu = e.control.menu;
-        global$2.each(alignFormats, function (formatName, idx) {
-          menu.items().eq(idx).each(function (item) {
-            return item.active(editor.formatter.match(formatName));
+    var register = function (editor) {
+      var alignFormats = [
+        'alignleft',
+        'aligncenter',
+        'alignright',
+        'alignjustify'
+      ];
+      var defaultAlign = 'alignleft';
+      var alignMenuItems = [
+        {
+          text: 'Left',
+          icon: 'alignleft',
+          onclick: toggleFormat(editor, 'alignleft')
+        },
+        {
+          text: 'Center',
+          icon: 'aligncenter',
+          onclick: toggleFormat(editor, 'aligncenter')
+        },
+        {
+          text: 'Right',
+          icon: 'alignright',
+          onclick: toggleFormat(editor, 'alignright')
+        },
+        {
+          text: 'Justify',
+          icon: 'alignjustify',
+          onclick: toggleFormat(editor, 'alignjustify')
+        }
+      ];
+      editor.addMenuItem('align', {
+        text: 'Align',
+        menu: alignMenuItems
+      });
+      editor.addButton('align', {
+        type: 'menubutton',
+        icon: defaultAlign,
+        menu: alignMenuItems,
+        onShowMenu: function (e) {
+          var menu = e.control.menu;
+          global$2.each(alignFormats, function (formatName, idx) {
+            menu.items().eq(idx).each(function (item) {
+              return item.active(editor.formatter.match(formatName));
+            });
           });
-        });
-      },
-      onPostRender: function (e) {
-        var ctrl = e.control;
-        global$2.each(alignFormats, function (formatName, idx) {
-          addFormatChangedListener(editor, formatName, function (state) {
-            ctrl.icon(defaultAlign);
-            if (state) {
-              ctrl.icon(formatName);
-            }
+        },
+        onPostRender: function (e) {
+          var ctrl = e.control;
+          global$2.each(alignFormats, function (formatName, idx) {
+            addFormatChangedListener(editor, formatName, function (state) {
+              ctrl.icon(defaultAlign);
+              if (state) {
+                ctrl.icon(formatName);
+              }
+            });
           });
+        }
+      });
+      global$2.each({
+        alignleft: [
+          'Align left',
+          'JustifyLeft'
+        ],
+        aligncenter: [
+          'Align center',
+          'JustifyCenter'
+        ],
+        alignright: [
+          'Align right',
+          'JustifyRight'
+        ],
+        alignjustify: [
+          'Justify',
+          'JustifyFull'
+        ],
+        alignnone: [
+          'No alignment',
+          'JustifyNone'
+        ]
+      }, function (item, name) {
+        editor.addButton(name, {
+          active: false,
+          tooltip: item[0],
+          cmd: item[1],
+          onPostRender: postRenderFormatToggle(editor, name)
         });
-      }
-    });
-    global$2.each({
-      alignleft: [
-        'Align left',
-        'JustifyLeft'
-      ],
-      aligncenter: [
-        'Align center',
-        'JustifyCenter'
-      ],
-      alignright: [
-        'Align right',
-        'JustifyRight'
-      ],
-      alignjustify: [
-        'Justify',
-        'JustifyFull'
-      ],
-      alignnone: [
-        'No alignment',
-        'JustifyNone'
-      ]
-    }, function (item, name) {
-      editor.addButton(name, {
-        active: false,
-        tooltip: item[0],
-        cmd: item[1],
-        onPostRender: postRenderFormatToggle(editor, name)
       });
-    });
-  };
-  var $_cz4u4px1jjgwefzl = { register: register };
+    };
+    var Align = { register: register };
 
-  var getFirstFont = function (fontFamily) {
-    return fontFamily ? fontFamily.split(',')[0] : '';
-  };
-  var findMatchingValue = function (items, fontFamily) {
-    var font = fontFamily ? fontFamily.toLowerCase() : '';
-    var value;
-    global$2.each(items, function (item) {
-      if (item.value.toLowerCase() === font) {
-        value = item.value;
-      }
-    });
-    global$2.each(items, function (item) {
-      if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {
-        value = item.value;
-      }
-    });
-    return value;
-  };
-  var createFontNameListBoxChangeHandler = function (editor, items) {
-    return function () {
-      var self = this;
-      self.state.set('value', null);
-      editor.on('init nodeChange', function (e) {
-        var fontFamily = editor.queryCommandValue('FontName');
-        var match = findMatchingValue(items, fontFamily);
-        self.value(match ? match : null);
-        if (!match && fontFamily) {
-          self.text(getFirstFont(fontFamily));
+    var getFirstFont = function (fontFamily) {
+      return fontFamily ? fontFamily.split(',')[0] : '';
+    };
+    var findMatchingValue = function (items, fontFamily) {
+      var font = fontFamily ? fontFamily.toLowerCase() : '';
+      var value;
+      global$2.each(items, function (item) {
+        if (item.value.toLowerCase() === font) {
+          value = item.value;
         }
       });
+      global$2.each(items, function (item) {
+        if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {
+          value = item.value;
+        }
+      });
+      return value;
     };
-  };
-  var createFormats = function (formats) {
-    formats = formats.replace(/;$/, '').split(';');
-    var i = formats.length;
-    while (i--) {
-      formats[i] = formats[i].split('=');
-    }
-    return formats;
-  };
-  var getFontItems = function (editor) {
-    var defaultFontsFormats = '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';
-    var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
-    return global$2.map(fonts, function (font) {
-      return {
-        text: { raw: font[0] },
-        value: font[1],
-        textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''
-      };
-    });
-  };
-  var registerButtons = function (editor) {
-    editor.addButton('fontselect', function () {
-      var items = getFontItems(editor);
-      return {
-        type: 'listbox',
-        text: 'Font Family',
-        tooltip: 'Font Family',
-        values: items,
-        fixedWidth: true,
-        onPostRender: createFontNameListBoxChangeHandler(editor, items),
-        onselect: function (e) {
-          if (e.control.settings.value) {
-            editor.execCommand('FontName', false, e.control.settings.value);
+    var createFontNameListBoxChangeHandler = function (editor, items) {
+      return function () {
+        var self = this;
+        self.state.set('value', null);
+        editor.on('init nodeChange', function (e) {
+          var fontFamily = editor.queryCommandValue('FontName');
+          var match = findMatchingValue(items, fontFamily);
+          self.value(match ? match : null);
+          if (!match && fontFamily) {
+            self.text(getFirstFont(fontFamily));
           }
-        }
+        });
       };
-    });
-  };
-  var register$1 = function (editor) {
-    registerButtons(editor);
-  };
-  var $_f7ngpex3jjgwefzo = { register: register$1 };
-
-  var round = function (number, precision) {
-    var factor = Math.pow(10, precision);
-    return Math.round(number * factor) / factor;
-  };
-  var toPt = function (fontSize, precision) {
-    if (/[0-9.]+px$/.test(fontSize)) {
-      return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';
-    }
-    return fontSize;
-  };
-  var findMatchingValue$1 = function (items, pt, px) {
-    var value;
-    global$2.each(items, function (item) {
-      if (item.value === px) {
-        value = px;
-      } else if (item.value === pt) {
-        value = pt;
+    };
+    var createFormats = function (formats) {
+      formats = formats.replace(/;$/, '').split(';');
+      var i = formats.length;
+      while (i--) {
+        formats[i] = formats[i].split('=');
       }
-    });
-    return value;
-  };
-  var createFontSizeListBoxChangeHandler = function (editor, items) {
-    return function () {
-      var self = this;
-      editor.on('init nodeChange', function (e) {
-        var px, pt, precision, match;
-        px = editor.queryCommandValue('FontSize');
-        if (px) {
-          for (precision = 3; !match && precision >= 0; precision--) {
-            pt = toPt(px, precision);
-            match = findMatchingValue$1(items, pt, px);
+      return formats;
+    };
+    var getFontItems = function (editor) {
+      var defaultFontsFormats = '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';
+      var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
+      return global$2.map(fonts, function (font) {
+        return {
+          text: { raw: font[0] },
+          value: font[1],
+          textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''
+        };
+      });
+    };
+    var registerButtons = function (editor) {
+      editor.addButton('fontselect', function () {
+        var items = getFontItems(editor);
+        return {
+          type: 'listbox',
+          text: 'Font Family',
+          tooltip: 'Font Family',
+          values: items,
+          fixedWidth: true,
+          onPostRender: createFontNameListBoxChangeHandler(editor, items),
+          onselect: function (e) {
+            if (e.control.settings.value) {
+              editor.execCommand('FontName', false, e.control.settings.value);
+            }
           }
-        }
-        self.value(match ? match : null);
-        if (!match) {
-          self.text(pt);
-        }
+        };
       });
     };
-  };
-  var getFontSizeItems = function (editor) {
-    var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
-    var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;
-    return global$2.map(fontsizeFormats.split(' '), function (item) {
-      var text = item, value = item;
-      var values = item.split('=');
-      if (values.length > 1) {
-        text = values[0];
-        value = values[1];
+    var register$1 = function (editor) {
+      registerButtons(editor);
+    };
+    var FontSelect = { register: register$1 };
+
+    var round = function (number, precision) {
+      var factor = Math.pow(10, precision);
+      return Math.round(number * factor) / factor;
+    };
+    var toPt = function (fontSize, precision) {
+      if (/[0-9.]+px$/.test(fontSize)) {
+        return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';
       }
-      return {
-        text: text,
-        value: value
-      };
-    });
-  };
-  var registerButtons$1 = function (editor) {
-    editor.addButton('fontsizeselect', function () {
-      var items = getFontSizeItems(editor);
-      return {
-        type: 'listbox',
-        text: 'Font Sizes',
-        tooltip: 'Font Sizes',
-        values: items,
-        fixedWidth: true,
-        onPostRender: createFontSizeListBoxChangeHandler(editor, items),
-        onclick: function (e) {
-          if (e.control.settings.value) {
-            editor.execCommand('FontSize', false, e.control.settings.value);
-          }
+      return fontSize;
+    };
+    var findMatchingValue$1 = function (items, pt, px) {
+      var value;
+      global$2.each(items, function (item) {
+        if (item.value === px) {
+          value = px;
+        } else if (item.value === pt) {
+          value = pt;
         }
-      };
-    });
-  };
-  var register$2 = function (editor) {
-    registerButtons$1(editor);
-  };
-  var $_9a6bd5x4jjgwefzr = { register: register$2 };
-
-  var hideMenuObjects = function (editor, menu) {
-    var count = menu.length;
-    global$2.each(menu, function (item) {
-      if (item.menu) {
-        item.hidden = hideMenuObjects(editor, item.menu) === 0;
-      }
-      var formatName = item.format;
-      if (formatName) {
-        item.hidden = !editor.formatter.canApply(formatName);
-      }
-      if (item.hidden) {
-        count--;
-      }
-    });
-    return count;
-  };
-  var hideFormatMenuItems = function (editor, menu) {
-    var count = menu.items().length;
-    menu.items().each(function (item) {
-      if (item.menu) {
-        item.visible(hideFormatMenuItems(editor, item.menu) > 0);
-      }
-      if (!item.menu && item.settings.menu) {
-        item.visible(hideMenuObjects(editor, item.settings.menu) > 0);
-      }
-      var formatName = item.settings.format;
-      if (formatName) {
-        item.visible(editor.formatter.canApply(formatName));
-      }
-      if (!item.visible()) {
-        count--;
-      }
-    });
-    return count;
-  };
-  var createFormatMenu = function (editor) {
-    var count = 0;
-    var newFormats = [];
-    var defaultStyleFormats = [
-      {
-        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'
+      });
+      return value;
+    };
+    var createFontSizeListBoxChangeHandler = function (editor, items) {
+      return function () {
+        var self = this;
+        editor.on('init nodeChange', function (e) {
+          var px, pt, precision, match;
+          px = editor.queryCommandValue('FontSize');
+          if (px) {
+            for (precision = 3; !match && precision >= 0; precision--) {
+              pt = toPt(px, precision);
+              match = findMatchingValue$1(items, pt, px);
+            }
           }
-        ]
-      },
-      {
-        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'
+          self.value(match ? match : null);
+          if (!match) {
+            self.text(pt);
           }
-        ]
-      },
-      {
-        title: 'Blocks',
-        items: [
-          {
-            title: 'Paragraph',
-            format: 'p'
-          },
-          {
-            title: 'Blockquote',
-            format: 'blockquote'
-          },
-          {
-            title: 'Div',
-            format: 'div'
-          },
-          {
-            title: 'Pre',
-            format: 'pre'
+        });
+      };
+    };
+    var getFontSizeItems = function (editor) {
+      var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
+      var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;
+      return global$2.map(fontsizeFormats.split(' '), function (item) {
+        var text = item, value = item;
+        var values = item.split('=');
+        if (values.length > 1) {
+          text = values[0];
+          value = values[1];
+        }
+        return {
+          text: text,
+          value: value
+        };
+      });
+    };
+    var registerButtons$1 = function (editor) {
+      editor.addButton('fontsizeselect', function () {
+        var items = getFontSizeItems(editor);
+        return {
+          type: 'listbox',
+          text: 'Font Sizes',
+          tooltip: 'Font Sizes',
+          values: items,
+          fixedWidth: true,
+          onPostRender: createFontSizeListBoxChangeHandler(editor, items),
+          onclick: function (e) {
+            if (e.control.settings.value) {
+              editor.execCommand('FontSize', false, e.control.settings.value);
+            }
           }
-        ]
-      },
-      {
-        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'
-          }
-        ]
-      }
-    ];
-    var createMenu = function (formats) {
-      var menu = [];
-      if (!formats) {
-        return;
-      }
-      global$2.each(formats, function (format) {
-        var menuItem = {
-          text: format.title,
-          icon: format.icon
         };
-        if (format.items) {
-          menuItem.menu = createMenu(format.items);
-        } else {
-          var formatName = format.format || 'custom' + count++;
-          if (!format.format) {
-            format.name = formatName;
-            newFormats.push(format);
-          }
-          menuItem.format = formatName;
-          menuItem.cmd = format.cmd;
+      });
+    };
+    var register$2 = function (editor) {
+      registerButtons$1(editor);
+    };
+    var FontSizeSelect = { register: register$2 };
+
+    var hideMenuObjects = function (editor, menu) {
+      var count = menu.length;
+      global$2.each(menu, function (item) {
+        if (item.menu) {
+          item.hidden = hideMenuObjects(editor, item.menu) === 0;
         }
-        menu.push(menuItem);
+        var formatName = item.format;
+        if (formatName) {
+          item.hidden = !editor.formatter.canApply(formatName);
+        }
+        if (item.hidden) {
+          count--;
+        }
       });
-      return menu;
+      return count;
     };
-    var createStylesMenu = function () {
-      var menu;
-      if (editor.settings.style_formats_merge) {
-        if (editor.settings.style_formats) {
-          menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
-        } else {
-          menu = createMenu(defaultStyleFormats);
+    var hideFormatMenuItems = function (editor, menu) {
+      var count = menu.items().length;
+      menu.items().each(function (item) {
+        if (item.menu) {
+          item.visible(hideFormatMenuItems(editor, item.menu) > 0);
         }
-      } else {
-        menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
-      }
-      return menu;
+        if (!item.menu && item.settings.menu) {
+          item.visible(hideMenuObjects(editor, item.settings.menu) > 0);
+        }
+        var formatName = item.settings.format;
+        if (formatName) {
+          item.visible(editor.formatter.canApply(formatName));
+        }
+        if (!item.visible()) {
+          count--;
+        }
+      });
+      return count;
     };
-    editor.on('init', function () {
-      global$2.each(newFormats, function (format) {
-        editor.formatter.register(format.name, format);
-      });
-    });
-    return {
-      type: 'menu',
-      items: createStylesMenu(),
-      onPostRender: function (e) {
-        editor.fire('renderFormatsMenu', { control: e.control });
-      },
-      itemDefaults: {
-        preview: true,
-        textStyle: function () {
-          if (this.settings.format) {
-            return editor.formatter.getCssText(this.settings.format);
-          }
+    var createFormatMenu = function (editor) {
+      var count = 0;
+      var newFormats = [];
+      var defaultStyleFormats = [
+        {
+          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'
+            }
+          ]
         },
-        onPostRender: function () {
-          var self = this;
-          self.parent().on('show', function () {
-            var formatName, command;
-            formatName = self.settings.format;
-            if (formatName) {
-              self.disabled(!editor.formatter.canApply(formatName));
-              self.active(editor.formatter.match(formatName));
+        {
+          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'
             }
-            command = self.settings.cmd;
-            if (command) {
-              self.active(editor.queryCommandState(command));
+          ]
+        },
+        {
+          title: 'Blocks',
+          items: [
+            {
+              title: 'Paragraph',
+              format: 'p'
+            },
+            {
+              title: 'Blockquote',
+              format: 'blockquote'
+            },
+            {
+              title: 'Div',
+              format: 'div'
+            },
+            {
+              title: 'Pre',
+              format: 'pre'
             }
-          });
+          ]
         },
-        onclick: function () {
-          if (this.settings.format) {
-            toggleFormat(editor, this.settings.format)();
+        {
+          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'
+            }
+          ]
+        }
+      ];
+      var createMenu = function (formats) {
+        var menu = [];
+        if (!formats) {
+          return;
+        }
+        global$2.each(formats, function (format) {
+          var menuItem = {
+            text: format.title,
+            icon: format.icon
+          };
+          if (format.items) {
+            menuItem.menu = createMenu(format.items);
+          } else {
+            var formatName = format.format || 'custom' + count++;
+            if (!format.format) {
+              format.name = formatName;
+              newFormats.push(format);
+            }
+            menuItem.format = formatName;
+            menuItem.cmd = format.cmd;
           }
-          if (this.settings.cmd) {
-            editor.execCommand(this.settings.cmd);
+          menu.push(menuItem);
+        });
+        return menu;
+      };
+      var createStylesMenu = function () {
+        var menu;
+        if (editor.settings.style_formats_merge) {
+          if (editor.settings.style_formats) {
+            menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
+          } else {
+            menu = createMenu(defaultStyleFormats);
           }
+        } else {
+          menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
         }
-      }
+        return menu;
+      };
+      editor.on('init', function () {
+        global$2.each(newFormats, function (format) {
+          editor.formatter.register(format.name, format);
+        });
+      });
+      return {
+        type: 'menu',
+        items: createStylesMenu(),
+        onPostRender: function (e) {
+          editor.fire('renderFormatsMenu', { control: e.control });
+        },
+        itemDefaults: {
+          preview: true,
+          textStyle: function () {
+            if (this.settings.format) {
+              return editor.formatter.getCssText(this.settings.format);
+            }
+          },
+          onPostRender: function () {
+            var self = this;
+            self.parent().on('show', function () {
+              var formatName, command;
+              formatName = self.settings.format;
+              if (formatName) {
+                self.disabled(!editor.formatter.canApply(formatName));
+                self.active(editor.formatter.match(formatName));
+              }
+              command = self.settings.cmd;
+              if (command) {
+                self.active(editor.queryCommandState(command));
+              }
+            });
+          },
+          onclick: function () {
+            if (this.settings.format) {
+              toggleFormat(editor, this.settings.format)();
+            }
+            if (this.settings.cmd) {
+              editor.execCommand(this.settings.cmd);
+            }
+          }
+        }
+      };
     };
-  };
-  var registerMenuItems = function (editor, formatMenu) {
-    editor.addMenuItem('formats', {
-      text: 'Formats',
-      menu: formatMenu
-    });
-  };
-  var registerButtons$2 = function (editor, formatMenu) {
-    editor.addButton('styleselect', {
-      type: 'menubutton',
-      text: 'Formats',
-      menu: formatMenu,
-      onShowMenu: function () {
-        if (editor.settings.style_formats_autohide) {
-          hideFormatMenuItems(editor, this.menu);
+    var registerMenuItems = function (editor, formatMenu) {
+      editor.addMenuItem('formats', {
+        text: 'Formats',
+        menu: formatMenu
+      });
+    };
+    var registerButtons$2 = function (editor, formatMenu) {
+      editor.addButton('styleselect', {
+        type: 'menubutton',
+        text: 'Formats',
+        menu: formatMenu,
+        onShowMenu: function () {
+          if (editor.settings.style_formats_autohide) {
+            hideFormatMenuItems(editor, this.menu);
+          }
         }
+      });
+    };
+    var register$3 = function (editor) {
+      var formatMenu = createFormatMenu(editor);
+      registerMenuItems(editor, formatMenu);
+      registerButtons$2(editor, formatMenu);
+    };
+    var Formats = { register: register$3 };
+
+    var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';
+    var createFormats$1 = function (formats) {
+      formats = formats.replace(/;$/, '').split(';');
+      var i = formats.length;
+      while (i--) {
+        formats[i] = formats[i].split('=');
       }
-    });
-  };
-  var register$3 = function (editor) {
-    var formatMenu = createFormatMenu(editor);
-    registerMenuItems(editor, formatMenu);
-    registerButtons$2(editor, formatMenu);
-  };
-  var $_ejzqp9x5jjgwefzu = { register: register$3 };
-
-  var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';
-  var createFormats$1 = function (formats) {
-    formats = formats.replace(/;$/, '').split(';');
-    var i = formats.length;
-    while (i--) {
-      formats[i] = formats[i].split('=');
-    }
-    return formats;
-  };
-  var createListBoxChangeHandler = function (editor, items, formatName) {
-    return function () {
-      var self = this;
-      editor.on('nodeChange', function (e) {
-        var formatter = editor.formatter;
-        var value = null;
-        global$2.each(e.parents, function (node) {
-          global$2.each(items, function (item) {
-            if (formatName) {
-              if (formatter.matchNode(node, formatName, { value: item.value })) {
-                value = item.value;
+      return formats;
+    };
+    var createListBoxChangeHandler = function (editor, items, formatName) {
+      return function () {
+        var self = this;
+        editor.on('nodeChange', function (e) {
+          var formatter = editor.formatter;
+          var value = null;
+          global$2.each(e.parents, function (node) {
+            global$2.each(items, function (item) {
+              if (formatName) {
+                if (formatter.matchNode(node, formatName, { value: item.value })) {
+                  value = item.value;
+                }
+              } else {
+                if (formatter.matchNode(node, item.value)) {
+                  value = item.value;
+                }
               }
-            } else {
-              if (formatter.matchNode(node, item.value)) {
-                value = item.value;
+              if (value) {
+                return false;
               }
-            }
+            });
             if (value) {
               return false;
             }
           });
-          if (value) {
-            return false;
-          }
+          self.value(value);
         });
-        self.value(value);
-      });
+      };
     };
-  };
-  var lazyFormatSelectBoxItems = function (editor, blocks) {
-    return function () {
-      var items = [];
-      global$2.each(blocks, function (block) {
-        items.push({
+    var lazyFormatSelectBoxItems = function (editor, blocks) {
+      return function () {
+        var items = [];
+        global$2.each(blocks, function (block) {
+          items.push({
+            text: block[0],
+            value: block[1],
+            textStyle: function () {
+              return editor.formatter.getCssText(block[1]);
+            }
+          });
+        });
+        return {
+          type: 'listbox',
+          text: blocks[0][0],
+          values: items,
+          fixedWidth: true,
+          onselect: function (e) {
+            if (e.control) {
+              var fmt = e.control.value();
+              toggleFormat(editor, fmt)();
+            }
+          },
+          onPostRender: createListBoxChangeHandler(editor, items)
+        };
+      };
+    };
+    var buildMenuItems = function (editor, blocks) {
+      return global$2.map(blocks, function (block) {
+        return {
           text: block[0],
-          value: block[1],
+          onclick: toggleFormat(editor, block[1]),
           textStyle: function () {
             return editor.formatter.getCssText(block[1]);
           }
-        });
+        };
       });
-      return {
-        type: 'listbox',
-        text: blocks[0][0],
-        values: items,
-        fixedWidth: true,
-        onselect: function (e) {
-          if (e.control) {
-            var fmt = e.control.value();
-            toggleFormat(editor, fmt)();
-          }
-        },
-        onPostRender: createListBoxChangeHandler(editor, items)
-      };
     };
-  };
-  var buildMenuItems = function (editor, blocks) {
-    return global$2.map(blocks, function (block) {
-      return {
-        text: block[0],
-        onclick: toggleFormat(editor, block[1]),
-        textStyle: function () {
-          return editor.formatter.getCssText(block[1]);
-        }
-      };
-    });
-  };
-  var register$4 = function (editor) {
-    var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);
-    editor.addMenuItem('blockformats', {
-      text: 'Blocks',
-      menu: buildMenuItems(editor, blocks)
-    });
-    editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));
-  };
-  var $_fp0lmzx6jjgwefzy = { register: register$4 };
+    var register$4 = function (editor) {
+      var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);
+      editor.addMenuItem('blockformats', {
+        text: 'Blocks',
+        menu: buildMenuItems(editor, blocks)
+      });
+      editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));
+    };
+    var FormatSelect = { register: register$4 };
 
-  var createCustomMenuItems = function (editor, names) {
-    var items, nameList;
-    if (typeof names === 'string') {
-      nameList = names.split(' ');
-    } else if (global$2.isArray(names)) {
-      return flatten(global$2.map(names, function (names) {
-        return createCustomMenuItems(editor, names);
-      }));
-    }
-    items = global$2.grep(nameList, function (name) {
-      return name === '|' || name in editor.menuItems;
-    });
-    return global$2.map(items, function (name) {
-      return name === '|' ? { text: '-' } : editor.menuItems[name];
-    });
-  };
-  var isSeparator$1 = function (menuItem) {
-    return menuItem && menuItem.text === '-';
-  };
-  var trimMenuItems = function (menuItems) {
-    var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {
-      return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);
-    });
-    return filter(menuItems2, function (menuItem, i, menuItems) {
-      return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;
-    });
-  };
-  var createContextMenuItems = function (editor, context) {
-    var outputMenuItems = [{ text: '-' }];
-    var menuItems = global$2.grep(editor.menuItems, function (menuItem) {
-      return menuItem.context === context;
-    });
-    global$2.each(menuItems, function (menuItem) {
-      if (menuItem.separator === 'before') {
-        outputMenuItems.push({ text: '|' });
+    var createCustomMenuItems = function (editor, names) {
+      var items, nameList;
+      if (typeof names === 'string') {
+        nameList = names.split(' ');
+      } else if (global$2.isArray(names)) {
+        return flatten(global$2.map(names, function (names) {
+          return createCustomMenuItems(editor, names);
+        }));
       }
-      if (menuItem.prependToContext) {
-        outputMenuItems.unshift(menuItem);
+      items = global$2.grep(nameList, function (name) {
+        return name === '|' || name in editor.menuItems;
+      });
+      return global$2.map(items, function (name) {
+        return name === '|' ? { text: '-' } : editor.menuItems[name];
+      });
+    };
+    var isSeparator$1 = function (menuItem) {
+      return menuItem && menuItem.text === '-';
+    };
+    var trimMenuItems = function (menuItems) {
+      var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {
+        return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);
+      });
+      return filter(menuItems2, function (menuItem, i, menuItems) {
+        return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;
+      });
+    };
+    var createContextMenuItems = function (editor, context) {
+      var outputMenuItems = [{ text: '-' }];
+      var menuItems = global$2.grep(editor.menuItems, function (menuItem) {
+        return menuItem.context === context;
+      });
+      global$2.each(menuItems, function (menuItem) {
+        if (menuItem.separator === 'before') {
+          outputMenuItems.push({ text: '|' });
+        }
+        if (menuItem.prependToContext) {
+          outputMenuItems.unshift(menuItem);
+        } else {
+          outputMenuItems.push(menuItem);
+        }
+        if (menuItem.separator === 'after') {
+          outputMenuItems.push({ text: '|' });
+        }
+      });
+      return outputMenuItems;
+    };
+    var createInsertMenu = function (editor) {
+      var insertButtonItems = editor.settings.insert_button_items;
+      if (insertButtonItems) {
+        return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));
       } else {
-        outputMenuItems.push(menuItem);
+        return trimMenuItems(createContextMenuItems(editor, 'insert'));
       }
-      if (menuItem.separator === 'after') {
-        outputMenuItems.push({ text: '|' });
-      }
-    });
-    return outputMenuItems;
-  };
-  var createInsertMenu = function (editor) {
-    var insertButtonItems = editor.settings.insert_button_items;
-    if (insertButtonItems) {
-      return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));
-    } else {
-      return trimMenuItems(createContextMenuItems(editor, 'insert'));
-    }
-  };
-  var registerButtons$3 = function (editor) {
-    editor.addButton('insert', {
-      type: 'menubutton',
-      icon: 'insert',
-      menu: [],
-      oncreatemenu: function () {
-        this.menu.add(createInsertMenu(editor));
-        this.menu.renderNew();
-      }
-    });
-  };
-  var register$5 = function (editor) {
-    registerButtons$3(editor);
-  };
-  var $_4j2o4hx7jjgweg01 = { register: register$5 };
+    };
+    var registerButtons$3 = function (editor) {
+      editor.addButton('insert', {
+        type: 'menubutton',
+        icon: 'insert',
+        menu: [],
+        oncreatemenu: function () {
+          this.menu.add(createInsertMenu(editor));
+          this.menu.renderNew();
+        }
+      });
+    };
+    var register$5 = function (editor) {
+      registerButtons$3(editor);
+    };
+    var InsertButton = { register: register$5 };
 
-  var registerFormatButtons = function (editor) {
-    global$2.each({
-      bold: 'Bold',
-      italic: 'Italic',
-      underline: 'Underline',
-      strikethrough: 'Strikethrough',
-      subscript: 'Subscript',
-      superscript: 'Superscript'
-    }, function (text, name) {
-      editor.addButton(name, {
-        active: false,
-        tooltip: text,
-        onPostRender: postRenderFormatToggle(editor, name),
-        onclick: toggleFormat(editor, name)
+    var registerFormatButtons = function (editor) {
+      global$2.each({
+        bold: 'Bold',
+        italic: 'Italic',
+        underline: 'Underline',
+        strikethrough: 'Strikethrough',
+        subscript: 'Subscript',
+        superscript: 'Superscript'
+      }, function (text, name) {
+        editor.addButton(name, {
+          active: false,
+          tooltip: text,
+          onPostRender: postRenderFormatToggle(editor, name),
+          onclick: toggleFormat(editor, name)
+        });
       });
-    });
-  };
-  var registerCommandButtons = function (editor) {
-    global$2.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 (item, name) {
-      editor.addButton(name, {
-        tooltip: item[0],
-        cmd: item[1]
+    };
+    var registerCommandButtons = function (editor) {
+      global$2.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 (item, name) {
+        editor.addButton(name, {
+          tooltip: item[0],
+          cmd: item[1]
+        });
       });
-    });
-  };
-  var registerCommandToggleButtons = function (editor) {
-    global$2.each({
-      blockquote: [
-        'Blockquote',
-        'mceBlockQuote'
-      ],
-      subscript: [
-        'Subscript',
-        'Subscript'
-      ],
-      superscript: [
-        'Superscript',
-        'Superscript'
-      ]
-    }, function (item, name) {
-      editor.addButton(name, {
-        active: false,
-        tooltip: item[0],
-        cmd: item[1],
-        onPostRender: postRenderFormatToggle(editor, name)
+    };
+    var registerCommandToggleButtons = function (editor) {
+      global$2.each({
+        blockquote: [
+          'Blockquote',
+          'mceBlockQuote'
+        ],
+        subscript: [
+          'Subscript',
+          'Subscript'
+        ],
+        superscript: [
+          'Superscript',
+          'Superscript'
+        ]
+      }, function (item, name) {
+        editor.addButton(name, {
+          active: false,
+          tooltip: item[0],
+          cmd: item[1],
+          onPostRender: postRenderFormatToggle(editor, name)
+        });
       });
-    });
-  };
-  var registerButtons$4 = function (editor) {
-    registerFormatButtons(editor);
-    registerCommandButtons(editor);
-    registerCommandToggleButtons(editor);
-  };
-  var registerMenuItems$1 = function (editor) {
-    global$2.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 (item, name) {
-      editor.addMenuItem(name, {
-        text: item[0],
-        icon: name,
-        shortcut: item[2],
-        cmd: item[1]
+    };
+    var registerButtons$4 = function (editor) {
+      registerFormatButtons(editor);
+      registerCommandButtons(editor);
+      registerCommandToggleButtons(editor);
+    };
+    var registerMenuItems$1 = function (editor) {
+      global$2.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 (item, name) {
+        editor.addMenuItem(name, {
+          text: item[0],
+          icon: name,
+          shortcut: item[2],
+          cmd: item[1]
+        });
       });
-    });
-    editor.addMenuItem('codeformat', {
-      text: 'Code',
-      icon: 'code',
-      onclick: toggleFormat(editor, 'code')
-    });
-  };
-  var register$6 = function (editor) {
-    registerButtons$4(editor);
-    registerMenuItems$1(editor);
-  };
-  var $_c2lkymx8jjgweg05 = { register: register$6 };
+      editor.addMenuItem('codeformat', {
+        text: 'Code',
+        icon: 'code',
+        onclick: toggleFormat(editor, 'code')
+      });
+    };
+    var register$6 = function (editor) {
+      registerButtons$4(editor);
+      registerMenuItems$1(editor);
+    };
+    var SimpleControls = { register: register$6 };
 
-  var toggleUndoRedoState = function (editor, type) {
-    return function () {
-      var self = this;
-      var checkState = function () {
-        var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';
-        return editor.undoManager ? editor.undoManager[typeFn]() : false;
+    var toggleUndoRedoState = function (editor, type) {
+      return function () {
+        var self = this;
+        var checkState = function () {
+          var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';
+          return editor.undoManager ? editor.undoManager[typeFn]() : false;
+        };
+        self.disabled(!checkState());
+        editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {
+          self.disabled(editor.readonly || !checkState());
+        });
       };
-      self.disabled(!checkState());
-      editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {
-        self.disabled(editor.readonly || !checkState());
+    };
+    var registerMenuItems$2 = function (editor) {
+      editor.addMenuItem('undo', {
+        text: 'Undo',
+        icon: 'undo',
+        shortcut: 'Meta+Z',
+        onPostRender: toggleUndoRedoState(editor, 'undo'),
+        cmd: 'undo'
       });
+      editor.addMenuItem('redo', {
+        text: 'Redo',
+        icon: 'redo',
+        shortcut: 'Meta+Y',
+        onPostRender: toggleUndoRedoState(editor, 'redo'),
+        cmd: 'redo'
+      });
     };
-  };
-  var registerMenuItems$2 = function (editor) {
-    editor.addMenuItem('undo', {
-      text: 'Undo',
-      icon: 'undo',
-      shortcut: 'Meta+Z',
-      onPostRender: toggleUndoRedoState(editor, 'undo'),
-      cmd: 'undo'
-    });
-    editor.addMenuItem('redo', {
-      text: 'Redo',
-      icon: 'redo',
-      shortcut: 'Meta+Y',
-      onPostRender: toggleUndoRedoState(editor, 'redo'),
-      cmd: 'redo'
-    });
-  };
-  var registerButtons$5 = function (editor) {
-    editor.addButton('undo', {
-      tooltip: 'Undo',
-      onPostRender: toggleUndoRedoState(editor, 'undo'),
-      cmd: 'undo'
-    });
-    editor.addButton('redo', {
-      tooltip: 'Redo',
-      onPostRender: toggleUndoRedoState(editor, 'redo'),
-      cmd: 'redo'
-    });
-  };
-  var register$7 = function (editor) {
-    registerMenuItems$2(editor);
-    registerButtons$5(editor);
-  };
-  var $_9h432jx9jjgweg07 = { register: register$7 };
-
-  var toggleVisualAidState = function (editor) {
-    return function () {
-      var self = this;
-      editor.on('VisualAid', function (e) {
-        self.active(e.hasVisual);
+    var registerButtons$5 = function (editor) {
+      editor.addButton('undo', {
+        tooltip: 'Undo',
+        onPostRender: toggleUndoRedoState(editor, 'undo'),
+        cmd: 'undo'
       });
-      self.active(editor.hasVisual);
+      editor.addButton('redo', {
+        tooltip: 'Redo',
+        onPostRender: toggleUndoRedoState(editor, 'redo'),
+        cmd: 'redo'
+      });
     };
-  };
-  var registerMenuItems$3 = function (editor) {
-    editor.addMenuItem('visualaid', {
-      text: 'Visual aids',
-      selectable: true,
-      onPostRender: toggleVisualAidState(editor),
-      cmd: 'mceToggleVisualAid'
-    });
-  };
-  var register$8 = function (editor) {
-    registerMenuItems$3(editor);
-  };
-  var $_eoil5jxajjgweg09 = { register: register$8 };
+    var register$7 = function (editor) {
+      registerMenuItems$2(editor);
+      registerButtons$5(editor);
+    };
+    var UndoRedo = { register: register$7 };
 
-  var setupEnvironment = function () {
-    Widget.tooltips = !global$8.iOS;
-    Control$1.translate = function (text) {
-      return global$1.translate(text);
+    var toggleVisualAidState = function (editor) {
+      return function () {
+        var self = this;
+        editor.on('VisualAid', function (e) {
+          self.active(e.hasVisual);
+        });
+        self.active(editor.hasVisual);
+      };
     };
-  };
-  var setupUiContainer = function (editor) {
-    if (editor.settings.ui_container) {
-      global$8.container = $_4ftvxwwyjjgwefz3.descendant(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
-        return elm.dom();
+    var registerMenuItems$3 = function (editor) {
+      editor.addMenuItem('visualaid', {
+        text: 'Visual aids',
+        selectable: true,
+        onPostRender: toggleVisualAidState(editor),
+        cmd: 'mceToggleVisualAid'
       });
-    }
-  };
-  var setupRtlMode = function (editor) {
-    if (editor.rtl) {
-      Control$1.rtl = true;
-    }
-  };
-  var setupHideFloatPanels = function (editor) {
-    editor.on('mousedown', function () {
-      FloatPanel.hideAll();
-    });
-  };
-  var setup$1 = function (editor) {
-    setupRtlMode(editor);
-    setupHideFloatPanels(editor);
-    setupUiContainer(editor);
-    setupEnvironment();
-    $_fp0lmzx6jjgwefzy.register(editor);
-    $_cz4u4px1jjgwefzl.register(editor);
-    $_c2lkymx8jjgweg05.register(editor);
-    $_9h432jx9jjgweg07.register(editor);
-    $_9a6bd5x4jjgwefzr.register(editor);
-    $_f7ngpex3jjgwefzo.register(editor);
-    $_ejzqp9x5jjgwefzu.register(editor);
-    $_eoil5jxajjgweg09.register(editor);
-    $_4j2o4hx7jjgweg01.register(editor);
-  };
-  var $_5heykgwxjjgwefyx = { setup: setup$1 };
+    };
+    var register$8 = function (editor) {
+      registerMenuItems$3(editor);
+    };
+    var VisualAid = { register: register$8 };
 
-  var GridLayout = AbsoluteLayout.extend({
-    recalc: function (container) {
-      var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;
-      var colWidths = [];
-      var rowHeights = [];
-      var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
-      settings = container.settings;
-      items = container.items().filter(':visible');
-      contLayoutRect = container.layoutRect();
-      cols = settings.columns || Math.ceil(Math.sqrt(items.length));
-      rows = Math.ceil(items.length / cols);
-      spacingH = settings.spacingH || settings.spacing || 0;
-      spacingV = settings.spacingV || settings.spacing || 0;
-      alignH = settings.alignH || settings.align;
-      alignV = settings.alignV || settings.align;
-      contPaddingBox = container.paddingBox;
-      reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
-      if (alignH && typeof alignH === 'string') {
-        alignH = [alignH];
+    var setupEnvironment = function () {
+      Widget.tooltips = !global$8.iOS;
+      Control$1.translate = function (text) {
+        return global$1.translate(text);
+      };
+    };
+    var setupUiContainer = function (editor) {
+      if (editor.settings.ui_container) {
+        global$8.container = descendant$1(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {
+          return elm.dom();
+        });
       }
-      if (alignV && typeof alignV === 'string') {
-        alignV = [alignV];
+    };
+    var setupRtlMode = function (editor) {
+      if (editor.rtl) {
+        Control$1.rtl = true;
       }
-      for (x = 0; x < cols; x++) {
-        colWidths.push(0);
-      }
-      for (y = 0; y < rows; y++) {
-        rowHeights.push(0);
-      }
-      for (y = 0; y < rows; y++) {
+    };
+    var setupHideFloatPanels = function (editor) {
+      editor.on('mousedown progressstate', function () {
+        FloatPanel.hideAll();
+      });
+    };
+    var setup$1 = function (editor) {
+      setupRtlMode(editor);
+      setupHideFloatPanels(editor);
+      setupUiContainer(editor);
+      setupEnvironment();
+      FormatSelect.register(editor);
+      Align.register(editor);
+      SimpleControls.register(editor);
+      UndoRedo.register(editor);
+      FontSizeSelect.register(editor);
+      FontSelect.register(editor);
+      Formats.register(editor);
+      VisualAid.register(editor);
+      InsertButton.register(editor);
+    };
+    var FormatControls = { setup: setup$1 };
+
+    var GridLayout = AbsoluteLayout.extend({
+      recalc: function (container) {
+        var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;
+        var colWidths = [];
+        var rowHeights = [];
+        var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
+        settings = container.settings;
+        items = container.items().filter(':visible');
+        contLayoutRect = container.layoutRect();
+        cols = settings.columns || Math.ceil(Math.sqrt(items.length));
+        rows = Math.ceil(items.length / cols);
+        spacingH = settings.spacingH || settings.spacing || 0;
+        spacingV = settings.spacingV || settings.spacing || 0;
+        alignH = settings.alignH || settings.align;
+        alignV = settings.alignV || settings.align;
+        contPaddingBox = container.paddingBox;
+        reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
+        if (alignH && typeof alignH === 'string') {
+          alignH = [alignH];
+        }
+        if (alignV && typeof alignV === 'string') {
+          alignV = [alignV];
+        }
         for (x = 0; x < cols; x++) {
-          ctrl = items[y * cols + x];
-          if (!ctrl) {
-            break;
-          }
-          ctrlLayoutRect = ctrl.layoutRect();
-          ctrlMinWidth = ctrlLayoutRect.minW;
-          ctrlMinHeight = ctrlLayoutRect.minH;
-          colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
-          rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
+          colWidths.push(0);
         }
-      }
-      availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
-      for (maxX = 0, x = 0; x < cols; x++) {
-        maxX += colWidths[x] + (x > 0 ? spacingH : 0);
-        availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
-      }
-      availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
-      for (maxY = 0, y = 0; y < rows; y++) {
-        maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
-        availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
-      }
-      maxX += contPaddingBox.left + contPaddingBox.right;
-      maxY += contPaddingBox.top + contPaddingBox.bottom;
-      rect = {};
-      rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
-      rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
-      rect.contentW = rect.minW - contLayoutRect.deltaW;
-      rect.contentH = rect.minH - contLayoutRect.deltaH;
-      rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
-      rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
-      rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
-      rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
-      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
-        rect.w = rect.minW;
-        rect.h = rect.minH;
-        container.layoutRect(rect);
-        this.recalc(container);
-        if (container._lastRect === null) {
-          var parentCtrl = container.parent();
-          if (parentCtrl) {
-            parentCtrl._lastRect = null;
-            parentCtrl.recalc();
+        for (y = 0; y < rows; y++) {
+          rowHeights.push(0);
+        }
+        for (y = 0; y < rows; y++) {
+          for (x = 0; x < cols; x++) {
+            ctrl = items[y * cols + x];
+            if (!ctrl) {
+              break;
+            }
+            ctrlLayoutRect = ctrl.layoutRect();
+            ctrlMinWidth = ctrlLayoutRect.minW;
+            ctrlMinHeight = ctrlLayoutRect.minH;
+            colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
+            rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
           }
         }
-        return;
-      }
-      if (contLayoutRect.autoResize) {
-        rect = container.layoutRect(rect);
+        availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
+        for (maxX = 0, x = 0; x < cols; x++) {
+          maxX += colWidths[x] + (x > 0 ? spacingH : 0);
+          availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
+        }
+        availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
+        for (maxY = 0, y = 0; y < rows; y++) {
+          maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
+          availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
+        }
+        maxX += contPaddingBox.left + contPaddingBox.right;
+        maxY += contPaddingBox.top + contPaddingBox.bottom;
+        rect = {};
+        rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
+        rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
         rect.contentW = rect.minW - contLayoutRect.deltaW;
         rect.contentH = rect.minH - contLayoutRect.deltaH;
-      }
-      var flexV;
-      if (settings.packV === 'start') {
-        flexV = 0;
-      } else {
-        flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
-      }
-      var totalFlex = 0;
-      var flexWidths = settings.flexWidths;
-      if (flexWidths) {
-        for (x = 0; x < flexWidths.length; x++) {
-          totalFlex += flexWidths[x];
+        rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
+        rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
+        rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
+        rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
+        if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {
+          rect.w = rect.minW;
+          rect.h = rect.minH;
+          container.layoutRect(rect);
+          this.recalc(container);
+          if (container._lastRect === null) {
+            var parentCtrl = container.parent();
+            if (parentCtrl) {
+              parentCtrl._lastRect = null;
+              parentCtrl.recalc();
+            }
+          }
+          return;
         }
-      } else {
-        totalFlex = cols;
-      }
-      var ratio = availableWidth / totalFlex;
-      for (x = 0; x < cols; x++) {
-        colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
-      }
-      posY = contPaddingBox.top;
-      for (y = 0; y < rows; y++) {
-        posX = contPaddingBox.left;
-        height = rowHeights[y] + flexV;
+        if (contLayoutRect.autoResize) {
+          rect = container.layoutRect(rect);
+          rect.contentW = rect.minW - contLayoutRect.deltaW;
+          rect.contentH = rect.minH - contLayoutRect.deltaH;
+        }
+        var flexV;
+        if (settings.packV === 'start') {
+          flexV = 0;
+        } else {
+          flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
+        }
+        var totalFlex = 0;
+        var flexWidths = settings.flexWidths;
+        if (flexWidths) {
+          for (x = 0; x < flexWidths.length; x++) {
+            totalFlex += flexWidths[x];
+          }
+        } else {
+          totalFlex = cols;
+        }
+        var ratio = availableWidth / totalFlex;
         for (x = 0; x < cols; x++) {
-          if (reverseRows) {
-            idx = y * cols + cols - 1 - x;
-          } else {
-            idx = y * cols + x;
+          colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
+        }
+        posY = contPaddingBox.top;
+        for (y = 0; y < rows; y++) {
+          posX = contPaddingBox.left;
+          height = rowHeights[y] + flexV;
+          for (x = 0; x < cols; x++) {
+            if (reverseRows) {
+              idx = y * cols + cols - 1 - x;
+            } else {
+              idx = y * cols + x;
+            }
+            ctrl = items[idx];
+            if (!ctrl) {
+              break;
+            }
+            ctrlSettings = ctrl.settings;
+            ctrlLayoutRect = ctrl.layoutRect();
+            width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
+            ctrlLayoutRect.x = posX;
+            ctrlLayoutRect.y = posY;
+            align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);
+            if (align === 'center') {
+              ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;
+            } else if (align === 'right') {
+              ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
+            } else if (align === 'stretch') {
+              ctrlLayoutRect.w = width;
+            }
+            align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);
+            if (align === 'center') {
+              ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;
+            } else if (align === 'bottom') {
+              ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
+            } else if (align === 'stretch') {
+              ctrlLayoutRect.h = height;
+            }
+            ctrl.layoutRect(ctrlLayoutRect);
+            posX += width + spacingH;
+            if (ctrl.recalc) {
+              ctrl.recalc();
+            }
           }
-          ctrl = items[idx];
-          if (!ctrl) {
-            break;
+          posY += height + spacingV;
+        }
+      }
+    });
+
+    var Iframe$1 = Widget.extend({
+      renderHtml: function () {
+        var self = this;
+        self.classes.add('iframe');
+        self.canFocus = false;
+        return '<iframe id="' + self._id + '" class="' + self.classes + '" tabindex="-1" src="' + (self.settings.url || 'javascript:\'\'') + '" frameborder="0"></iframe>';
+      },
+      src: function (src) {
+        this.getEl().src = src;
+      },
+      html: function (html, callback) {
+        var self = this, body = this.getEl().contentWindow.document.body;
+        if (!body) {
+          global$7.setTimeout(function () {
+            self.html(html);
+          });
+        } else {
+          body.innerHTML = html;
+          if (callback) {
+            callback();
           }
-          ctrlSettings = ctrl.settings;
-          ctrlLayoutRect = ctrl.layoutRect();
-          width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
-          ctrlLayoutRect.x = posX;
-          ctrlLayoutRect.y = posY;
-          align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);
-          if (align === 'center') {
-            ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;
-          } else if (align === 'right') {
-            ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
-          } else if (align === 'stretch') {
-            ctrlLayoutRect.w = width;
-          }
-          align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);
-          if (align === 'center') {
-            ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;
-          } else if (align === 'bottom') {
-            ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
-          } else if (align === 'stretch') {
-            ctrlLayoutRect.h = height;
-          }
-          ctrl.layoutRect(ctrlLayoutRect);
-          posX += width + spacingH;
-          if (ctrl.recalc) {
-            ctrl.recalc();
-          }
         }
-        posY += height + spacingV;
+        return this;
       }
-    }
-  });
+    });
 
-  var Iframe$1 = Widget.extend({
-    renderHtml: function () {
-      var self = this;
-      self.classes.add('iframe');
-      self.canFocus = false;
-      return '<iframe id="' + self._id + '" class="' + self.classes + '" tabindex="-1" src="' + (self.settings.url || 'javascript:\'\'') + '" frameborder="0"></iframe>';
-    },
-    src: function (src) {
-      this.getEl().src = src;
-    },
-    html: function (html, callback) {
-      var self = this, body = this.getEl().contentWindow.document.body;
-      if (!body) {
-        global$7.setTimeout(function () {
-          self.html(html);
+    var InfoBox = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('widget').add('infobox');
+        self.canFocus = false;
+      },
+      severity: function (level) {
+        this.classes.remove('error');
+        this.classes.remove('warning');
+        this.classes.remove('success');
+        this.classes.add(level);
+      },
+      help: function (state) {
+        this.state.set('help', state);
+      },
+      renderHtml: function () {
+        var self = this, prefix = self.classPrefix;
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + self.encode(self.state.get('text')) + '<button role="button" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-help"></i>' + '</button>' + '</div>' + '</div>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.getEl('body').firstChild.data = self.encode(e.value);
+          if (self.state.get('rendered')) {
+            self.updateLayoutRect();
+          }
         });
-      } else {
-        body.innerHTML = html;
-        if (callback) {
-          callback();
-        }
+        self.state.on('change:help', function (e) {
+          self.classes.toggle('has-help', e.value);
+          if (self.state.get('rendered')) {
+            self.updateLayoutRect();
+          }
+        });
+        return self._super();
       }
-      return this;
-    }
-  });
+    });
 
-  var InfoBox = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('widget').add('infobox');
-      self.canFocus = false;
-    },
-    severity: function (level) {
-      this.classes.remove('error');
-      this.classes.remove('warning');
-      this.classes.remove('success');
-      this.classes.add(level);
-    },
-    help: function (state) {
-      this.state.set('help', state);
-    },
-    renderHtml: function () {
-      var self = this, prefix = self.classPrefix;
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + self.encode(self.state.get('text')) + '<button role="button" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-help"></i>' + '</button>' + '</div>' + '</div>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.getEl('body').firstChild.data = self.encode(e.value);
-        if (self.state.get('rendered')) {
-          self.updateLayoutRect();
+    var Label = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('widget').add('label');
+        self.canFocus = false;
+        if (settings.multiline) {
+          self.classes.add('autoscroll');
         }
-      });
-      self.state.on('change:help', function (e) {
-        self.classes.toggle('has-help', e.value);
-        if (self.state.get('rendered')) {
-          self.updateLayoutRect();
+        if (settings.strong) {
+          self.classes.add('strong');
         }
-      });
-      return self._super();
-    }
-  });
-
-  var Label = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('widget').add('label');
-      self.canFocus = false;
-      if (settings.multiline) {
-        self.classes.add('autoscroll');
-      }
-      if (settings.strong) {
-        self.classes.add('strong');
-      }
-    },
-    initLayoutRect: function () {
-      var self = this, layoutRect = self._super();
-      if (self.settings.multiline) {
-        var size = funcs.getSize(self.getEl());
-        if (size.width > layoutRect.maxW) {
-          layoutRect.minW = layoutRect.maxW;
-          self.classes.add('multiline');
+      },
+      initLayoutRect: function () {
+        var self = this, layoutRect = self._super();
+        if (self.settings.multiline) {
+          var size = funcs.getSize(self.getEl());
+          if (size.width > layoutRect.maxW) {
+            layoutRect.minW = layoutRect.maxW;
+            self.classes.add('multiline');
+          }
+          self.getEl().style.width = layoutRect.minW + 'px';
+          layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);
         }
-        self.getEl().style.width = layoutRect.minW + 'px';
-        layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);
-      }
-      return layoutRect;
-    },
-    repaint: function () {
-      var self = this;
-      if (!self.settings.multiline) {
-        self.getEl().style.lineHeight = self.layoutRect().h + 'px';
-      }
-      return self._super();
-    },
-    severity: function (level) {
-      this.classes.remove('error');
-      this.classes.remove('warning');
-      this.classes.remove('success');
-      this.classes.add(level);
-    },
-    renderHtml: function () {
-      var self = this;
-      var targetCtrl, forName, forId = self.settings.forId;
-      var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));
-      if (!forId && (forName = self.settings.forName)) {
-        targetCtrl = self.getRoot().find('#' + forName)[0];
-        if (targetCtrl) {
-          forId = targetCtrl._id;
+        return layoutRect;
+      },
+      repaint: function () {
+        var self = this;
+        if (!self.settings.multiline) {
+          self.getEl().style.lineHeight = self.layoutRect().h + 'px';
         }
+        return self._super();
+      },
+      severity: function (level) {
+        this.classes.remove('error');
+        this.classes.remove('warning');
+        this.classes.remove('success');
+        this.classes.add(level);
+      },
+      renderHtml: function () {
+        var self = this;
+        var targetCtrl, forName, forId = self.settings.forId;
+        var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));
+        if (!forId && (forName = self.settings.forName)) {
+          targetCtrl = self.getRoot().find('#' + forName)[0];
+          if (targetCtrl) {
+            forId = targetCtrl._id;
+          }
+        }
+        if (forId) {
+          return '<label id="' + self._id + '" class="' + self.classes + '"' + (forId ? ' for="' + forId + '"' : '') + '>' + text + '</label>';
+        }
+        return '<span id="' + self._id + '" class="' + self.classes + '">' + text + '</span>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:text', function (e) {
+          self.innerHtml(self.encode(e.value));
+          if (self.state.get('rendered')) {
+            self.updateLayoutRect();
+          }
+        });
+        return self._super();
       }
-      if (forId) {
-        return '<label id="' + self._id + '" class="' + self.classes + '"' + (forId ? ' for="' + forId + '"' : '') + '>' + text + '</label>';
+    });
+
+    var Toolbar$1 = Container.extend({
+      Defaults: {
+        role: 'toolbar',
+        layout: 'flow'
+      },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        self.classes.add('toolbar');
+      },
+      postRender: function () {
+        var self = this;
+        self.items().each(function (ctrl) {
+          ctrl.classes.add('toolbar-item');
+        });
+        return self._super();
       }
-      return '<span id="' + self._id + '" class="' + self.classes + '">' + text + '</span>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:text', function (e) {
-        self.innerHtml(self.encode(e.value));
-        if (self.state.get('rendered')) {
-          self.updateLayoutRect();
-        }
-      });
-      return self._super();
-    }
-  });
+    });
 
-  var Toolbar$1 = Container.extend({
-    Defaults: {
-      role: 'toolbar',
-      layout: 'flow'
-    },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      self.classes.add('toolbar');
-    },
-    postRender: function () {
-      var self = this;
-      self.items().each(function (ctrl) {
-        ctrl.classes.add('toolbar-item');
-      });
-      return self._super();
-    }
-  });
+    var MenuBar = Toolbar$1.extend({
+      Defaults: {
+        role: 'menubar',
+        containerCls: 'menubar',
+        ariaRoot: true,
+        defaults: { type: 'menubutton' }
+      }
+    });
 
-  var MenuBar = Toolbar$1.extend({
-    Defaults: {
-      role: 'menubar',
-      containerCls: 'menubar',
-      ariaRoot: true,
-      defaults: { type: 'menubutton' }
-    }
-  });
-
-  function isChildOf$1(node, parent$$1) {
-    while (node) {
-      if (parent$$1 === node) {
-        return true;
+    function isChildOf$1(node, parent$$1) {
+      while (node) {
+        if (parent$$1 === node) {
+          return true;
+        }
+        node = node.parentNode;
       }
-      node = node.parentNode;
+      return false;
     }
-    return false;
-  }
-  var MenuButton = Button.extend({
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._renderOpen = true;
-      self$$1._super(settings);
-      settings = self$$1.settings;
-      self$$1.classes.add('menubtn');
-      if (settings.fixedWidth) {
-        self$$1.classes.add('fixed-width');
-      }
-      self$$1.aria('haspopup', true);
-      self$$1.state.set('menu', settings.menu || self$$1.render());
-    },
-    showMenu: function (toggle) {
-      var self$$1 = this;
-      var menu;
-      if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {
-        return self$$1.hideMenu();
-      }
-      if (!self$$1.menu) {
-        menu = self$$1.state.get('menu') || [];
-        self$$1.classes.add('opened');
-        if (menu.length) {
-          menu = {
-            type: 'menu',
-            animate: true,
-            items: menu
-          };
-        } else {
-          menu.type = menu.type || 'menu';
-          menu.animate = true;
+    var MenuButton = Button.extend({
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._renderOpen = true;
+        self$$1._super(settings);
+        settings = self$$1.settings;
+        self$$1.classes.add('menubtn');
+        if (settings.fixedWidth) {
+          self$$1.classes.add('fixed-width');
         }
-        if (!menu.renderTo) {
-          self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();
-        } else {
-          self$$1.menu = menu.parent(self$$1).show().renderTo();
+        self$$1.aria('haspopup', true);
+        self$$1.state.set('menu', settings.menu || self$$1.render());
+      },
+      showMenu: function (toggle) {
+        var self$$1 = this;
+        var menu;
+        if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {
+          return self$$1.hideMenu();
         }
-        self$$1.fire('createmenu');
-        self$$1.menu.reflow();
-        self$$1.menu.on('cancel', function (e) {
-          if (e.control.parent() === self$$1.menu) {
-            e.stopPropagation();
-            self$$1.focus();
-            self$$1.hideMenu();
+        if (!self$$1.menu) {
+          menu = self$$1.state.get('menu') || [];
+          self$$1.classes.add('opened');
+          if (menu.length) {
+            menu = {
+              type: 'menu',
+              animate: true,
+              items: menu
+            };
+          } else {
+            menu.type = menu.type || 'menu';
+            menu.animate = true;
           }
-        });
-        self$$1.menu.on('select', function () {
-          self$$1.focus();
-        });
-        self$$1.menu.on('show hide', function (e) {
-          if (e.control === self$$1.menu) {
-            self$$1.activeMenu(e.type === 'show');
-            self$$1.classes.toggle('opened', e.type === 'show');
+          if (!menu.renderTo) {
+            self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();
+          } else {
+            self$$1.menu = menu.parent(self$$1).show().renderTo();
           }
-          self$$1.aria('expanded', e.type === 'show');
-        }).fire('show');
-      }
-      self$$1.menu.show();
-      self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
-      self$$1.menu.repaint();
-      self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
-        'br-tr',
-        'tr-br'
-      ] : [
-        'bl-tl',
-        'tl-bl'
-      ]);
-      self$$1.fire('showmenu');
-    },
-    hideMenu: function () {
-      var self$$1 = this;
-      if (self$$1.menu) {
-        self$$1.menu.items().each(function (item) {
-          if (item.hideMenu) {
-            item.hideMenu();
+          self$$1.fire('createmenu');
+          self$$1.menu.reflow();
+          self$$1.menu.on('cancel', function (e) {
+            if (e.control.parent() === self$$1.menu) {
+              e.stopPropagation();
+              self$$1.focus();
+              self$$1.hideMenu();
+            }
+          });
+          self$$1.menu.on('select', function () {
+            self$$1.focus();
+          });
+          self$$1.menu.on('show hide', function (e) {
+            if (e.type === 'hide' && e.control.parent() === self$$1) {
+              self$$1.classes.remove('opened-under');
+            }
+            if (e.control === self$$1.menu) {
+              self$$1.activeMenu(e.type === 'show');
+              self$$1.classes.toggle('opened', e.type === 'show');
+            }
+            self$$1.aria('expanded', e.type === 'show');
+          }).fire('show');
+        }
+        self$$1.menu.show();
+        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });
+        self$$1.menu.repaint();
+        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [
+          'br-tr',
+          'tr-br'
+        ] : [
+          'bl-tl',
+          'tl-bl'
+        ]);
+        var menuLayoutRect = self$$1.menu.layoutRect();
+        var selfBottom = self$$1.$el.offset().top + self$$1.layoutRect().h;
+        if (selfBottom > menuLayoutRect.y && selfBottom < menuLayoutRect.y + menuLayoutRect.h) {
+          self$$1.classes.add('opened-under');
+        }
+        self$$1.fire('showmenu');
+      },
+      hideMenu: function () {
+        var self$$1 = this;
+        if (self$$1.menu) {
+          self$$1.menu.items().each(function (item) {
+            if (item.hideMenu) {
+              item.hideMenu();
+            }
+          });
+          self$$1.menu.hide();
+        }
+      },
+      activeMenu: function (state) {
+        this.classes.toggle('active', state);
+      },
+      renderHtml: function () {
+        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
+        var icon = self$$1.settings.icon, image;
+        var text = self$$1.state.get('text');
+        var textHtml = '';
+        image = self$$1.settings.image;
+        if (image) {
+          icon = 'none';
+          if (typeof image !== 'string') {
+            image = window.getSelection ? image[0] : image[1];
           }
-        });
-        self$$1.menu.hide();
-      }
-    },
-    activeMenu: function (state) {
-      this.classes.toggle('active', state);
-    },
-    renderHtml: function () {
-      var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;
-      var icon = self$$1.settings.icon, image;
-      var text = self$$1.state.get('text');
-      var textHtml = '';
-      image = self$$1.settings.image;
-      if (image) {
-        icon = 'none';
-        if (typeof image !== 'string') {
-          image = window.getSelection ? image[0] : image[1];
+          image = ' style="background-image: url(\'' + image + '\')"';
+        } else {
+          image = '';
         }
-        image = ' style="background-image: url(\'' + image + '\')"';
-      } else {
-        image = '';
-      }
-      if (text) {
-        self$$1.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
-      }
-      icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-      self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');
-      return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
-    },
-    postRender: function () {
-      var self$$1 = this;
-      self$$1.on('click', function (e) {
-        if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {
-          self$$1.focus();
-          self$$1.showMenu(!e.aria);
-          if (e.aria) {
-            self$$1.menu.items().filter(':visible')[0].focus();
+        if (text) {
+          self$$1.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
+        }
+        icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');
+        return '<div id="' + id + '" class="' + self$$1.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
+      },
+      postRender: function () {
+        var self$$1 = this;
+        self$$1.on('click', function (e) {
+          if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {
+            self$$1.focus();
+            self$$1.showMenu(!e.aria);
+            if (e.aria) {
+              self$$1.menu.items().filter(':visible')[0].focus();
+            }
           }
-        }
-      });
-      self$$1.on('mouseenter', function (e) {
-        var overCtrl = e.control;
-        var parent$$1 = self$$1.parent();
-        var hasVisibleSiblingMenu;
-        if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {
-          parent$$1.items().filter('MenuButton').each(function (ctrl) {
-            if (ctrl.hideMenu && ctrl !== overCtrl) {
-              if (ctrl.menu && ctrl.menu.visible()) {
-                hasVisibleSiblingMenu = true;
+        });
+        self$$1.on('mouseenter', function (e) {
+          var overCtrl = e.control;
+          var parent$$1 = self$$1.parent();
+          var hasVisibleSiblingMenu;
+          if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {
+            parent$$1.items().filter('MenuButton').each(function (ctrl) {
+              if (ctrl.hideMenu && ctrl !== overCtrl) {
+                if (ctrl.menu && ctrl.menu.visible()) {
+                  hasVisibleSiblingMenu = true;
+                }
+                ctrl.hideMenu();
               }
-              ctrl.hideMenu();
+            });
+            if (hasVisibleSiblingMenu) {
+              overCtrl.focus();
+              overCtrl.showMenu();
             }
-          });
-          if (hasVisibleSiblingMenu) {
-            overCtrl.focus();
-            overCtrl.showMenu();
           }
+        });
+        return self$$1._super();
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        self$$1.state.on('change:menu', function () {
+          if (self$$1.menu) {
+            self$$1.menu.remove();
+          }
+          self$$1.menu = null;
+        });
+        return self$$1._super();
+      },
+      remove: function () {
+        this._super();
+        if (this.menu) {
+          this.menu.remove();
         }
-      });
-      return self$$1._super();
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      self$$1.state.on('change:menu', function () {
-        if (self$$1.menu) {
-          self$$1.menu.remove();
-        }
-        self$$1.menu = null;
-      });
-      return self$$1._super();
-    },
-    remove: function () {
-      this._super();
-      if (this.menu) {
-        this.menu.remove();
       }
-    }
-  });
+    });
 
-  var Menu = FloatPanel.extend({
-    Defaults: {
-      defaultType: 'menuitem',
-      border: 1,
-      layout: 'stack',
-      role: 'application',
-      bodyRole: 'menu',
-      ariaRoot: true
-    },
-    init: function (settings) {
-      var self = this;
-      settings.autohide = true;
-      settings.constrainToViewport = true;
-      if (typeof settings.items === 'function') {
-        settings.itemsFactory = settings.items;
-        settings.items = [];
-      }
-      if (settings.itemDefaults) {
-        var items = settings.items;
-        var i = items.length;
-        while (i--) {
-          items[i] = global$2.extend({}, settings.itemDefaults, items[i]);
+    var Menu = FloatPanel.extend({
+      Defaults: {
+        defaultType: 'menuitem',
+        border: 1,
+        layout: 'stack',
+        role: 'application',
+        bodyRole: 'menu',
+        ariaRoot: true
+      },
+      init: function (settings) {
+        var self = this;
+        settings.autohide = true;
+        settings.constrainToViewport = true;
+        if (typeof settings.items === 'function') {
+          settings.itemsFactory = settings.items;
+          settings.items = [];
         }
-      }
-      self._super(settings);
-      self.classes.add('menu');
-      if (settings.animate && global$8.ie !== 11) {
-        self.classes.add('animate');
-      }
-    },
-    repaint: function () {
-      this.classes.toggle('menu-align', true);
-      this._super();
-      this.getEl().style.height = '';
-      this.getEl('body').style.height = '';
-      return this;
-    },
-    cancel: function () {
-      var self = this;
-      self.hideAll();
-      self.fire('select');
-    },
-    load: function () {
-      var self = this;
-      var time, factory;
-      function hideThrobber() {
-        if (self.throbber) {
-          self.throbber.hide();
-          self.throbber = null;
+        if (settings.itemDefaults) {
+          var items = settings.items;
+          var i = items.length;
+          while (i--) {
+            items[i] = global$2.extend({}, settings.itemDefaults, items[i]);
+          }
         }
-      }
-      factory = self.settings.itemsFactory;
-      if (!factory) {
-        return;
-      }
-      if (!self.throbber) {
-        self.throbber = new Throbber(self.getEl('body'), true);
-        if (self.items().length === 0) {
-          self.throbber.show();
-          self.fire('loading');
-        } else {
-          self.throbber.show(100, function () {
-            self.items().remove();
-            self.fire('loading');
-          });
+        self._super(settings);
+        self.classes.add('menu');
+        if (settings.animate && global$8.ie !== 11) {
+          self.classes.add('animate');
         }
-        self.on('hide close', hideThrobber);
-      }
-      self.requestTime = time = new Date().getTime();
-      self.settings.itemsFactory(function (items) {
-        if (items.length === 0) {
-          self.hide();
-          return;
+      },
+      repaint: function () {
+        this.classes.toggle('menu-align', true);
+        this._super();
+        this.getEl().style.height = '';
+        this.getEl('body').style.height = '';
+        return this;
+      },
+      cancel: function () {
+        var self = this;
+        self.hideAll();
+        self.fire('select');
+      },
+      load: function () {
+        var self = this;
+        var time, factory;
+        function hideThrobber() {
+          if (self.throbber) {
+            self.throbber.hide();
+            self.throbber = null;
+          }
         }
-        if (self.requestTime !== time) {
+        factory = self.settings.itemsFactory;
+        if (!factory) {
           return;
         }
-        self.getEl().style.width = '';
-        self.getEl('body').style.width = '';
-        hideThrobber();
-        self.items().remove();
-        self.getEl('body').innerHTML = '';
-        self.add(items);
-        self.renderNew();
-        self.fire('loaded');
-      });
-    },
-    hideAll: function () {
-      var self = this;
-      this.find('menuitem').exec('hideMenu');
-      return self._super();
-    },
-    preRender: function () {
-      var self = this;
-      self.items().each(function (ctrl) {
-        var settings = ctrl.settings;
-        if (settings.icon || settings.image || settings.selectable) {
-          self._hasIcons = true;
-          return false;
+        if (!self.throbber) {
+          self.throbber = new Throbber(self.getEl('body'), true);
+          if (self.items().length === 0) {
+            self.throbber.show();
+            self.fire('loading');
+          } else {
+            self.throbber.show(100, function () {
+              self.items().remove();
+              self.fire('loading');
+            });
+          }
+          self.on('hide close', hideThrobber);
         }
-      });
-      if (self.settings.itemsFactory) {
-        self.on('postrender', function () {
-          if (self.settings.itemsFactory) {
-            self.load();
+        self.requestTime = time = new Date().getTime();
+        self.settings.itemsFactory(function (items) {
+          if (items.length === 0) {
+            self.hide();
+            return;
           }
+          if (self.requestTime !== time) {
+            return;
+          }
+          self.getEl().style.width = '';
+          self.getEl('body').style.width = '';
+          hideThrobber();
+          self.items().remove();
+          self.getEl('body').innerHTML = '';
+          self.add(items);
+          self.renderNew();
+          self.fire('loaded');
         });
-      }
-      self.on('show hide', function (e) {
-        if (e.control === self) {
-          if (e.type === 'show') {
-            global$7.setTimeout(function () {
-              self.classes.add('in');
-            }, 0);
-          } else {
-            self.classes.remove('in');
+      },
+      hideAll: function () {
+        var self = this;
+        this.find('menuitem').exec('hideMenu');
+        return self._super();
+      },
+      preRender: function () {
+        var self = this;
+        self.items().each(function (ctrl) {
+          var settings = ctrl.settings;
+          if (settings.icon || settings.image || settings.selectable) {
+            self._hasIcons = true;
+            return false;
           }
+        });
+        if (self.settings.itemsFactory) {
+          self.on('postrender', function () {
+            if (self.settings.itemsFactory) {
+              self.load();
+            }
+          });
         }
-      });
-      return self._super();
-    }
-  });
+        self.on('show hide', function (e) {
+          if (e.control === self) {
+            if (e.type === 'show') {
+              global$7.setTimeout(function () {
+                self.classes.add('in');
+              }, 0);
+            } else {
+              self.classes.remove('in');
+            }
+          }
+        });
+        return self._super();
+      }
+    });
 
-  var ListBox = MenuButton.extend({
-    init: function (settings) {
-      var self = this;
-      var values, selected, selectedText, lastItemCtrl;
-      function setSelected(menuValues) {
-        for (var i = 0; i < menuValues.length; i++) {
-          selected = menuValues[i].selected || settings.value === menuValues[i].value;
-          if (selected) {
-            selectedText = selectedText || menuValues[i].text;
-            self.state.set('value', menuValues[i].value);
-            return true;
-          }
-          if (menuValues[i].menu) {
-            if (setSelected(menuValues[i].menu)) {
+    var ListBox = MenuButton.extend({
+      init: function (settings) {
+        var self = this;
+        var values, selected, selectedText, lastItemCtrl;
+        function setSelected(menuValues) {
+          for (var i = 0; i < menuValues.length; i++) {
+            selected = menuValues[i].selected || settings.value === menuValues[i].value;
+            if (selected) {
+              selectedText = selectedText || menuValues[i].text;
+              self.state.set('value', menuValues[i].value);
               return true;
             }
+            if (menuValues[i].menu) {
+              if (setSelected(menuValues[i].menu)) {
+                return true;
+              }
+            }
           }
         }
-      }
-      self._super(settings);
-      settings = self.settings;
-      self._values = values = settings.values;
-      if (values) {
-        if (typeof settings.value !== 'undefined') {
-          setSelected(values);
+        self._super(settings);
+        settings = self.settings;
+        self._values = values = settings.values;
+        if (values) {
+          if (typeof settings.value !== 'undefined') {
+            setSelected(values);
+          }
+          if (!selected && values.length > 0) {
+            selectedText = values[0].text;
+            self.state.set('value', values[0].value);
+          }
+          self.state.set('menu', values);
         }
-        if (!selected && values.length > 0) {
-          selectedText = values[0].text;
-          self.state.set('value', values[0].value);
+        self.state.set('text', settings.text || selectedText);
+        self.classes.add('listbox');
+        self.on('select', function (e) {
+          var ctrl = e.control;
+          if (lastItemCtrl) {
+            e.lastControl = lastItemCtrl;
+          }
+          if (settings.multiple) {
+            ctrl.active(!ctrl.active());
+          } else {
+            self.value(e.control.value());
+          }
+          lastItemCtrl = ctrl;
+        });
+      },
+      value: function (value) {
+        if (arguments.length === 0) {
+          return this.state.get('value');
         }
-        self.state.set('menu', values);
-      }
-      self.state.set('text', settings.text || selectedText);
-      self.classes.add('listbox');
-      self.on('select', function (e) {
-        var ctrl = e.control;
-        if (lastItemCtrl) {
-          e.lastControl = lastItemCtrl;
+        if (typeof value === 'undefined') {
+          return this;
         }
-        if (settings.multiple) {
-          ctrl.active(!ctrl.active());
+        function valueExists(values) {
+          return exists(values, function (a) {
+            return a.menu ? valueExists(a.menu) : a.value === value;
+          });
+        }
+        if (this.settings.values) {
+          if (valueExists(this.settings.values)) {
+            this.state.set('value', value);
+          } else if (value === null) {
+            this.state.set('value', null);
+          }
         } else {
-          self.value(e.control.value());
+          this.state.set('value', value);
         }
-        lastItemCtrl = ctrl;
-      });
-    },
-    value: function (value) {
-      if (arguments.length === 0) {
-        return this.state.get('value');
-      }
-      if (typeof value === 'undefined') {
         return this;
-      }
-      if (this.settings.values) {
-        var matchingValues = global$2.grep(this.settings.values, function (a) {
-          return a.value === value;
-        });
-        if (matchingValues.length > 0) {
-          this.state.set('value', value);
-        } else if (value === null) {
-          this.state.set('value', null);
+      },
+      bindStates: function () {
+        var self = this;
+        function activateMenuItemsByValue(menu, value) {
+          if (menu instanceof Menu) {
+            menu.items().each(function (ctrl) {
+              if (!ctrl.hasMenus()) {
+                ctrl.active(ctrl.value() === value);
+              }
+            });
+          }
         }
-      } else {
-        this.state.set('value', value);
-      }
-      return this;
-    },
-    bindStates: function () {
-      var self = this;
-      function activateMenuItemsByValue(menu, value) {
-        if (menu instanceof Menu) {
-          menu.items().each(function (ctrl) {
-            if (!ctrl.hasMenus()) {
-              ctrl.active(ctrl.value() === value);
+        function getSelectedItem(menuValues, value) {
+          var selectedItem;
+          if (!menuValues) {
+            return;
+          }
+          for (var i = 0; i < menuValues.length; i++) {
+            if (menuValues[i].value === value) {
+              return menuValues[i];
             }
-          });
+            if (menuValues[i].menu) {
+              selectedItem = getSelectedItem(menuValues[i].menu, value);
+              if (selectedItem) {
+                return selectedItem;
+              }
+            }
+          }
         }
+        self.on('show', function (e) {
+          activateMenuItemsByValue(e.control, self.value());
+        });
+        self.state.on('change:value', function (e) {
+          var selectedItem = getSelectedItem(self.state.get('menu'), e.value);
+          if (selectedItem) {
+            self.text(selectedItem.text);
+          } else {
+            self.text(self.settings.text);
+          }
+        });
+        return self._super();
       }
-      function getSelectedItem(menuValues, value) {
-        var selectedItem;
-        if (!menuValues) {
-          return;
+    });
+
+    var toggleTextStyle = function (ctrl, state) {
+      var textStyle = ctrl._textStyle;
+      if (textStyle) {
+        var textElm = ctrl.getEl('text');
+        textElm.setAttribute('style', textStyle);
+        if (state) {
+          textElm.style.color = '';
+          textElm.style.backgroundColor = '';
         }
-        for (var i = 0; i < menuValues.length; i++) {
-          if (menuValues[i].value === value) {
-            return menuValues[i];
+      }
+    };
+    var MenuItem = Widget.extend({
+      Defaults: {
+        border: 0,
+        role: 'menuitem'
+      },
+      init: function (settings) {
+        var self = this;
+        var text;
+        self._super(settings);
+        settings = self.settings;
+        self.classes.add('menu-item');
+        if (settings.menu) {
+          self.classes.add('menu-item-expand');
+        }
+        if (settings.preview) {
+          self.classes.add('menu-item-preview');
+        }
+        text = self.state.get('text');
+        if (text === '-' || text === '|') {
+          self.classes.add('menu-item-sep');
+          self.aria('role', 'separator');
+          self.state.set('text', '-');
+        }
+        if (settings.selectable) {
+          self.aria('role', 'menuitemcheckbox');
+          self.classes.add('menu-item-checkbox');
+          settings.icon = 'selected';
+        }
+        if (!settings.preview && !settings.selectable) {
+          self.classes.add('menu-item-normal');
+        }
+        self.on('mousedown', function (e) {
+          e.preventDefault();
+        });
+        if (settings.menu && !settings.ariaHideMenu) {
+          self.aria('haspopup', true);
+        }
+      },
+      hasMenus: function () {
+        return !!this.settings.menu;
+      },
+      showMenu: function () {
+        var self = this;
+        var settings = self.settings;
+        var menu;
+        var parent = self.parent();
+        parent.items().each(function (ctrl) {
+          if (ctrl !== self) {
+            ctrl.hideMenu();
           }
-          if (menuValues[i].menu) {
-            selectedItem = getSelectedItem(menuValues[i].menu, value);
-            if (selectedItem) {
-              return selectedItem;
+        });
+        if (settings.menu) {
+          menu = self.menu;
+          if (!menu) {
+            menu = settings.menu;
+            if (menu.length) {
+              menu = {
+                type: 'menu',
+                items: menu
+              };
+            } else {
+              menu.type = menu.type || 'menu';
             }
+            if (parent.settings.itemDefaults) {
+              menu.itemDefaults = parent.settings.itemDefaults;
+            }
+            menu = self.menu = global$4.create(menu).parent(self).renderTo();
+            menu.reflow();
+            menu.on('cancel', function (e) {
+              e.stopPropagation();
+              self.focus();
+              menu.hide();
+            });
+            menu.on('show hide', function (e) {
+              if (e.control.items) {
+                e.control.items().each(function (ctrl) {
+                  ctrl.active(ctrl.settings.selected);
+                });
+              }
+            }).fire('show');
+            menu.on('hide', function (e) {
+              if (e.control === menu) {
+                self.classes.remove('selected');
+              }
+            });
+            menu.submenu = true;
+          } else {
+            menu.show();
           }
+          menu._parentMenu = parent;
+          menu.classes.add('menu-sub');
+          var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [
+            'tl-tr',
+            'bl-br',
+            'tr-tl',
+            'br-bl'
+          ] : [
+            'tr-tl',
+            'br-bl',
+            'tl-tr',
+            'bl-br'
+          ]);
+          menu.moveRel(self.getEl(), rel);
+          menu.rel = rel;
+          rel = 'menu-sub-' + rel;
+          menu.classes.remove(menu._lastRel).add(rel);
+          menu._lastRel = rel;
+          self.classes.add('selected');
+          self.aria('expanded', true);
         }
-      }
-      self.on('show', function (e) {
-        activateMenuItemsByValue(e.control, self.value());
-      });
-      self.state.on('change:value', function (e) {
-        var selectedItem = getSelectedItem(self.state.get('menu'), e.value);
-        if (selectedItem) {
-          self.text(selectedItem.text);
-        } else {
-          self.text(self.settings.text);
+      },
+      hideMenu: function () {
+        var self = this;
+        if (self.menu) {
+          self.menu.items().each(function (item) {
+            if (item.hideMenu) {
+              item.hideMenu();
+            }
+          });
+          self.menu.hide();
+          self.aria('expanded', false);
         }
-      });
-      return self._super();
-    }
-  });
-
-  var toggleTextStyle = function (ctrl, state) {
-    var textStyle = ctrl._textStyle;
-    if (textStyle) {
-      var textElm = ctrl.getEl('text');
-      textElm.setAttribute('style', textStyle);
-      if (state) {
-        textElm.style.color = '';
-        textElm.style.backgroundColor = '';
-      }
-    }
-  };
-  var MenuItem = Widget.extend({
-    Defaults: {
-      border: 0,
-      role: 'menuitem'
-    },
-    init: function (settings) {
-      var self = this;
-      var text;
-      self._super(settings);
-      settings = self.settings;
-      self.classes.add('menu-item');
-      if (settings.menu) {
-        self.classes.add('menu-item-expand');
-      }
-      if (settings.preview) {
-        self.classes.add('menu-item-preview');
-      }
-      text = self.state.get('text');
-      if (text === '-' || text === '|') {
-        self.classes.add('menu-item-sep');
-        self.aria('role', 'separator');
-        self.state.set('text', '-');
-      }
-      if (settings.selectable) {
-        self.aria('role', 'menuitemcheckbox');
-        self.classes.add('menu-item-checkbox');
-        settings.icon = 'selected';
-      }
-      if (!settings.preview && !settings.selectable) {
-        self.classes.add('menu-item-normal');
-      }
-      self.on('mousedown', function (e) {
-        e.preventDefault();
-      });
-      if (settings.menu && !settings.ariaHideMenu) {
-        self.aria('haspopup', true);
-      }
-    },
-    hasMenus: function () {
-      return !!this.settings.menu;
-    },
-    showMenu: function () {
-      var self = this;
-      var settings = self.settings;
-      var menu;
-      var parent = self.parent();
-      parent.items().each(function (ctrl) {
-        if (ctrl !== self) {
-          ctrl.hideMenu();
-        }
-      });
-      if (settings.menu) {
-        menu = self.menu;
-        if (!menu) {
-          menu = settings.menu;
-          if (menu.length) {
-            menu = {
-              type: 'menu',
-              items: menu
+        return self;
+      },
+      renderHtml: function () {
+        var self = this;
+        var id = self._id;
+        var settings = self.settings;
+        var prefix = self.classPrefix;
+        var text = self.state.get('text');
+        var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
+        var url = self.encode(settings.url), iconHtml = '';
+        function convertShortcut(shortcut) {
+          var i, value, replace = {};
+          if (global$8.mac) {
+            replace = {
+              alt: '&#x2325;',
+              ctrl: '&#x2318;',
+              shift: '&#x21E7;',
+              meta: '&#x2318;'
             };
           } else {
-            menu.type = menu.type || 'menu';
+            replace = { meta: 'Ctrl' };
           }
-          if (parent.settings.itemDefaults) {
-            menu.itemDefaults = parent.settings.itemDefaults;
+          shortcut = shortcut.split('+');
+          for (i = 0; i < shortcut.length; i++) {
+            value = replace[shortcut[i].toLowerCase()];
+            if (value) {
+              shortcut[i] = value;
+            }
           }
-          menu = self.menu = global$4.create(menu).parent(self).renderTo();
-          menu.reflow();
-          menu.on('cancel', function (e) {
-            e.stopPropagation();
-            self.focus();
-            menu.hide();
-          });
-          menu.on('show hide', function (e) {
-            if (e.control.items) {
-              e.control.items().each(function (ctrl) {
-                ctrl.active(ctrl.settings.selected);
+          return shortcut.join('+');
+        }
+        function escapeRegExp(str) {
+          return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+        }
+        function markMatches(text) {
+          var match = settings.match || '';
+          return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {
+            return '!mce~match[' + match + ']mce~match!';
+          }) : text;
+        }
+        function boldMatches(text) {
+          return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');
+        }
+        if (icon) {
+          self.parent().classes.add('menu-has-icons');
+        }
+        if (settings.image) {
+          image = ' style="background-image: url(\'' + settings.image + '\')"';
+        }
+        if (shortcut) {
+          shortcut = convertShortcut(shortcut);
+        }
+        icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
+        iconHtml = text !== '-' ? '<i class="' + icon + '"' + image + '></i>\xA0' : '';
+        text = boldMatches(self.encode(markMatches(text)));
+        url = boldMatches(self.encode(markMatches(url)));
+        return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1">' + iconHtml + (text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') + (shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') + (settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') + (url ? '<div class="' + prefix + 'menu-item-link">' + url + '</div>' : '') + '</div>';
+      },
+      postRender: function () {
+        var self = this, settings = self.settings;
+        var textStyle = settings.textStyle;
+        if (typeof textStyle === 'function') {
+          textStyle = textStyle.call(this);
+        }
+        if (textStyle) {
+          var textElm = self.getEl('text');
+          if (textElm) {
+            textElm.setAttribute('style', textStyle);
+            self._textStyle = textStyle;
+          }
+        }
+        self.on('mouseenter click', function (e) {
+          if (e.control === self) {
+            if (!settings.menu && e.type === 'click') {
+              self.fire('select');
+              global$7.requestAnimationFrame(function () {
+                self.parent().hideAll();
               });
+            } else {
+              self.showMenu();
+              if (e.aria) {
+                self.menu.focus(true);
+              }
             }
-          }).fire('show');
-          menu.on('hide', function (e) {
-            if (e.control === menu) {
-              self.classes.remove('selected');
-            }
-          });
-          menu.submenu = true;
-        } else {
-          menu.show();
-        }
-        menu._parentMenu = parent;
-        menu.classes.add('menu-sub');
-        var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [
-          'tl-tr',
-          'bl-br',
-          'tr-tl',
-          'br-bl'
-        ] : [
-          'tr-tl',
-          'br-bl',
-          'tl-tr',
-          'bl-br'
-        ]);
-        menu.moveRel(self.getEl(), rel);
-        menu.rel = rel;
-        rel = 'menu-sub-' + rel;
-        menu.classes.remove(menu._lastRel).add(rel);
-        menu._lastRel = rel;
-        self.classes.add('selected');
-        self.aria('expanded', true);
-      }
-    },
-    hideMenu: function () {
-      var self = this;
-      if (self.menu) {
-        self.menu.items().each(function (item) {
-          if (item.hideMenu) {
-            item.hideMenu();
           }
         });
-        self.menu.hide();
-        self.aria('expanded', false);
-      }
-      return self;
-    },
-    renderHtml: function () {
-      var self = this;
-      var id = self._id;
-      var settings = self.settings;
-      var prefix = self.classPrefix;
-      var text = self.state.get('text');
-      var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
-      var url = self.encode(settings.url), iconHtml = '';
-      function convertShortcut(shortcut) {
-        var i, value, replace = {};
-        if (global$8.mac) {
-          replace = {
-            alt: '&#x2325;',
-            ctrl: '&#x2318;',
-            shift: '&#x21E7;',
-            meta: '&#x2318;'
-          };
-        } else {
-          replace = { meta: 'Ctrl' };
+        self._super();
+        return self;
+      },
+      hover: function () {
+        var self = this;
+        self.parent().items().each(function (ctrl) {
+          ctrl.classes.remove('selected');
+        });
+        self.classes.toggle('selected', true);
+        return self;
+      },
+      active: function (state) {
+        toggleTextStyle(this, state);
+        if (typeof state !== 'undefined') {
+          this.aria('checked', state);
         }
-        shortcut = shortcut.split('+');
-        for (i = 0; i < shortcut.length; i++) {
-          value = replace[shortcut[i].toLowerCase()];
-          if (value) {
-            shortcut[i] = value;
-          }
+        return this._super(state);
+      },
+      remove: function () {
+        this._super();
+        if (this.menu) {
+          this.menu.remove();
         }
-        return shortcut.join('+');
       }
-      function escapeRegExp(str) {
-        return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+    });
+
+    var Radio = Checkbox.extend({
+      Defaults: {
+        classes: 'radio',
+        role: 'radio'
       }
-      function markMatches(text) {
-        var match = settings.match || '';
-        return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {
-          return '!mce~match[' + match + ']mce~match!';
-        }) : text;
-      }
-      function boldMatches(text) {
-        return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');
-      }
-      if (icon) {
-        self.parent().classes.add('menu-has-icons');
-      }
-      if (settings.image) {
-        image = ' style="background-image: url(\'' + settings.image + '\')"';
-      }
-      if (shortcut) {
-        shortcut = convertShortcut(shortcut);
-      }
-      icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
-      iconHtml = text !== '-' ? '<i class="' + icon + '"' + image + '></i>\xA0' : '';
-      text = boldMatches(self.encode(markMatches(text)));
-      url = boldMatches(self.encode(markMatches(url)));
-      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1">' + iconHtml + (text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') + (shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') + (settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') + (url ? '<div class="' + prefix + 'menu-item-link">' + url + '</div>' : '') + '</div>';
-    },
-    postRender: function () {
-      var self = this, settings = self.settings;
-      var textStyle = settings.textStyle;
-      if (typeof textStyle === 'function') {
-        textStyle = textStyle.call(this);
-      }
-      if (textStyle) {
-        var textElm = self.getEl('text');
-        if (textElm) {
-          textElm.setAttribute('style', textStyle);
-          self._textStyle = textStyle;
+    });
+
+    var ResizeHandle = Widget.extend({
+      renderHtml: function () {
+        var self = this, prefix = self.classPrefix;
+        self.classes.add('resizehandle');
+        if (self.settings.direction === 'both') {
+          self.classes.add('resizehandle-both');
         }
-      }
-      self.on('mouseenter click', function (e) {
-        if (e.control === self) {
-          if (!settings.menu && e.type === 'click') {
-            self.fire('select');
-            global$7.requestAnimationFrame(function () {
-              self.parent().hideAll();
-            });
-          } else {
-            self.showMenu();
-            if (e.aria) {
-              self.menu.focus(true);
+        self.canFocus = false;
+        return '<div id="' + self._id + '" class="' + self.classes + '">' + '<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.resizeDragHelper = new DragHelper(this._id, {
+          start: function () {
+            self.fire('ResizeStart');
+          },
+          drag: function (e) {
+            if (self.settings.direction !== 'both') {
+              e.deltaX = 0;
             }
+            self.fire('Resize', e);
+          },
+          stop: function () {
+            self.fire('ResizeEnd');
           }
+        });
+      },
+      remove: function () {
+        if (this.resizeDragHelper) {
+          this.resizeDragHelper.destroy();
         }
-      });
-      self._super();
-      return self;
-    },
-    hover: function () {
-      var self = this;
-      self.parent().items().each(function (ctrl) {
-        ctrl.classes.remove('selected');
-      });
-      self.classes.toggle('selected', true);
-      return self;
-    },
-    active: function (state) {
-      toggleTextStyle(this, state);
-      if (typeof state !== 'undefined') {
-        this.aria('checked', state);
+        return this._super();
       }
-      return this._super(state);
-    },
-    remove: function () {
-      this._super();
-      if (this.menu) {
-        this.menu.remove();
-      }
-    }
-  });
+    });
 
-  var Radio = Checkbox.extend({
-    Defaults: {
-      classes: 'radio',
-      role: 'radio'
-    }
-  });
-
-  var ResizeHandle = Widget.extend({
-    renderHtml: function () {
-      var self = this, prefix = self.classPrefix;
-      self.classes.add('resizehandle');
-      if (self.settings.direction === 'both') {
-        self.classes.add('resizehandle-both');
-      }
-      self.canFocus = false;
-      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.resizeDragHelper = new DragHelper(this._id, {
-        start: function () {
-          self.fire('ResizeStart');
-        },
-        drag: function (e) {
-          if (self.settings.direction !== 'both') {
-            e.deltaX = 0;
-          }
-          self.fire('Resize', e);
-        },
-        stop: function () {
-          self.fire('ResizeEnd');
+    function createOptions(options) {
+      var strOptions = '';
+      if (options) {
+        for (var i = 0; i < options.length; i++) {
+          strOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';
         }
-      });
-    },
-    remove: function () {
-      if (this.resizeDragHelper) {
-        this.resizeDragHelper.destroy();
       }
-      return this._super();
+      return strOptions;
     }
-  });
-
-  function createOptions(options) {
-    var strOptions = '';
-    if (options) {
-      for (var i = 0; i < options.length; i++) {
-        strOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';
-      }
-    }
-    return strOptions;
-  }
-  var SelectBox = Widget.extend({
-    Defaults: {
-      classes: 'selectbox',
-      role: 'selectbox',
-      options: []
-    },
-    init: function (settings) {
-      var self = this;
-      self._super(settings);
-      if (self.settings.size) {
-        self.size = self.settings.size;
-      }
-      if (self.settings.options) {
-        self._options = self.settings.options;
-      }
-      self.on('keydown', function (e) {
-        var rootControl;
-        if (e.keyCode === 13) {
-          e.preventDefault();
-          self.parents().reverse().each(function (ctrl) {
-            if (ctrl.toJSON) {
-              rootControl = ctrl;
-              return false;
-            }
-          });
-          self.fire('submit', { data: rootControl.toJSON() });
+    var SelectBox = Widget.extend({
+      Defaults: {
+        classes: 'selectbox',
+        role: 'selectbox',
+        options: []
+      },
+      init: function (settings) {
+        var self = this;
+        self._super(settings);
+        if (self.settings.size) {
+          self.size = self.settings.size;
         }
-      });
-    },
-    options: function (state) {
-      if (!arguments.length) {
-        return this.state.get('options');
-      }
-      this.state.set('options', state);
-      return this;
-    },
-    renderHtml: function () {
-      var self = this;
-      var options, size = '';
-      options = createOptions(self._options);
-      if (self.size) {
-        size = ' size = "' + self.size + '"';
-      }
-      return '<select id="' + self._id + '" class="' + self.classes + '"' + size + '>' + options + '</select>';
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:options', function (e) {
-        self.getEl().innerHTML = createOptions(e.value);
-      });
-      return self._super();
-    }
-  });
-
-  function constrain(value, minVal, maxVal) {
-    if (value < minVal) {
-      value = minVal;
-    }
-    if (value > maxVal) {
-      value = maxVal;
-    }
-    return value;
-  }
-  function setAriaProp(el, name, value) {
-    el.setAttribute('aria-' + name, value);
-  }
-  function updateSliderHandle(ctrl, value) {
-    var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;
-    if (ctrl.settings.orientation === 'v') {
-      stylePosName = 'top';
-      sizeName = 'height';
-      shortSizeName = 'h';
-    } else {
-      stylePosName = 'left';
-      sizeName = 'width';
-      shortSizeName = 'w';
-    }
-    handleEl = ctrl.getEl('handle');
-    maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
-    styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';
-    handleEl.style[stylePosName] = styleValue;
-    handleEl.style.height = ctrl.layoutRect().h + 'px';
-    setAriaProp(handleEl, 'valuenow', value);
-    setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));
-    setAriaProp(handleEl, 'valuemin', ctrl._minValue);
-    setAriaProp(handleEl, 'valuemax', ctrl._maxValue);
-  }
-  var Slider = Widget.extend({
-    init: function (settings) {
-      var self = this;
-      if (!settings.previewFilter) {
-        settings.previewFilter = function (value) {
-          return Math.round(value * 100) / 100;
-        };
-      }
-      self._super(settings);
-      self.classes.add('slider');
-      if (settings.orientation === 'v') {
-        self.classes.add('vertical');
-      }
-      self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;
-      self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;
-      self._initValue = self.state.get('value');
-    },
-    renderHtml: function () {
-      var self = this, id = self._id, prefix = self.classPrefix;
-      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-handle" class="' + prefix + 'slider-handle" role="slider" tabindex="-1"></div>' + '</div>';
-    },
-    reset: function () {
-      this.value(this._initValue).repaint();
-    },
-    postRender: function () {
-      var self = this;
-      var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;
-      function toFraction(min, max, val) {
-        return (val + min) / (max - min);
-      }
-      function fromFraction(min, max, val) {
-        return val * (max - min) - min;
-      }
-      function handleKeyboard(minValue, maxValue) {
-        function alter(delta) {
-          var value;
-          value = self.value();
-          value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);
-          value = constrain(value, minValue, maxValue);
-          self.value(value);
-          self.fire('dragstart', { value: value });
-          self.fire('drag', { value: value });
-          self.fire('dragend', { value: value });
+        if (self.settings.options) {
+          self._options = self.settings.options;
         }
         self.on('keydown', function (e) {
-          switch (e.keyCode) {
-          case 37:
-          case 38:
-            alter(-1);
-            break;
-          case 39:
-          case 40:
-            alter(1);
-            break;
+          var rootControl;
+          if (e.keyCode === 13) {
+            e.preventDefault();
+            self.parents().reverse().each(function (ctrl) {
+              if (ctrl.toJSON) {
+                rootControl = ctrl;
+                return false;
+              }
+            });
+            self.fire('submit', { data: rootControl.toJSON() });
           }
         });
-      }
-      function handleDrag(minValue, maxValue, handleEl) {
-        var startPos, startHandlePos, maxHandlePos, handlePos, value;
-        self._dragHelper = new DragHelper(self._id, {
-          handle: self._id + '-handle',
-          start: function (e) {
-            startPos = e[screenCordName];
-            startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);
-            maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
-            self.fire('dragstart', { value: value });
-          },
-          drag: function (e) {
-            var delta = e[screenCordName] - startPos;
-            handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);
-            handleEl.style[stylePosName] = handlePos + 'px';
-            value = minValue + handlePos / maxHandlePos * (maxValue - minValue);
-            self.value(value);
-            self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');
-            self.fire('drag', { value: value });
-          },
-          stop: function () {
-            self.tooltip().hide();
-            self.fire('dragend', { value: value });
-          }
+      },
+      options: function (state) {
+        if (!arguments.length) {
+          return this.state.get('options');
+        }
+        this.state.set('options', state);
+        return this;
+      },
+      renderHtml: function () {
+        var self = this;
+        var options, size = '';
+        options = createOptions(self._options);
+        if (self.size) {
+          size = ' size = "' + self.size + '"';
+        }
+        return '<select id="' + self._id + '" class="' + self.classes + '"' + size + '>' + options + '</select>';
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:options', function (e) {
+          self.getEl().innerHTML = createOptions(e.value);
         });
+        return self._super();
       }
-      minValue = self._minValue;
-      maxValue = self._maxValue;
-      if (self.settings.orientation === 'v') {
-        screenCordName = 'screenY';
+    });
+
+    function constrain(value, minVal, maxVal) {
+      if (value < minVal) {
+        value = minVal;
+      }
+      if (value > maxVal) {
+        value = maxVal;
+      }
+      return value;
+    }
+    function setAriaProp(el, name, value) {
+      el.setAttribute('aria-' + name, value);
+    }
+    function updateSliderHandle(ctrl, value) {
+      var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;
+      if (ctrl.settings.orientation === 'v') {
         stylePosName = 'top';
         sizeName = 'height';
         shortSizeName = 'h';
       } else {
-        screenCordName = 'screenX';
         stylePosName = 'left';
         sizeName = 'width';
         shortSizeName = 'w';
       }
-      self._super();
-      handleKeyboard(minValue, maxValue);
-      handleDrag(minValue, maxValue, self.getEl('handle'));
-    },
-    repaint: function () {
-      this._super();
-      updateSliderHandle(this, this.value());
-    },
-    bindStates: function () {
-      var self = this;
-      self.state.on('change:value', function (e) {
-        updateSliderHandle(self, e.value);
-      });
-      return self._super();
+      handleEl = ctrl.getEl('handle');
+      maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
+      styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';
+      handleEl.style[stylePosName] = styleValue;
+      handleEl.style.height = ctrl.layoutRect().h + 'px';
+      setAriaProp(handleEl, 'valuenow', value);
+      setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));
+      setAriaProp(handleEl, 'valuemin', ctrl._minValue);
+      setAriaProp(handleEl, 'valuemax', ctrl._maxValue);
     }
-  });
+    var Slider = Widget.extend({
+      init: function (settings) {
+        var self = this;
+        if (!settings.previewFilter) {
+          settings.previewFilter = function (value) {
+            return Math.round(value * 100) / 100;
+          };
+        }
+        self._super(settings);
+        self.classes.add('slider');
+        if (settings.orientation === 'v') {
+          self.classes.add('vertical');
+        }
+        self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;
+        self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;
+        self._initValue = self.state.get('value');
+      },
+      renderHtml: function () {
+        var self = this, id = self._id, prefix = self.classPrefix;
+        return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-handle" class="' + prefix + 'slider-handle" role="slider" tabindex="-1"></div>' + '</div>';
+      },
+      reset: function () {
+        this.value(this._initValue).repaint();
+      },
+      postRender: function () {
+        var self = this;
+        var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;
+        function toFraction(min, max, val) {
+          return (val + min) / (max - min);
+        }
+        function fromFraction(min, max, val) {
+          return val * (max - min) - min;
+        }
+        function handleKeyboard(minValue, maxValue) {
+          function alter(delta) {
+            var value;
+            value = self.value();
+            value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);
+            value = constrain(value, minValue, maxValue);
+            self.value(value);
+            self.fire('dragstart', { value: value });
+            self.fire('drag', { value: value });
+            self.fire('dragend', { value: value });
+          }
+          self.on('keydown', function (e) {
+            switch (e.keyCode) {
+            case 37:
+            case 38:
+              alter(-1);
+              break;
+            case 39:
+            case 40:
+              alter(1);
+              break;
+            }
+          });
+        }
+        function handleDrag(minValue, maxValue, handleEl) {
+          var startPos, startHandlePos, maxHandlePos, handlePos, value;
+          self._dragHelper = new DragHelper(self._id, {
+            handle: self._id + '-handle',
+            start: function (e) {
+              startPos = e[screenCordName];
+              startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);
+              maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];
+              self.fire('dragstart', { value: value });
+            },
+            drag: function (e) {
+              var delta = e[screenCordName] - startPos;
+              handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);
+              handleEl.style[stylePosName] = handlePos + 'px';
+              value = minValue + handlePos / maxHandlePos * (maxValue - minValue);
+              self.value(value);
+              self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');
+              self.fire('drag', { value: value });
+            },
+            stop: function () {
+              self.tooltip().hide();
+              self.fire('dragend', { value: value });
+            }
+          });
+        }
+        minValue = self._minValue;
+        maxValue = self._maxValue;
+        if (self.settings.orientation === 'v') {
+          screenCordName = 'screenY';
+          stylePosName = 'top';
+          sizeName = 'height';
+          shortSizeName = 'h';
+        } else {
+          screenCordName = 'screenX';
+          stylePosName = 'left';
+          sizeName = 'width';
+          shortSizeName = 'w';
+        }
+        self._super();
+        handleKeyboard(minValue, maxValue);
+        handleDrag(minValue, maxValue, self.getEl('handle'));
+      },
+      repaint: function () {
+        this._super();
+        updateSliderHandle(this, this.value());
+      },
+      bindStates: function () {
+        var self = this;
+        self.state.on('change:value', function (e) {
+          updateSliderHandle(self, e.value);
+        });
+        return self._super();
+      }
+    });
 
-  var Spacer = Widget.extend({
-    renderHtml: function () {
-      var self = this;
-      self.classes.add('spacer');
-      self.canFocus = false;
-      return '<div id="' + self._id + '" class="' + self.classes + '"></div>';
-    }
-  });
+    var Spacer = Widget.extend({
+      renderHtml: function () {
+        var self = this;
+        self.classes.add('spacer');
+        self.canFocus = false;
+        return '<div id="' + self._id + '" class="' + self.classes + '"></div>';
+      }
+    });
 
-  var SplitButton = MenuButton.extend({
-    Defaults: {
-      classes: 'widget btn splitbtn',
-      role: 'button'
-    },
-    repaint: function () {
-      var self$$1 = this;
-      var elm = self$$1.getEl();
-      var rect = self$$1.layoutRect();
-      var mainButtonElm, menuButtonElm;
-      self$$1._super();
-      mainButtonElm = elm.firstChild;
-      menuButtonElm = elm.lastChild;
-      global$9(mainButtonElm).css({
-        width: rect.w - funcs.getSize(menuButtonElm).width,
-        height: rect.h - 2
-      });
-      global$9(menuButtonElm).css({ height: rect.h - 2 });
-      return self$$1;
-    },
-    activeMenu: function (state) {
-      var self$$1 = this;
-      global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);
-    },
-    renderHtml: function () {
-      var self$$1 = this;
-      var id = self$$1._id;
-      var prefix = self$$1.classPrefix;
-      var image;
-      var icon = self$$1.state.get('icon');
-      var text = self$$1.state.get('text');
-      var settings = self$$1.settings;
-      var textHtml = '', ariaPressed;
-      image = settings.image;
-      if (image) {
-        icon = 'none';
-        if (typeof image !== 'string') {
-          image = window.getSelection ? image[0] : image[1];
+    var SplitButton = MenuButton.extend({
+      Defaults: {
+        classes: 'widget btn splitbtn',
+        role: 'button'
+      },
+      repaint: function () {
+        var self$$1 = this;
+        var elm = self$$1.getEl();
+        var rect = self$$1.layoutRect();
+        var mainButtonElm, menuButtonElm;
+        self$$1._super();
+        mainButtonElm = elm.firstChild;
+        menuButtonElm = elm.lastChild;
+        global$9(mainButtonElm).css({
+          width: rect.w - funcs.getSize(menuButtonElm).width,
+          height: rect.h - 2
+        });
+        global$9(menuButtonElm).css({ height: rect.h - 2 });
+        return self$$1;
+      },
+      activeMenu: function (state) {
+        var self$$1 = this;
+        global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);
+      },
+      renderHtml: function () {
+        var self$$1 = this;
+        var id = self$$1._id;
+        var prefix = self$$1.classPrefix;
+        var image;
+        var icon = self$$1.state.get('icon');
+        var text = self$$1.state.get('text');
+        var settings = self$$1.settings;
+        var textHtml = '', ariaPressed;
+        image = settings.image;
+        if (image) {
+          icon = 'none';
+          if (typeof image !== 'string') {
+            image = window.getSelection ? image[0] : image[1];
+          }
+          image = ' style="background-image: url(\'' + image + '\')"';
+        } else {
+          image = '';
         }
-        image = ' style="background-image: url(\'' + image + '\')"';
-      } else {
-        image = '';
-      }
-      icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-      if (text) {
-        self$$1.classes.add('btn-has-text');
-        textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
-      }
-      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
-      return '<div id="' + id + '" class="' + self$$1.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self$$1._menuBtnText ? (icon ? '\xA0' : '') + self$$1._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
-    },
-    postRender: function () {
-      var self$$1 = this, onClickHandler = self$$1.settings.onclick;
-      self$$1.on('click', function (e) {
-        var node = e.target;
-        if (e.control === this) {
-          while (node) {
-            if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {
-              e.stopImmediatePropagation();
-              if (onClickHandler) {
-                onClickHandler.call(this, e);
+        icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+        if (text) {
+          self$$1.classes.add('btn-has-text');
+          textHtml = '<span class="' + prefix + 'txt">' + self$$1.encode(text) + '</span>';
+        }
+        ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';
+        return '<div id="' + id + '" class="' + self$$1.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self$$1._menuBtnText ? (icon ? '\xA0' : '') + self$$1._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';
+      },
+      postRender: function () {
+        var self$$1 = this, onClickHandler = self$$1.settings.onclick;
+        self$$1.on('click', function (e) {
+          var node = e.target;
+          if (e.control === this) {
+            while (node) {
+              if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {
+                e.stopImmediatePropagation();
+                if (onClickHandler) {
+                  onClickHandler.call(this, e);
+                }
+                return;
               }
-              return;
+              node = node.parentNode;
             }
-            node = node.parentNode;
           }
-        }
-      });
-      delete self$$1.settings.onclick;
-      return self$$1._super();
-    }
-  });
+        });
+        delete self$$1.settings.onclick;
+        return self$$1._super();
+      }
+    });
 
-  var StackLayout = FlowLayout.extend({
-    Defaults: {
-      containerClass: 'stack-layout',
-      controlClass: 'stack-layout-item',
-      endClass: 'break'
-    },
-    isNative: function () {
-      return true;
-    }
-  });
+    var StackLayout = FlowLayout.extend({
+      Defaults: {
+        containerClass: 'stack-layout',
+        controlClass: 'stack-layout-item',
+        endClass: 'break'
+      },
+      isNative: function () {
+        return true;
+      }
+    });
 
-  var TabPanel = Panel.extend({
-    Defaults: {
-      layout: 'absolute',
-      defaults: { type: 'panel' }
-    },
-    activateTab: function (idx) {
-      var activeTabElm;
-      if (this.activeTabId) {
-        activeTabElm = this.getEl(this.activeTabId);
-        global$9(activeTabElm).removeClass(this.classPrefix + 'active');
-        activeTabElm.setAttribute('aria-selected', 'false');
-      }
-      this.activeTabId = 't' + idx;
-      activeTabElm = this.getEl('t' + idx);
-      activeTabElm.setAttribute('aria-selected', 'true');
-      global$9(activeTabElm).addClass(this.classPrefix + 'active');
-      this.items()[idx].show().fire('showtab');
-      this.reflow();
-      this.items().each(function (item, i) {
-        if (idx !== i) {
-          item.hide();
+    var TabPanel = Panel.extend({
+      Defaults: {
+        layout: 'absolute',
+        defaults: { type: 'panel' }
+      },
+      activateTab: function (idx) {
+        var activeTabElm;
+        if (this.activeTabId) {
+          activeTabElm = this.getEl(this.activeTabId);
+          global$9(activeTabElm).removeClass(this.classPrefix + 'active');
+          activeTabElm.setAttribute('aria-selected', 'false');
         }
-      });
-    },
-    renderHtml: function () {
-      var self = this;
-      var layout = self._layout;
-      var tabsHtml = '';
-      var prefix = self.classPrefix;
-      self.preRender();
-      layout.preRender(self);
-      self.items().each(function (ctrl, i) {
-        var id = self._id + '-t' + i;
-        ctrl.aria('role', 'tabpanel');
-        ctrl.aria('labelledby', id);
-        tabsHtml += '<div id="' + id + '" class="' + prefix + 'tab" ' + 'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' + self.encode(ctrl.settings.title) + '</div>';
-      });
-      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + '<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' + tabsHtml + '</div>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>' + '</div>';
-    },
-    postRender: function () {
-      var self = this;
-      self._super();
-      self.settings.activeTab = self.settings.activeTab || 0;
-      self.activateTab(self.settings.activeTab);
-      this.on('click', function (e) {
-        var targetParent = e.target.parentNode;
-        if (targetParent && targetParent.id === self._id + '-head') {
-          var i = targetParent.childNodes.length;
-          while (i--) {
-            if (targetParent.childNodes[i] === e.target) {
-              self.activateTab(i);
-            }
+        this.activeTabId = 't' + idx;
+        activeTabElm = this.getEl('t' + idx);
+        activeTabElm.setAttribute('aria-selected', 'true');
+        global$9(activeTabElm).addClass(this.classPrefix + 'active');
+        this.items()[idx].show().fire('showtab');
+        this.reflow();
+        this.items().each(function (item, i) {
+          if (idx !== i) {
+            item.hide();
           }
-        }
-      });
-    },
-    initLayoutRect: function () {
-      var self = this;
-      var rect, minW, minH;
-      minW = funcs.getSize(self.getEl('head')).width;
-      minW = minW < 0 ? 0 : minW;
-      minH = 0;
-      self.items().each(function (item) {
-        minW = Math.max(minW, item.layoutRect().minW);
-        minH = Math.max(minH, item.layoutRect().minH);
-      });
-      self.items().each(function (ctrl) {
-        ctrl.settings.x = 0;
-        ctrl.settings.y = 0;
-        ctrl.settings.w = minW;
-        ctrl.settings.h = minH;
-        ctrl.layoutRect({
-          x: 0,
-          y: 0,
-          w: minW,
-          h: minH
         });
-      });
-      var headH = funcs.getSize(self.getEl('head')).height;
-      self.settings.minWidth = minW;
-      self.settings.minHeight = minH + headH;
-      rect = self._super();
-      rect.deltaH += headH;
-      rect.innerH = rect.h - rect.deltaH;
-      return rect;
-    }
-  });
-
-  var TextBox = Widget.extend({
-    init: function (settings) {
-      var self$$1 = this;
-      self$$1._super(settings);
-      self$$1.classes.add('textbox');
-      if (settings.multiline) {
-        self$$1.classes.add('multiline');
-      } else {
-        self$$1.on('keydown', function (e) {
-          var rootControl;
-          if (e.keyCode === 13) {
-            e.preventDefault();
-            self$$1.parents().reverse().each(function (ctrl) {
-              if (ctrl.toJSON) {
-                rootControl = ctrl;
-                return false;
+      },
+      renderHtml: function () {
+        var self = this;
+        var layout = self._layout;
+        var tabsHtml = '';
+        var prefix = self.classPrefix;
+        self.preRender();
+        layout.preRender(self);
+        self.items().each(function (ctrl, i) {
+          var id = self._id + '-t' + i;
+          ctrl.aria('role', 'tabpanel');
+          ctrl.aria('labelledby', id);
+          tabsHtml += '<div id="' + id + '" class="' + prefix + 'tab" ' + 'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' + self.encode(ctrl.settings.title) + '</div>';
+        });
+        return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + '<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' + tabsHtml + '</div>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>' + '</div>';
+      },
+      postRender: function () {
+        var self = this;
+        self._super();
+        self.settings.activeTab = self.settings.activeTab || 0;
+        self.activateTab(self.settings.activeTab);
+        this.on('click', function (e) {
+          var targetParent = e.target.parentNode;
+          if (targetParent && targetParent.id === self._id + '-head') {
+            var i = targetParent.childNodes.length;
+            while (i--) {
+              if (targetParent.childNodes[i] === e.target) {
+                self.activateTab(i);
               }
-            });
-            self$$1.fire('submit', { data: rootControl.toJSON() });
+            }
           }
         });
-        self$$1.on('keyup', function (e) {
+      },
+      initLayoutRect: function () {
+        var self = this;
+        var rect, minW, minH;
+        minW = funcs.getSize(self.getEl('head')).width;
+        minW = minW < 0 ? 0 : minW;
+        minH = 0;
+        self.items().each(function (item) {
+          minW = Math.max(minW, item.layoutRect().minW);
+          minH = Math.max(minH, item.layoutRect().minH);
+        });
+        self.items().each(function (ctrl) {
+          ctrl.settings.x = 0;
+          ctrl.settings.y = 0;
+          ctrl.settings.w = minW;
+          ctrl.settings.h = minH;
+          ctrl.layoutRect({
+            x: 0,
+            y: 0,
+            w: minW,
+            h: minH
+          });
+        });
+        var headH = funcs.getSize(self.getEl('head')).height;
+        self.settings.minWidth = minW;
+        self.settings.minHeight = minH + headH;
+        rect = self._super();
+        rect.deltaH += headH;
+        rect.innerH = rect.h - rect.deltaH;
+        return rect;
+      }
+    });
+
+    var TextBox = Widget.extend({
+      init: function (settings) {
+        var self$$1 = this;
+        self$$1._super(settings);
+        self$$1.classes.add('textbox');
+        if (settings.multiline) {
+          self$$1.classes.add('multiline');
+        } else {
+          self$$1.on('keydown', function (e) {
+            var rootControl;
+            if (e.keyCode === 13) {
+              e.preventDefault();
+              self$$1.parents().reverse().each(function (ctrl) {
+                if (ctrl.toJSON) {
+                  rootControl = ctrl;
+                  return false;
+                }
+              });
+              self$$1.fire('submit', { data: rootControl.toJSON() });
+            }
+          });
+          self$$1.on('keyup', function (e) {
+            self$$1.state.set('value', e.target.value);
+          });
+        }
+      },
+      repaint: function () {
+        var self$$1 = this;
+        var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;
+        style = self$$1.getEl().style;
+        rect = self$$1._layoutRect;
+        lastRepaintRect = self$$1._lastRepaintRect || {};
+        var doc = document;
+        if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+          style.lineHeight = rect.h - borderH + 'px';
+        }
+        borderBox = self$$1.borderBox;
+        borderW = borderBox.left + borderBox.right + 8;
+        borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);
+        if (rect.x !== lastRepaintRect.x) {
+          style.left = rect.x + 'px';
+          lastRepaintRect.x = rect.x;
+        }
+        if (rect.y !== lastRepaintRect.y) {
+          style.top = rect.y + 'px';
+          lastRepaintRect.y = rect.y;
+        }
+        if (rect.w !== lastRepaintRect.w) {
+          style.width = rect.w - borderW + 'px';
+          lastRepaintRect.w = rect.w;
+        }
+        if (rect.h !== lastRepaintRect.h) {
+          style.height = rect.h - borderH + 'px';
+          lastRepaintRect.h = rect.h;
+        }
+        self$$1._lastRepaintRect = lastRepaintRect;
+        self$$1.fire('repaint', {}, false);
+        return self$$1;
+      },
+      renderHtml: function () {
+        var self$$1 = this;
+        var settings = self$$1.settings;
+        var attrs, elm;
+        attrs = {
+          id: self$$1._id,
+          hidefocus: '1'
+        };
+        global$2.each([
+          'rows',
+          'spellcheck',
+          'maxLength',
+          'size',
+          'readonly',
+          'min',
+          'max',
+          'step',
+          'list',
+          'pattern',
+          'placeholder',
+          'required',
+          'multiple'
+        ], function (name$$1) {
+          attrs[name$$1] = settings[name$$1];
+        });
+        if (self$$1.disabled()) {
+          attrs.disabled = 'disabled';
+        }
+        if (settings.subtype) {
+          attrs.type = settings.subtype;
+        }
+        elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);
+        elm.value = self$$1.state.get('value');
+        elm.className = self$$1.classes.toString();
+        return elm.outerHTML;
+      },
+      value: function (value) {
+        if (arguments.length) {
+          this.state.set('value', value);
+          return this;
+        }
+        if (this.state.get('rendered')) {
+          this.state.set('value', this.getEl().value);
+        }
+        return this.state.get('value');
+      },
+      postRender: function () {
+        var self$$1 = this;
+        self$$1.getEl().value = self$$1.state.get('value');
+        self$$1._super();
+        self$$1.$el.on('change', function (e) {
           self$$1.state.set('value', e.target.value);
+          self$$1.fire('change', e);
         });
+      },
+      bindStates: function () {
+        var self$$1 = this;
+        self$$1.state.on('change:value', function (e) {
+          if (self$$1.getEl().value !== e.value) {
+            self$$1.getEl().value = e.value;
+          }
+        });
+        self$$1.state.on('change:disabled', function (e) {
+          self$$1.getEl().disabled = e.value;
+        });
+        return self$$1._super();
+      },
+      remove: function () {
+        this.$el.off();
+        this._super();
       }
-    },
-    repaint: function () {
-      var self$$1 = this;
-      var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;
-      style = self$$1.getEl().style;
-      rect = self$$1._layoutRect;
-      lastRepaintRect = self$$1._lastRepaintRect || {};
-      var doc = document;
-      if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
-        style.lineHeight = rect.h - borderH + 'px';
-      }
-      borderBox = self$$1.borderBox;
-      borderW = borderBox.left + borderBox.right + 8;
-      borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);
-      if (rect.x !== lastRepaintRect.x) {
-        style.left = rect.x + 'px';
-        lastRepaintRect.x = rect.x;
-      }
-      if (rect.y !== lastRepaintRect.y) {
-        style.top = rect.y + 'px';
-        lastRepaintRect.y = rect.y;
-      }
-      if (rect.w !== lastRepaintRect.w) {
-        style.width = rect.w - borderW + 'px';
-        lastRepaintRect.w = rect.w;
-      }
-      if (rect.h !== lastRepaintRect.h) {
-        style.height = rect.h - borderH + 'px';
-        lastRepaintRect.h = rect.h;
-      }
-      self$$1._lastRepaintRect = lastRepaintRect;
-      self$$1.fire('repaint', {}, false);
-      return self$$1;
-    },
-    renderHtml: function () {
-      var self$$1 = this;
-      var settings = self$$1.settings;
-      var attrs, elm;
-      attrs = {
-        id: self$$1._id,
-        hidefocus: '1'
+    });
+
+    var getApi = function () {
+      return {
+        Selector: Selector,
+        Collection: Collection$2,
+        ReflowQueue: ReflowQueue,
+        Control: Control$1,
+        Factory: global$4,
+        KeyboardNavigation: KeyboardNavigation,
+        Container: Container,
+        DragHelper: DragHelper,
+        Scrollable: Scrollable,
+        Panel: Panel,
+        Movable: Movable,
+        Resizable: Resizable,
+        FloatPanel: FloatPanel,
+        Window: Window$$1,
+        MessageBox: MessageBox,
+        Tooltip: Tooltip,
+        Widget: Widget,
+        Progress: Progress,
+        Notification: Notification,
+        Layout: Layout,
+        AbsoluteLayout: AbsoluteLayout,
+        Button: Button,
+        ButtonGroup: ButtonGroup,
+        Checkbox: Checkbox,
+        ComboBox: ComboBox,
+        ColorBox: ColorBox,
+        PanelButton: PanelButton,
+        ColorButton: ColorButton,
+        ColorPicker: ColorPicker,
+        Path: Path,
+        ElementPath: ElementPath,
+        FormItem: FormItem,
+        Form: Form,
+        FieldSet: FieldSet,
+        FilePicker: FilePicker,
+        FitLayout: FitLayout,
+        FlexLayout: FlexLayout,
+        FlowLayout: FlowLayout,
+        FormatControls: FormatControls,
+        GridLayout: GridLayout,
+        Iframe: Iframe$1,
+        InfoBox: InfoBox,
+        Label: Label,
+        Toolbar: Toolbar$1,
+        MenuBar: MenuBar,
+        MenuButton: MenuButton,
+        MenuItem: MenuItem,
+        Throbber: Throbber,
+        Menu: Menu,
+        ListBox: ListBox,
+        Radio: Radio,
+        ResizeHandle: ResizeHandle,
+        SelectBox: SelectBox,
+        Slider: Slider,
+        Spacer: Spacer,
+        SplitButton: SplitButton,
+        StackLayout: StackLayout,
+        TabPanel: TabPanel,
+        TextBox: TextBox,
+        DropZone: DropZone,
+        BrowseButton: BrowseButton
       };
-      global$2.each([
-        'rows',
-        'spellcheck',
-        'maxLength',
-        'size',
-        'readonly',
-        'min',
-        'max',
-        'step',
-        'list',
-        'pattern',
-        'placeholder',
-        'required',
-        'multiple'
-      ], function (name$$1) {
-        attrs[name$$1] = settings[name$$1];
-      });
-      if (self$$1.disabled()) {
-        attrs.disabled = 'disabled';
+    };
+    var appendTo = function (target) {
+      if (target.ui) {
+        global$2.each(getApi(), function (ref, key) {
+          target.ui[key] = ref;
+        });
+      } else {
+        target.ui = getApi();
       }
-      if (settings.subtype) {
-        attrs.type = settings.subtype;
-      }
-      elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);
-      elm.value = self$$1.state.get('value');
-      elm.className = self$$1.classes.toString();
-      return elm.outerHTML;
-    },
-    value: function (value) {
-      if (arguments.length) {
-        this.state.set('value', value);
-        return this;
-      }
-      if (this.state.get('rendered')) {
-        this.state.set('value', this.getEl().value);
-      }
-      return this.state.get('value');
-    },
-    postRender: function () {
-      var self$$1 = this;
-      self$$1.getEl().value = self$$1.state.get('value');
-      self$$1._super();
-      self$$1.$el.on('change', function (e) {
-        self$$1.state.set('value', e.target.value);
-        self$$1.fire('change', e);
-      });
-    },
-    bindStates: function () {
-      var self$$1 = this;
-      self$$1.state.on('change:value', function (e) {
-        if (self$$1.getEl().value !== e.value) {
-          self$$1.getEl().value = e.value;
-        }
-      });
-      self$$1.state.on('change:disabled', function (e) {
-        self$$1.getEl().disabled = e.value;
-      });
-      return self$$1._super();
-    },
-    remove: function () {
-      this.$el.off();
-      this._super();
-    }
-  });
-
-  var getApi = function () {
-    return {
-      Selector: Selector,
-      Collection: Collection$2,
-      ReflowQueue: $_p42hyuxjjgwefrk,
-      Control: Control$1,
-      Factory: global$4,
-      KeyboardNavigation: KeyboardNavigation,
-      Container: Container,
-      DragHelper: DragHelper,
-      Scrollable: $_3rxloyuzjjgwefrs,
-      Panel: Panel,
-      Movable: $_3fnh5iukjjgwefpt,
-      Resizable: $_3m7770v1jjgwefrz,
-      FloatPanel: FloatPanel,
-      Window: Window$$1,
-      MessageBox: MessageBox,
-      Tooltip: Tooltip,
-      Widget: Widget,
-      Progress: Progress,
-      Notification: Notification,
-      Layout: Layout,
-      AbsoluteLayout: AbsoluteLayout,
-      Button: Button,
-      ButtonGroup: ButtonGroup,
-      Checkbox: Checkbox,
-      ComboBox: ComboBox,
-      ColorBox: ColorBox,
-      PanelButton: PanelButton,
-      ColorButton: ColorButton,
-      ColorPicker: ColorPicker,
-      Path: Path,
-      ElementPath: ElementPath,
-      FormItem: FormItem,
-      Form: Form,
-      FieldSet: FieldSet,
-      FilePicker: FilePicker,
-      FitLayout: FitLayout,
-      FlexLayout: FlexLayout,
-      FlowLayout: FlowLayout,
-      FormatControls: $_5heykgwxjjgwefyx,
-      GridLayout: GridLayout,
-      Iframe: Iframe$1,
-      InfoBox: InfoBox,
-      Label: Label,
-      Toolbar: Toolbar$1,
-      MenuBar: MenuBar,
-      MenuButton: MenuButton,
-      MenuItem: MenuItem,
-      Throbber: Throbber,
-      Menu: Menu,
-      ListBox: ListBox,
-      Radio: Radio,
-      ResizeHandle: ResizeHandle,
-      SelectBox: SelectBox,
-      Slider: Slider,
-      Spacer: Spacer,
-      SplitButton: SplitButton,
-      StackLayout: StackLayout,
-      TabPanel: TabPanel,
-      TextBox: TextBox,
-      DropZone: DropZone,
-      BrowseButton: BrowseButton
     };
-  };
-  var appendTo = function (target) {
-    if (target.ui) {
+    var registerToFactory = function () {
       global$2.each(getApi(), function (ref, key) {
-        target.ui[key] = ref;
+        global$4.add(key, ref);
       });
-    } else {
-      target.ui = getApi();
+    };
+    var Api = {
+      appendTo: appendTo,
+      registerToFactory: registerToFactory
+    };
+
+    Api.registerToFactory();
+    Api.appendTo(window.tinymce ? window.tinymce : {});
+    global.add('modern', function (editor) {
+      FormatControls.setup(editor);
+      return ThemeApi.get(editor);
+    });
+    function Theme () {
     }
-  };
-  var registerToFactory = function () {
-    global$2.each(getApi(), function (ref, key) {
-      global$4.add(key, ref);
-    });
-  };
-  var Api = {
-    appendTo: appendTo,
-    registerToFactory: registerToFactory
-  };
 
-  Api.registerToFactory();
-  Api.appendTo(window.tinymce ? window.tinymce : {});
-  global.add('modern', function (editor) {
-    $_5heykgwxjjgwefyx.setup(editor);
-    return $_buaxbttqjjgwefn0.get(editor);
-  });
-  function Theme () {
-  }
+    return Theme;
 
-  return Theme;
-
 }());
 })();
Index: src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js	(revision 44695)
+++ src/js/_enqueues/vendor/tinymce/themes/modern/theme.min.js	(working copy)
@@ -1 +1 @@
-!function(){"use strict";var e,t,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.EditorManager"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return!1!==c(e)},c=function(e){return e.getParam("menubar")},f=function(e){return e.getParam("toolbar_items_size")},m=function(e){return e.getParam("menu")},g=function(e){return!1===e.settings.skin},p=function(e){var t=e.getParam("resize","vertical");return!1===t?"none":"both"===t?"both":"vertical"},v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),b=tinymce.util.Tools.resolve("tinymce.ui.Factory"),y=tinymce.util.Tools.resolve("tinymce.util.I18n"),s=function(e){return e.fire("SkinLoaded")},x=function(e){return e.fire("ResizeEditor")},_=function(e){return e.fire("BeforeRenderUI")},a=function(t,n){return function(){var e=t.find(n)[0];e&&e.focus(!0)}},C=function(e,t){e.shortcuts.add("Alt+F9","",a(t,"menubar")),e.shortcuts.add("Alt+F10,F10","",a(t,"toolbar")),e.shortcuts.add("Alt+F11","",a(t,"elementpath")),t.on("cancel",function(){e.focus()})},R=tinymce.util.Tools.resolve("tinymce.geom.Rect"),u=tinymce.util.Tools.resolve("tinymce.util.Delay"),E=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},k=function(e){return function(){return e}},l=k(!1),T=k(!0),H=l,S=T,M=function(){return N},N=(i={fold:function(e,t){return e()},is:H,isSome:H,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.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:n,orThunk:t,map:M,ap:M,each:function(){},bind:M,flatten:M,exists:H,forall:S,filter:M,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:k("none()")},Object.freeze&&Object.freeze(i),i),P=function(n){var e=function(){return n},t=function(){return r},i=function(e){return e(n)},r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:S,isNone:H,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return P(e(n))},ap:function(e){return e.fold(M,function(e){return P(e(n))})},each:function(e){e(n)},bind:i,flatten:e,exists:i,forall:i,filter:function(e){return e(n)?r:N},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(H,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},D={some:P,none:M,from:function(e){return null===e||e===undefined?N:P(e)}},W=function(e){return e?e.getRoot().uiContainer:null},O={getUiContainerDelta:function(e){var t=W(e);if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var n=v.DOM.getPos(t),i=t.scrollLeft-n.x,r=t.scrollTop-n.y;return D.some({x:i,y:r})}return D.none()},setUiContainer:function(e,t){var n=v.DOM.select(e.settings.ui_container)[0];t.getRoot().uiContainer=n},getUiContainer:W,inheritUiContainer:function(e,t){return t.uiContainer=W(e)}},A=function(i,e,r){var o,s=[];if(e)return w.each(e.split(/[ ,]/),function(t){var e,n=function(){var e=i.selection;t.settings.stateSelector&&e.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&e.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})};"|"===t?o=null:(o||(o={type:"buttongroup",items:[]},s.push(o)),i.buttons[t]&&(e=t,"function"==typeof(t=i.buttons[e])&&(t=t()),t.type=t.type||"button",t.size=r,t=b.create(t),o.items.push(t),i.initialized?n():i.on("init",n)))}),{type:"toolbar",layout:"flow",items:s}},B=A,L=function(n,i){var e,t,r=[];if(w.each(!1===(t=(e=n).getParam("toolbar"))?[]:w.isArray(t)?w.grep(t,function(e){return 0<e.length}):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 0<n.length?n:o}(e.settings,"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"),function(e){var t;(t=e)&&r.push(A(n,t,i))}),r.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:r}},I=v.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}},F=function(e,t){e.moveTo(t.left,t.top)},U=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},V=function(x){var i,o=function(){return x.contextToolbars||[]},n=function(e,t){var n,i,r,o,s,a,l,u=x.getParam("inline_toolbar_position_handler");if(!x.removed){if(!e||!e.toolbar.panel)return c=x,void w.each(c.contextToolbars,function(e){e.panel&&e.panel.hide()});var c,d,f,h,m;l=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],s=e.toolbar.panel,t&&s.show(),d=e.element,f=I.getPos(x.getContentAreaContainer()),h=x.dom.getRect(d),"BODY"===(m=x.dom.getRoot()).nodeName&&(h.x-=m.ownerDocument.documentElement.scrollLeft||m.scrollLeft,h.y-=m.ownerDocument.documentElement.scrollTop||m.scrollTop),h.x+=f.x,h.y+=f.y,r=h,i=I.getRect(s.getEl()),o=I.getRect(x.getContentAreaContainer()||x.getBody());var g,p,v,b=O.getUiContainerDelta(s).getOr({x:0,y:0});if(r.x+=b.x,r.y+=b.y,i.x+=b.x,i.y+=b.y,o.x+=b.x,o.y+=b.y,"inline"!==I.getStyle(e.element,"display",!0)){var y=e.element.getBoundingClientRect();r.w=y.width,r.h=y.height}x.inline||(o.w=x.getDoc().documentElement.offsetWidth),x.selection.controlSelection.isResizable(e.element)&&r.w<25&&(r=R.inflate(r,0,8)),n=R.findBestRelativePosition(i,r,o,l),r=R.clamp(r,o),n?(a=R.relativePosition(i,r,n),F(s,U(u,a.x,a.y,r,o,i))):(o.h+=i.h,(r=R.intersect(o,r))?(n=R.findBestRelativePosition(i,r,o,["bc-tc","bl-tl","br-tr"]))?(a=R.relativePosition(i,r,n),F(s,U(u,a.x,a.y,r,o,i))):F(s,U(u,r.x,r.y,r,o,i)):s.hide()),g=s,v=function(e,t){return e===t},p=(p=n)?p.substr(0,2):"",w.each({t:"down",b:"up"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(0,1)))}),w.each({l:"left",r:"right"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(1,1)))})}},r=function(e){return function(){u.requestAnimationFrame(function(){x.selection&&n(a(x.selection.getNode()),e)})}},t=function(e){var t;if(e.toolbar.panel)return e.toolbar.panel.show(),void n(e);t=b.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:B(x,e.toolbar.items),oncancel:function(){x.focus()}}),O.setUiContainer(x,t),function(e){if(!i){var t=r(!0),n=O.getUiContainer(e);i=x.selection.getScrollContainer()||x.getWin(),I.bind(i,"scroll",t),I.bind(n,"scroll",t),x.on("remove",function(){I.unbind(i,"scroll",t),I.unbind(n,"scroll",t)})}}(t),(e.toolbar.panel=t).renderTo().reflow(),n(e)},s=function(){w.each(o(),function(e){e.panel&&e.panel.hide()})},a=function(e){var t,n,i,r=o();for(t=(i=x.$(e).parents().add(e)).length-1;0<=t;t--)for(n=r.length-1;0<=n;n--)if(r[n].predicate(i[t]))return{toolbar:r[n],element:i[t]};return null};x.on("click keyup setContent ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&u.setEditorTimeout(x,function(){var e;(e=a(x.selection.getNode()))?(s(),t(e)):s()})}),x.on("blur hide contextmenu",s),x.on("ObjectResizeStart",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),x.on("ResizeEditor ResizeWindow",r(!0)),x.on("nodeChange",r(!1)),x.on("remove",function(){w.each(o(),function(e){e.panel&&e.panel.remove()}),x.contextToolbars={}}),x.shortcuts.add("ctrl+shift+e > ctrl+shift+p","",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})},Y=function(t){return function(e){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}(e)===t}},$=Y("function"),X=Y("number"),q=(r=Array.prototype.indexOf)===undefined?function(e,t){return ee(e,t)}:function(e,t){return r.call(e,t)},j=function(e,t){return Q(e,t).isSome()},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},G=function(e,t){for(var n=0,i=e.length;n<i;n++)t(e[n],n,e)},K=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},Z=function(e,t){for(var n=0,i=e.length;n<i;n++){var r=e[n];if(t(r,n,e))return D.some(r)}return D.none()},Q=function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n,e))return D.some(n);return D.none()},ee=function(e,t){for(var n=0,i=e.length;n<i;++n)if(e[n]===t)return n;return-1},te=Array.prototype.push,ne=(Array.prototype.slice,$(Array.from)&&Array.from,{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 code"},table:{title:"Table"},help:{title:"Help"}}),ie=function(e,t){return"|"===e?{name:"|",item:{text:"|"}}:t?{name:e,item:t}:null},re=function(e){return e&&"|"===e.item.text},oe=function(n,e,t,i){var r,o,s,a,l,u,c;return e?(o=e[i],a=!0):o=ne[i],o&&(r={text:o.title},s=[],w.each((o.items||"").split(/[ ,]/),function(e){var t=ie(e,n[e]);t&&s.push(t)}),a||w.each(n,function(e,t){var n;e.context!==i||(n=t,Q(s,function(e){return e.name===n}).isSome())||("before"===e.separator&&s.push({name:"|",item:{text:"|"}}),e.prependToContext?s.unshift(ie(t,e)):s.push(ie(t,e)),"after"===e.separator&&s.push({name:"|",item:{text:"|"}}))}),r.menu=J((l=t,u=K(s,function(e){return!1===l.hasOwnProperty(e.name)}),c=K(u,function(e,t,n){return!re(e)||!re(n[t-1])}),K(c,function(e,t,n){return!re(e)||0<t&&t<n.length-1})),function(e){return e.item}),!r.menu.length)?null:r},se=function(e){for(var t,n=[],i=function(e){var t,n=[],i=m(e);if(i)for(t in i)n.push(t);else for(t in ne)n.push(t);return n}(e),r=w.makeMap((t=e,t.getParam("removed_menuitems","")).split(/[ ,]/)),o=c(e),s="string"==typeof o?o.split(/[ ,]/):i,a=0;a<s.length;a++){var l=s[a],u=oe(e.menuItems,m(e),r,l);u&&n.push(u)}return n},ae=v.DOM,le=function(e){return{width:e.clientWidth,height:e.clientHeight}},ue=function(e,t,n){var i,r,o,s;i=e.getContainer(),r=e.getContentAreaContainer().firstChild,o=le(i),s=le(r),null!==t&&(t=Math.max(e.getParam("min_width",100,"number"),t),t=Math.min(e.getParam("max_width",65535,"number"),t),ae.setStyle(i,"width",t+(o.width-s.width)),ae.setStyle(r,"width",t)),n=Math.max(e.getParam("min_height",100,"number"),n),n=Math.min(e.getParam("max_height",65535,"number"),n),ae.setStyle(r,"height",n),x(e)},ce=ue,de=function(e,t,n){var i=e.getContentAreaContainer();ue(e,i.clientWidth+t,i.clientHeight+n)},fe=tinymce.util.Tools.resolve("tinymce.Env"),he=function(e,t,n){var i,r=e.settings[n];r&&r((i=t.getEl("body"),{element:function(){return i}}))},me=function(c,d,f){return function(e){var t,n,i,r,o,s=e.control,a=s.parents().filter("panel")[0],l=a.find("#"+d)[0],u=(t=f,n=d,w.grep(t,function(e){return e.name===n})[0]);i=d,r=a,o=f,w.each(o,function(e){var t=r.items().filter("#"+e.name)[0];t&&t.visible()&&e.name!==i&&(he(e,t,"onhide"),t.visible(!1))}),s.parent().items().each(function(e){e.active(!1)}),l&&l.visible()?(he(u,l,"onhide"),l.hide(),s.active(!1)):(l?l.show():(l=b.create({type:"container",name:d,layout:"stack",classes:"sidebar-panel",html:""}),a.prepend(l),he(u,l,"onrender")),he(u,l,"onshow"),s.active(!0)),x(c)}},ge=function(e){return!(fe.ie&&!(11<=fe.ie)||!e.sidebars)&&0<e.sidebars.length},pe=function(n){return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:w.map(n.sidebars,function(e){var t=e.settings;return{type:"button",icon:t.icon,image:t.image,tooltip:t.tooltip,onclick:me(n,e.name,n.sidebars)}})}]}},ve=function(e){var t=function(){e._skinLoaded=!0,s(e)};return function(){e.initialized?t():e.on("init",t)}},be=v.DOM,ye=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},xe=function(t,e,n){var i,r,o,s,a;if(!1===g(t)&&n.skinUiCss?be.styleSheetLoader.load(n.skinUiCss,ve(t)):ve(t)(),i=e.panel=b.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[{type:"container",classes:"top-part",items:[!1===d(t)?null:{type:"menubar",border:"0 0 1 0",items:se(t)},L(t,f(t))]},ge(t)?(s=t,{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[ye("0"),pe(s)]}):ye("1 0 0 0")]}),O.setUiContainer(t,i),"none"!==p(t)&&(r={type:"resizehandle",direction:p(t),onResizeStart:function(){var e=t.getContentAreaContainer().firstChild;o={width:e.clientWidth,height:e.clientHeight}},onResize:function(e){"both"===p(t)?ce(t,o.width+e.deltaX,o.height+e.deltaY):ce(t,null,o.height+e.deltaY)}}),t.getParam("statusbar",!0,"boolean")){var l=y.translate(["Powered by {0}",'<a href="https://www.tinymce.com/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">tinymce</a>']),u=t.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+l}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:t},r,u]})}return _(t),t.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly"),n.width&&be.setStyle(i.getEl(),"width",n.width),t.on("remove",function(){i.remove(),i=null}),C(t,i),V(t),{iframeContainer:i.find("#iframe")[0].getEl(),editorContainer:i.getEl()}},we=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),_e=0,Ce={id:function(){return"mceu_"+_e++},create:function(e,t,n){var i=document.createElement(e);return v.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:w.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return v.DOM.createFragment(e)},getWindowSize:function(){return v.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 v.DOM.getPos(e,t||Ce.getContainer())},getContainer:function(){return fe.container?fe.container:document.body},getViewPort:function(e){return v.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return v.DOM.addClass(e,t)},removeClass:function(e,t){return v.DOM.removeClass(e,t)},hasClass:function(e,t){return v.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return v.DOM.toggleClass(e,t,n)},css:function(e,t,n){return v.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return v.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return v.DOM.bind(e,t,n,i)},off:function(e,t,n){return v.DOM.unbind(e,t,n)},fire:function(e,t,n){return v.DOM.fire(e,t,n)},innerHtml:function(e,t){v.DOM.setHTML(e,t)}},Re=function(e){return"static"===Ce.getRuntimeStyle(e,"position")},Ee=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=Te(),o=(r=Ce.getPos(t,O.getUiContainer(e))).x,s=r.y,Ee(e)&&Re(document.body)&&(o-=d.x,s-=d.y),i=e.getEl(),a=(f=Ce.getSize(i)).width,l=f.height,u=(f=Ce.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 Te=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=O.getUiContainer(e);return n&&!Ee(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:Te()},Se={testMoveRel:function(e,t){for(var n=He(this),i=0;i<t.length;i++){var r=ke(this,e,t[i]);if(Ee(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&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:t<e+n&&(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=O.getUiContainer(n);return s&&Re(s)&&!Ee(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"),Ne=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})},De=function(i,e){function t(e){var t=parseFloat(function(e){var t=i.ownerDocument.defaultView;if(t){var n=t.getComputedStyle(i,null);return n?(e=e.replace(/[A-Z]/g,function(e){return"-"+e}),n.getPropertyValue(e)):null}return i.currentStyle[e]}(e));return isNaN(t)?0:t}return{top:t(e+"TopWidth"),right:t(e+"RightWidth"),bottom:t(e+"BottomWidth"),left:t(e+"LeftWidth")}};function We(){}function Oe(e){this.cls=[],this.cls._map={},this.onchange=e||We,this.prefix=""}w.extend(Oe.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)}}),Oe.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)0<t&&(e+=" "),e+=this.prefix+this.cls[t];return e};var Ae,Be,Le,Ie=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,ze=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Fe=/^\s*|\s*$/g,Ue=Me.extend({init:function(e){var o=this.match;function s(e,t,n){var i;function r(e){e&&t.push(e)}return r(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((i=Ie.exec(e.replace(Fe,"")))[1])),r(function(t){if(t)return function(e){return e._name===t}}(i[2])),r(function(n){if(n)return n=n.split("."),function(e){for(var t=n.length;t--;)if(!e.classes.contains(n[t]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(e){var t=e[n]?e[n]():"";return i?"="===i?t===r:"*="===i?0<=t.indexOf(r):"~="===i?0<=(" "+t+" ").indexOf(" "+r+" "):"!="===i?t!==r:"^="===i?0===t.indexOf(r):"$="===i&&t.substr(t.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var t;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(t=a(i[1],[]),function(e){return!o(e,t)}):(i=i[2],function(e,t,n){return"first"===i?0===t:"last"===i?t===n-1:"even"===i?t%2==0:"odd"===i?t%2==1:!!e[i]&&e[i]()})}(i[7])),t.pseudo=!!i[7],t.direct=n,t}function a(e,t){var n,i,r,o=[];do{if(ze.exec(""),(i=ze.exec(e))&&(e=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,t),e=[],r=0;r<o.length;r++)">"!==o[r]&&e.push(s(o[r],[],">"===o[r-1]));return t.push(e),t}this._selectors=a(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;0<=r;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,u=[],i=this._selectors;function c(e,t,n){var i,r,o,s,a,l=t[n];for(i=0,r=e.length;i<r;i++){for(a=e[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===t.length-1?u.push(a):a.items&&c(a.items(),t,n+1);else if(l.direct)return;a.items&&c(a.items(),t,n)}}if(e.items){for(t=0,n=i.length;t<n;t++)c(e.items(),i[t],0);1<n&&(u=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}(u))}return Ae||(Ae=Ue.Collection),new Ae(u)}}),Ve=Array.prototype.push,Ye=Array.prototype.slice;Le={length:0,init:function(e){e&&this.add(e)},add:function(e){return w.isArray(e)?Ve.apply(this,e):e instanceof Be?this.add(e.toArray()):Ve.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(t){var e,n,i,r,o=[];for("string"==typeof t?(t=new Ue(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 Be(o)},slice:function(){return new Be(Ye.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(e){return w.each(this,e),this},toArray:function(){return w.toArray(this)},indexOf:function(e){for(var t=this.length;t--&&this[t]!==e;);return t},reverse:function(){return new Be(w.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(t,n){var e;return n!==undefined?(this.each(function(e){e[t]&&e[t](n)}),this):(e=this[0])&&e[t]?e[t]():void 0},exec:function(t){var n=w.toArray(arguments).slice(1);return this.each(function(e){e[t]&&e[t].apply(e,n)}),this},remove:function(){for(var e=this.length;e--;)this[e].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)})}},w.each("fire on off show hide append prepend before after reflow".split(" "),function(n){Le[n]=function(){var t=w.toArray(arguments);return this.each(function(e){n in e&&e[n].apply(e,t)}),this}}),w.each("text name disabled active selected checked visible parent value data".split(" "),function(t){Le[t]=function(e){return this.prop(t,e)}}),Be=Me.extend(Le);var $e=Ue.Collection=Be,Xe=function(e){this.create=e.create};Xe.create=function(r,o){return new Xe({create:function(t,n){var i,e=function(e){t.set(n,e.value)};return t.on("change:"+n,function(e){r.set(o,e.value)}),r.on("change:"+o,e),(i=t._bindings)||(i=t._bindings=[],t.on("destroy",function(){for(var e=i.length;e--;)i[e]()})),i.push(function(){r.off("change:"+o,e)}),r.get(o)}})};var qe=tinymce.util.Tools.resolve("tinymce.util.Observable");function je(e){return 0<e.nodeType}var Je,Ge,Ke=Me.extend({Mixins:[qe],init:function(e){var t,n;for(t in e=e||{})(n=e[t])instanceof Xe&&(e[t]=n.create(this,t));this.data=e},set:function(t,n){var i,r,o=this.data[t];if(n instanceof Xe&&(n=n.create(this,t)),"object"==typeof t){for(i in t)this.set(i,t[i]);return this}return function e(t,n){var i,r;if(t===n)return!0;if(null===t||null===n)return t===n;if("object"!=typeof t||"object"!=typeof n)return t===n;if(w.isArray(n)){if(t.length!==n.length)return!1;for(i=t.length;i--;)if(!e(t[i],n[i]))return!1}if(je(t)||je(n))return t===n;for(i in r={},n){if(!e(t[i],n[i]))return!1;r[i]=!0}for(i in t)if(!r[i]&&!e(t[i],n[i]))return!1;return!0}(o,n)||(this.data[t]=n,r={target:this,name:t,value:n,oldValue:o},this.fire("change:"+t,r),this.fire("change",r)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(e){return Xe.create(this,e)},destroy:function(){this.fire("destroy")}}),Ze={},Qe={add:function(e){var t=e.parent();if(t){if(!t._layout||t._layout.isNative())return;Ze[t._id]||(Ze[t._id]=t),Je||(Je=!0,u.requestAnimationFrame(function(){var e,t;for(e in Je=!1,Ze)(t=Ze[e]).state.get("rendered")&&t.reflow();Ze={}},document.body))}},remove:function(e){Ze[e._id]&&delete Ze[e._id]}},et="onmousewheel"in document,tt=!1,nt=0,it={Statics:{classPrefix:"mce-"},isRtl:function(){return Ge.rtl},classPrefix:"mce-",init:function(t){var e,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=t=w.extend({},i.Defaults,t),i._id=t.id||"mceu_"+nt++,i._aria={role:t.role},i._elmCache={},i.$=we,i.state=new Ke({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Ke(t.data),i.classes=new Oe(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)),w.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=Pe(t.border),i.paddingBox=Pe(t.padding),i.marginBox=Pe(t.margin),t.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var e=O.getUiContainer(this);return e||Ce.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||De(f,"border"),c.paddingBox=c.paddingBox||De(f,"padding"),c.marginBox=c.marginBox||De(f,"margin"),u=Ce.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=Ge.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=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(0<=u?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=(0<=u?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=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,Ce.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 rt(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 rt(this).off(e,t),this},fire:function(e,t,n){if((t=t||{}).control||(t.control=this),t=rt(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 rt(this).has(e)},parents:function(e){var t,n=new $e;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new $e(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]=we("#"+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 Ge.translate?Ge.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 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&&we(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 we(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return we(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=we(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}ot(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)._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"),Qe.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),t=(e=t).parent()}e||(e=this);for(var i=n.length;i--;)n[i].rootControl=e;return e},reflow:function(){Qe.remove(this);var e=this.parent();return e&&e._layout&&!e._layout.isNative()&&e.reflow(),this}};function rt(n){return n._eventDispatcher||(n._eventDispatcher=new Ne({scope:n,toggleEvent:function(e,t){t&&Ne.isNative(e)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[e]=!0,n.state.get("rendered")&&ot(n))}})),n._eventDispatcher}function ot(a){var e,t,n,l,i,r;function o(e){var t=a.getParentCtrl(e.target);t&&t.fire(e.type,e)}function s(){var e=l._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),l._lastHoverCtrl=null)}function u(e){var t,n,i,r=a.getParentCtrl(e.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(t=i.length-1;s<=t;t--)(o=i[t]).fire("mouseleave",{target:o.getEl()})}for(t=s;t<n.length;t++)(r=n[t]).fire("mouseenter",{target:r.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=a.fire("wheel",e)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),e=0,t=n.length;!l&&e<t;e++)l=n[e]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,t=e,e=0;e<t;e++)n[e]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||tt?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(we(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(we(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):et?we(a.getEl()).on("mousewheel",c):we(a.getEl()).on("DOMMouseScroll",c)}}}w.each("text title visible disabled active value".split(" "),function(t){it[t]=function(e){return 0===arguments.length?this.state.get(t):(void 0!==e&&this.state.set(t,e),this)}});var st=Ge=Me.extend(it),at=function(e){return!!e.getAttribute("data-mce-tabstop")};function lt(e){var o,r,n=e.root;function i(e){return e&&1===e.nodeType}try{o=document.activeElement}catch(t){o=document.body}function s(e){return i(e=e||o)?e.getAttribute("role"):null}function a(e){for(var t,n=e||o;n=n.parentNode;)if(t=s(n))return t}function l(e){var t=o;if(i(t))return t.getAttribute("aria-"+e)}function u(e){var t=e.tagName.toUpperCase();return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}function c(t){var r=[];return function e(t){if(1===t.nodeType&&"none"!==t.style.display&&!t.disabled){var n;(u(n=t)&&!n.hidden||at(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(t);for(var i=0;i<t.childNodes.length;i++)e(t.childNodes[i])}}(t||n.getEl()),r}function d(e){var t,n;(n=(e=e||r).parents().toArray()).unshift(e);for(var i=0;i<n.length&&!(t=n[i]).settings.ariaRoot;i++);return t}function f(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function h(e,t){var n=-1,i=d();t=t||c(i.getEl());for(var r=0;r<t.length;r++)t[r]===o&&(n=r);n+=e,i.lastAriaIndex=f(n,t)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var e=s(),t=a();"tablist"===t?h(1,c(o.parentNode)):"menuitem"===e&&"menu"===t&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var e=s(),t=a();"menuitem"===e&&"menubar"===t?y():"button"===e&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(e){e=e||{},r.fire("click",{target:o,aria:e})}return r=n.getParentCtrl(o),n.on("keydown",function(e){function t(e,t){u(o)||at(o)||"slider"!==s(o)&&!1!==t(e)&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,m);break;case 39:t(e,g);break;case 38:t(e,p);break;case 40:t(e,v);break;case 27:b();break;case 14:case 13:case 32:t(e,y);break;case 9:!function(e){if("tablist"===a()){var t=c(r.getEl("body"))[0];t&&t.focus()}else h(e.shiftKey?-1:1)}(e),e.preventDefault()}}),n.on("focusin",function(e){o=e.target,r=e.control}),{focusFirst:function(e){var t=d(e),n=c(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?f(t.lastAriaIndex,n):f(0,n)}}}var ut={},ct=st.extend({init:function(e){var t=this;t._super(e),(e=t.settings).fixed&&t.state.set("fixed",!0),t._items=new $e,t.isRtl()&&t.classes.add("rtl"),t.bodyClasses=new Oe(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=b.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=ut[e]=ut[e]||new Ue(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}0<=r&&((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 w.isArray(e)||(e=[e]),w.each(e,function(e){e&&(e instanceof st||("string"==typeof e&&(e={type:e}),t=w.extend({},n.settings.defaults,e),e.type=t.type=t.type||e.type||n.settings.defaultType||(t.defaults?t.defaults.type:null),e=b.create(t)),i.push(e))}),i},renderNew:function(){var i=this;return i.items().each(function(e,t){var n;e.parent(i),e.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&t<=n.childNodes.length-1?we(n.childNodes[t]).before(e.renderHtml()):we(n).append(e.renderHtml()),e.postRender(),Qe.add(e))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},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),0<=t&&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 i={};return this.find("*").each(function(e){var t=e.name(),n=e.value();t&&void 0!==n&&(i[t]=n)}),i},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=lt({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(Qe.remove(this),this.visible()){for(st.repaintControls=[],st.repaintControls.map={},this.recalc(),e=st.repaintControls.length;e--;)st.repaintControls[e].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),st.repaintControls=[]}return this}});function dt(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 ft(e,h){var m,g,t,p,v,b,y,x=h.document||document;h=h||{};var w=x.getElementById(h.handle||e);t=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=(t=x,u=Math.max,n=t.documentElement,i=t.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});dt(e),e.preventDefault(),g=e.button,c=w,b=e.screenX,y=e.screenY,d=window.getComputedStyle?window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=we("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),we(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(e)},v=function(e){if(dt(e),e.button!==g)return p(e);e.deltaX=e.screenX-b,e.deltaY=e.screenY-y,e.preventDefault(),h.drag(e)},p=function(e){dt(e),we(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(e)},this.destroy=function(){we(w).off()},we(w).on("mousedown touchstart",t)}var ht,mt,gt,pt,vt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,e;function t(e,t,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+e)){if(f=t.toLowerCase(),h=n.toLowerCase(),we(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void we(a).css("display","none");we(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+e+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+t]+v,d[h]=u,we(a).css(d),(d={})[f]=s["scroll"+t]*c,d[h]=u*c,we(l).css(d)}}e=p.getEl("body"),m=e.scrollWidth>e.clientWidth,g=e.scrollHeight>e.clientHeight,t("h","Left","Width","contentW",m,"Height"),t("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function e(s,a,l,u,c){var d,e=p._id+"-scroll"+s,t=p.classPrefix;we(p.getEl()).append('<div id="'+e+'" class="'+t+"scrollbar "+t+"scrollbar-"+s+'"><div id="'+e+'t" class="'+t+'scrollbar-thumb"></div></div>'),p.draghelper=new ft(e+"t",{start:function(){d=p.getEl("body")["scroll"+a],we("#"+e).addClass(t+"active")},drag:function(e){var t,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,t=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+e["delta"+u]/t},stop:function(){we("#"+e).removeClass(t+"active")}})}p.classes.add("scroll"),e("v","Top","Height","Y","Width"),e("h","Left","Width","X","Height")}(),p.on("wheel",function(e){var t=p.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),we(p.getEl("body")).on("scroll",n)),n())}},bt=ct.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[vt],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>"}}),yt={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(e,t){if(e<=1||t<=1){var n=Ce.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)}},xt=[],wt=[];function _t(e,t){for(;e;){if(e===t)return!0;e=e.parent()}}function Ct(){ht||(ht=function(e){2!==e.button&&function(e){for(var t=xt.length;t--;){var n=xt[t],i=n.getParentCtrl(e.target);if(n.settings.autohide){if(i&&(_t(i,n)||n.parent()===i))continue;(e=n.fire("autohide",{target:e.target})).isDefaultPrevented()||n.hide()}}}(e)},we(document).on("click touchstart",ht))}function Rt(r){var e=Ce.getViewPort().y;function t(e,t){for(var n,i=0;i<xt.length;i++)if(xt[i]!==r)for(n=xt[i].parent();n&&(n=n.parent());)n===r&&xt[i].fixed(e).moveBy(0,t).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>e&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),t(!1,r._autoFixY-e)):(r._autoFixY=r.layoutRect().y,r._autoFixY<e&&(r.fixed(!0).layoutRect({y:0}).repaint(),t(!0,e-r._autoFixY))))}function Et(e,t){var n,i,r=kt.zIndex||65535;if(e)wt.push(t);else for(n=wt.length;n--;)wt[n]===t&&wt.splice(n,1);if(wt.length)for(n=0;n<wt.length;n++)wt[n].modal&&(r++,i=wt[n]),wt[n].getEl().style.zIndex=r,wt[n].zIndex=r,r++;var o=we("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];i?we(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),pt=!1),kt.currentZIndex=r}var kt=bt.extend({Mixins:[Se,yt],init:function(e){var i=this;i._super(e),(i._eventsRoot=i).classes.add("floatpanel"),e.autohide&&(Ct(),function(){if(!gt){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;gt=function(){document.all&&t===e.clientWidth&&n===e.clientHeight||(t=e.clientWidth,n=e.clientHeight,kt.hideAll())},we(window).on("resize",gt)}}(),xt.push(i)),e.autofix&&(mt||(mt=function(){var e;for(e=xt.length;e--;)Rt(xt[e])},we(window).on("scroll",mt)),i.on("move",function(){Rt(this)})),i.on("postrender show",function(e){if(e.control===i){var t,n=i.classPrefix;i.modal&&!pt&&((t=we("#"+n+"modal-block",i.getContainerElm()))[0]||(t=we('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),u.setTimeout(function(){t.addClass(n+"in"),we(i.getEl()).addClass(n+"in")}),pt=!0),Et(!0,i)}}),i.on("show",function(){i.parents().each(function(e){if(e.state.get("fixed"))return i.fixed(!0),!1})}),e.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",e.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!==e){if(t.state.get("rendered")){var n=Ce.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=xt.length;e--&&xt[e]!==this;);return-1===e&&xt.push(this),t},hide:function(){return Tt(this),Et(!1,this),this._super()},hideAll:function(){kt.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Et(!1,this)),this},remove:function(){Tt(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Tt(e){var t;for(t=xt.length;t--;)xt[t]===e&&xt.splice(t,1);for(t=wt.length;t--;)wt[t]===e&&wt.splice(t,1)}kt.hideAll=function(){for(var e=xt.length;e--;){var t=xt[e];t&&t.settings.autohide&&(t.hide(),xt.splice(e,1))}};var Ht=function(e,t){return!(!e||t.settings.ui_container)},St=function(s,e,t){var a,n,l=v.DOM,i=s.getParam("fixed_toolbar_container");i&&(n=l.select(i)[0]);var r=function(){if(a&&a.moveRel&&a.visible()&&!a._fixed){var e=s.selection.getScrollContainer(),t=s.getBody(),n=0,i=0;if(e){var r=l.getPos(t),o=l.getPos(e);n=Math.max(0,o.x-r.x),i=Math.max(0,o.y-r.y)}a.fixed(!1).moveRel(t,s.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,i)}},o=function(){a&&(a.show(),r(),l.addClass(s.getBody(),"mce-edit-focus"))},u=function(){a&&(a.hide(),kt.hideAll(),l.removeClass(s.getBody(),"mce-edit-focus"))},c=function(){a?a.visible()||o():(a=e.panel=b.create({type:n?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:Ht(n,s),fixed:Ht(n,s),border:1,items:[!1===d(s)?null:{type:"menubar",border:"0 0 1 0",items:se(s)},L(s,f(s))]}),O.setUiContainer(s,a),_(s),n?a.renderTo(n).reflow():a.renderTo().reflow(),C(s,a),o(),V(s),s.on("nodeChange",r),s.on("ResizeWindow",r),s.on("activate",o),s.on("deactivate",u),s.nodeChanged())};return s.settings.content_editable=!0,s.on("focus",function(){!1===g(s)&&t.skinUiCss?l.styleSheetLoader.load(t.skinUiCss,c,c):c()}),s.on("blur hide",u),s.on("remove",function(){a&&(a.remove(),a=null)}),!1===g(s)&&t.skinUiCss?l.styleSheetLoader.load(t.skinUiCss,ve(s)):ve(s)(),{}};function Mt(i,r){var o,s,a=this,l=st.classPrefix;a.show=function(e,t){function n(){o&&(we(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),t&&t())}return a.hide(),o=!0,e?s=u.setTimeout(n,e):n(),a},a.hide=function(){var e=i.lastChild;return u.clearTimeout(s),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,a}}var Nt=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):h.baseURL+"/skins/"+r}return i}(e);return i&&(n.skinUiCss=i+"/skin.min.css",e.contentCSS.push(i+"/content"+(e.inline?".inline":"")+".min.css")),Nt(e,t),e.getParam("inline",!1,"boolean")?St(e,t,n):xe(e,t,n)},Dt=st.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 t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._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}}),Wt=st.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==Wt.tooltips&&(r.on("mouseenter",function(e){var t=r.tooltip().moveTo(-65535);if(e.control===r){var n=t.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===n),t.classes.toggle("tooltip-nw","bc-tl"===n),t.classes.toggle("tooltip-ne","bc-tr"===n),t.moveRel(r.getEl(),n)}else t.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new Dt({type:"tooltip"}),O.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 t=this;function n(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function i(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(e){n(e.value)}),t.state.on("change:active",function(e){i(e.value)}),t.state.get("disabled")&&n(!0),t.state.get("active")&&i(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Ot=Wt.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 t=this;function n(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(e){n(e.value)}),n(t.state.get("value")),t._super()}}),At=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},Bt=st.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||0<e.timeout)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new Ot),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 u.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),At(e,e.state.get("text"))},100),e._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,At(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){At(t,t.state.get("text"))})),t._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 Lt(o){var s=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(e,t){var n,i=w.extend(e,{maxWidth:(n=s(o),Ce.getSize(n).width)}),r=new Bt(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),t()},i.timeout)),r.on("close",function(){t()}),r.renderTo(),r},close:function(e){e.close()},reposition:function(e){G(e,function(e){e.moveTo(0,0)}),function(n){if(0<n.length){var e=n.slice(0,1)[0],t=s(o);e.moveRel(t,"tc-tc"),G(n,function(e,t){0<t&&e.moveRel(n[t-1].getEl(),"bc-tc")})}}(e)},getArgs:function(e){return e.args}}}var It=[],zt="";function Ft(e){var t,n=we("meta[name=viewport]")[0];!1!==fe.overrideViewPort&&(n||((n=document.createElement("meta")).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(t=n.getAttribute("content"))&&void 0!==zt&&(zt=t),n.setAttribute("content",e?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":zt))}function Ut(e,t){(function(){for(var e=0;e<It.length;e++)if(It[e]._fullscreen)return!0;return!1})()&&!1===t&&we([document.documentElement,document.body]).removeClass(e+"fullscreen")}var Vt=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 n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),e.buttons&&(n.statusbar=new bt({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){var t=n.classPrefix+"close";(Ce.hasClass(e.target,t)||Ce.hasClass(e.target.parentNode,t))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(e){e.control===n&&kt.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e,t,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(Ce.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=Ce.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=Ce.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 n,t,i=this,r=document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(we(window).on("resize",function(){var e;if(i._fullscreen)if(n)i._timer||(i._timer=u.setTimeout(function(){var e=Ce.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),i._timer=0},50));else{e=(new Date).getTime();var t=Ce.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),50<(new Date).getTime()-e&&(n=!0)}}),t=i.layoutRect(),i._fullscreen=e){i._initial={x:t.x,y:t.y,w:t.w,h:t.h},i.borderBox=Pe("0"),i.getEl("head").style.display="none",t.deltaH-=t.headerH+2,we([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=Ce.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Pe(i.settings.border),i.getEl("head").style.display="",t.deltaH+=t.headerH,we([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,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new ft(n._id+"-dragh",{start:function(){t={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(e){n.moveTo(t.x+e.deltaX,t.y+e.deltaY)}}),n.on("submit",function(e){e.isDefaultPrevented()||n.close()}),It.push(n),Ft(!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(),Ut(t.classPrefix,!1),e=It.length;e--;)It[e]===t&&It.splice(e,1);Ft(0<It.length)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});!function(){if(!fe.desktop){var n={w:window.innerWidth,h:window.innerHeight};u.setInterval(function(){var e=window.innerWidth,t=window.innerHeight;n.w===e&&n.h===t||(n={w:e,h:t},we(window).trigger("resize"))},100)}we(window).on("resize",function(){var e,t,n=Ce.getWindowSize();for(e=0;e<It.length;e++)t=It[e].layoutRect(),It[e].moveTo(It[e].settings.x||Math.max(0,n.w/2-t.w/2),It[e].settings.y||Math.max(0,n.h/2-t.h/2))})}();var Yt=Vt.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,i=e.callback||function(){};function n(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),i(t)}}}switch(e.buttons){case Yt.OK_CANCEL:t=[n("Ok",!0,!0),n("Cancel",!1)];break;case Yt.YES_NO:case Yt.YES_NO_CANCEL:t=[n("Yes",1,!0),n("No",0)],e.buttons===Yt.YES_NO_CANCEL&&t.push(n("Cancel",-1));break;default:t=[n("Ok",!0,!0)]}return new Vt({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(){i(!1)}}).renderTo(document.body).reflow()},alert:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,Yt.msgBox(e)},confirm:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,e.buttons=Yt.OK_CANCEL,Yt.msgBox(e)}}}),$t=function(n){return{renderUI:function(e){return Pt(n,this,e)},resizeTo:function(e,t){return ce(n,e,t)},resizeBy:function(e,t){return de(n,e,t)},getNotificationManagerImpl:function(){return Lt(n)},getWindowManagerImpl:function(){return{open:function(n,e,t){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Vt(n)).on("close",function(){t(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(e){var t=e.name();t in n.data&&e.value(n.data[t])})}),i.features=n||{},i.params=e||{},i=i.renderTo(document.body).reflow()},alert:function(e,t,n){var i;return(i=Yt.alert(e,function(){t()})).on("close",function(){n(i)}),i},confirm:function(e,t,n){var i;return(i=Yt.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}}}}},Xt=Me.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=w.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}}),qt=Xt.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)}}),jt=Wt.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 o=this,n=o.$,i=o.classPrefix+"txt";function s(e){var t=n("span."+i,o.getEl());e?(t[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),t=n("span."+i,o.getEl())),t.html(o.encode(e))):t.remove(),o.classes.toggle("btn-has-text",!!e)}return o.state.on("change:text",function(e){s(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Jt=jt.extend({init:function(e){e=w.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,t=Ce.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),we(t).on("change",function(e){var t=e.target.files;n.value=function(){return t.length?n.settings.multiple?t:t[0]:null},e.preventDefault(),t.length&&n.fire("change",e)}),we(t).on("click",function(e){e.stopPropagation()}),we(n.getEl("button")).on("click",function(e){e.stopPropagation(),t.click()}),n.getEl().appendChild(t)},remove:function(){we(this.getEl("button")).off(),we(this.getEl("input")).off(),this._super()}}),Gt=ct.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=Wt.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 o=this;function t(e){o.classes.toggle("checked",e),o.aria("checked",e)}return o.state.on("change:text",function(e){o.getEl("al").firstChild.data=o.translate(e.value)}),o.state.on("change:checked change:value",function(e){o.fire("change"),t(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;if(void 0===t)return o.settings.icon;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r)}),o.state.get("checked")&&t(!0),o._super()}}),Zt=tinymce.util.Tools.resolve("tinymce.util.VK"),Qt=Wt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(e){var t=e.target,n=r.getEl();if(we.contains(n,t)||t===n)for(;t&&t!==n;)t.id&&-1!==t.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),e.aria&&r.menu.items()[0].focus())),t=t.parentNode}),r.on("keydown",function(e){var t;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),r.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),r.fire("submit",{data:t.toJSON()}))}),r.on("keyup",function(e){if("INPUT"===e.target.nodeName){var t=r.state.get("value"),n=e.target.value;n!==t&&(r.state.set("value",n),r.fire("autocomplete",e))}}),r.on("mouseover",function(e){var t=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==e.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=t.text(n).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===i),t.classes.toggle("tooltip-nw","bc-tl"===i),t.classes.toggle("tooltip-ne","bc-tr"===i),t.moveRel(e.target,i)}})},statusLevel:function(e){return 0<arguments.length&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return 0<arguments.length&&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=b.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(Ce.getRuntimeStyle(a,"padding-right"),10)-parseInt(Ce.getRuntimeStyle(a,"padding-left"),10)),e=r?o.w-Ce.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(t=n.layoutRect().h-2+"px"),we(a).css({width:e-s,lineHeight:t}),n._super(),n},postRender:function(){var t=this;return we(this.getEl("inp")).on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)}),t._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,i){var r=this;if(0!==e.length){r.menu?r.menu.items().remove():r.menu=b.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),w.each(e,function(e){var t,n;r.menu.add({text:e.title,url:e.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(t=e.value,n=e.title,function(){r.fire("selectitem",{title:n,value:t})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var t=r.layoutRect().w;r.menu.layoutRect({w:t,minW:0,maxW:t}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(e){r.getEl("inp").value!==e.value&&(r.getEl("inp").value=e.value)}),r.state.on("change:disabled",function(e){r.getEl("inp").disabled=e.value}),r.state.on("change:statusLevel",function(e){var t=r.getEl("status"),n=r.classPrefix,i=e.value;Ce.css(t,"display","none"===i?"none":""),Ce.toggleClass(t,n+"i-checkmark","ok"===i),Ce.toggleClass(t,n+"i-warning","warn"===i),Ce.toggleClass(t,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),Ce.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(e){r.menu&&r.menu.visible()&&(e.stopPropagation(),r.hideMenu())});var n=function(e,t){t&&0<t.items().length&&t.items().eq(e)[0].focus()};return r.on("keydown",function(e){var t=e.keyCode;"INPUT"===e.target.nodeName&&(t===Zt.DOWN?(e.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):t===Zt.UP&&(e.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){we(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 t=this;return t.state.on("change:value",function(e){t.state.get("rendered")&&t.repaintColor(e.value)}),t._super()}}),tn=jt.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 kt(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","tc-bc","tc-br","tc-bl"]));t.panel.classes.toggle("start","l"===i.substr(-1)),t.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);t.panel.classes.toggle("bottom",!r),t.panel.classes.toggle("top",r),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()}}),nn=v.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 t=this,n=t.settings.onclick;return t.on("click",function(e){e.aria&&"down"===e.aria.key||e.control!==t||nn.getParent(e.target,"."+t.classPrefix+"open")||(e.stopImmediatePropagation(),n.call(t,e))}),delete t.settings.onclick,t._super()}}),on=tinymce.util.Tools.resolve("tinymce.util.Color"),sn=Wt.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(e,t){var n,i,r=Ce.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 c(e,t){var n=(360-e.h)/360;Ce.css(r,{top:100*n+"%"}),t||Ce.css(s,{left:e.s+"%",top:100-e.v+"%"}),o.style.background=on({s:100,v:100,h:e.h}).toHex(),a.color().parse({s:e.s,v:e.v,h:e.h})}function e(e){var t;t=u(o,e),n.s=100*t.x,n.v=100*(1-t.y),c(n),a.fire("change")}function t(e){var t;t=u(i,e),(n=l.toHsv()).h=360*(1-t.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new ft(a._id+"-sv",{start:e,drag:e}),a._hdraghelper=new ft(a._id+"-h",{start:t,drag:t}),a._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,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return e='<div id="'+t+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var e,t,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",e=0,t=(i=s.split(",")).length-1;e<t;e++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/t+"%;"+n+i[e]+",endColorstr="+i[e+1]+");-ms-"+n+i[e]+",endColorstr="+i[e+1]+')"></div>';return r}()+'<div id="'+t+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+t+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+e+"</div>"}}),an=Wt.extend({init:function(e){e=w.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=Ce.create("div",e,"<span>"+this.translate(n.text)+"</span>"),n.height&&Ce.css(t,"height",n.height+"px"),n.width&&Ce.css(t,"width",n.width+"px"),t.className=this.classes,t.outerHTML},postRender:function(){var i=this,e=function(e){e.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(e){e.preventDefault()}),i.$el.on("dragenter",e),i.$el.on("dragleave",e),i.$el.on("drop",function(e){if(e.preventDefault(),!i.state.get("disabled")){var t=function(e){var t=i.settings.accept;if("string"!=typeof t)return e;var n=new RegExp("("+t.split(/\s*,\s*/).join("|")+")$","i");return w.grep(e,function(e){return n.test(e.name)})}(e.dataTransfer.files);i.value=function(){return t.length?i.settings.multiple?t:t[0]:null},t.length&&i.fire("change",e)}})},remove:function(){this.$el.off(),this._super()}}),ln=Wt.extend({init:function(e){var n=this;e.delimiter||(e.delimiter="\xbb"),n._super(e),n.classes.add("path"),n.canFocus=!0,n.on("click",function(e){var t;(t=e.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[t],index:t})}),n.row(n.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 t=this;return t.state.on("change:row",function(e){t.innerHtml(t._getDataPathHtml(e.value))}),t._super()},_getDataPathHtml:function(e){var t,n,i=e||[],r="",o=this.classPrefix;for(t=0,n=i.length;t<n;t++)r+=(0<t?'<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 o=this,s=o.settings.editor;function a(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!==s.settings.elementpath&&(o.on("select",function(e){s.focus(),s.selection.select(this.row()[e.index].element),s.nodeChanged()}),s.on("nodeChange",function(e){for(var t=[],n=e.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||t.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(t)})),o._super()}}),cn=ct.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=ct.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 i=this,e=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),e.each(function(e){var t,n=e.settings.label;n&&((t=new cn(w.extend({items:{type:"label",id:e._id+"-l",text:n,flex:0,forId:e._id,disabled:e.disabled()}},i.settings.formItemDefaults))).type="formitem",e.aria("labelledby",e._id+"-l"),"undefined"==typeof e.settings.flex&&(e.settings.flex=1),i.replace(e,t),t.add(e))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function e(){var e,t,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(e){var t=e.items()[0],n=t.getEl().clientWidth;i=i<n?n:i,r.push(t)}),t=n.settings.labelGap||0,e=r.length;e--;)r[e].settings.minWidth=i+t}n._super(),n.on("show",e),e()}}),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){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:k(e)}},gn={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return mn(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return mn(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return mn(n)},fromDom:mn,fromPoint:function(e,t,n){var i=e.dom();return D.from(i.elementFromPoint(t,n)).map(mn)}},pn=function(n){var i,r=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r||(r=!0,i=n.apply(null,e)),i}},vn={ATTRIBUTE:Node.ATTRIBUTE_NODE,CDATA_SECTION:Node.CDATA_SECTION_NODE,COMMENT:Node.COMMENT_NODE,DOCUMENT:Node.DOCUMENT_NODE,DOCUMENT_TYPE:Node.DOCUMENT_TYPE_NODE,DOCUMENT_FRAGMENT:Node.DOCUMENT_FRAGMENT_NODE,ELEMENT:Node.ELEMENT_NODE,TEXT:Node.TEXT_NODE,PROCESSING_INSTRUCTION:Node.PROCESSING_INSTRUCTION_NODE,ENTITY_REFERENCE:Node.ENTITY_REFERENCE_NODE,ENTITY:Node.ENTITY_NODE,NOTATION:Node.NOTATION_NODE},bn=function(e){return e.dom().nodeType},yn=function(t){return function(e){return bn(e)===t}},xn=(yn(vn.ELEMENT),yn(vn.TEXT),yn(vn.DOCUMENT),pn(function(){return xn(gn.fromDom(document))}),function(e){var t=e.dom().body;if(null===t||t===undefined)throw"Body is not available yet";return gn.fromDom(t)}),wn=("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 Cn(i(1),i(2))}),_n=function(){return Cn(0,0)},Cn=function(e,t){return{major:e,minor:t}},Rn={nu:Cn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?_n():wn(e,n)},unknown:_n},En="Firefox",kn=function(e,t){return function(){return t===e}},Tn=function(e){var t=e.current;return{current:t,version:e.version,isEdge:kn("Edge",t),isChrome:kn("Chrome",t),isIE:kn("IE",t),isOpera:kn("Opera",t),isFirefox:kn(En,t),isSafari:kn("Safari",t)}},Hn={unknown:function(){return Tn({current:undefined,version:Rn.unknown()})},nu:Tn,edge:k("Edge"),chrome:k("Chrome"),ie:k("IE"),opera:k("Opera"),firefox:k(En),safari:k("Safari")},Sn="Windows",Mn="Android",Nn="Solaris",Pn="FreeBSD",Dn=function(e,t){return function(){return t===e}},Wn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Dn(Sn,t),isiOS:Dn("iOS",t),isAndroid:Dn(Mn,t),isOSX:Dn("OSX",t),isLinux:Dn("Linux",t),isSolaris:Dn(Nn,t),isFreeBSD:Dn(Pn,t)}},On={unknown:function(){return Wn({current:undefined,version:Rn.unknown()})},nu:Wn,windows:k(Sn),ios:k("iOS"),android:k(Mn),linux:k("Linux"),osx:k("OSX"),solaris:k(Nn),freebsd:k(Pn)},An=function(e,t){var n=String(t).toLowerCase();return Z(e,function(e){return e.search(n)})},Bn=function(e,n){return An(e,n).map(function(e){var t=Rn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Ln=function(e,n){return An(e,n).map(function(e){var t=Rn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},In=function(e,t){return-1!==e.indexOf(t)},zn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Fn=function(t){return function(e){return In(e,t)}},Un=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return In(e,"edge/")&&In(e,"chrome")&&In(e,"safari")&&In(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,zn],search:function(e){return In(e,"chrome")&&!In(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return In(e,"msie")||In(e,"trident")}},{name:"Opera",versionRegexes:[zn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Fn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Fn("firefox")},{name:"Safari",versionRegexes:[zn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(In(e,"safari")||In(e,"mobile/"))&&In(e,"applewebkit")}}],Vn=[{name:"Windows",search:Fn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return In(e,"iphone")||In(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Fn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Fn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Fn("linux"),versionRegexes:[]},{name:"Solaris",search:Fn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Fn("freebsd"),versionRegexes:[]}],Yn={browsers:k(Un),oses:k(Vn)},$n=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=Yn.browsers(),h=Yn.oses(),m=Bn(f,e).fold(Hn.unknown,Hn.nu),g=Ln(h,e).fold(On.unknown,On.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(r),isiPhone:k(o),isTablet:k(l),isPhone:k(c),isTouch:k(u),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:k(d)})}},Xn=pn(function(){var e=navigator.userAgent;return $n(e)}),qn=vn.ELEMENT,jn=vn.DOCUMENT,Jn=function(e){return e.nodeType!==qn&&e.nodeType!==jn||0===e.childElementCount},Gn={all:function(e,t){var n=t===undefined?document:t.dom();return Jn(n)?[]:J(n.querySelectorAll(e),gn.fromDom)},is:function(e,t){var n=e.dom();if(n.nodeType!==qn)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 Jn(n)?D.none():D.from(n.querySelector(e)).map(gn.fromDom)}},Kn=(Xn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),function(e,t){return Gn.all(t,e)}),Zn=w.trim,Qn=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}},ei=Qn("true"),ti=Qn("false"),ni=function(e,t,n,i,r){return{type:e,title:t,url:n,level:i,attach:r}},ii=function(e){return e.innerText||e.textContent},ri=function(e){return e.id?e.id:(t="h",n=(new Date).getTime(),t+"_"+Math.floor(1e9*Math.random())+ ++hn+String(n));var t,n},oi=function(e){return(t=e)&&"A"===t.nodeName&&(t.id||t.name)&&ai(e);var t},si=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},ai=function(e){return function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return ei(e)}return!1}(e)&&!ti(e)},li=function(e){return si(e)&&ai(e)},ui=function(e){var t,n=ri(e);return ni("header",ii(e),"#"+n,si(t=e)?parseInt(t.nodeName.substr(1),10):0,function(){e.id=n})},ci=function(e){var t=e.id||e.name,n=ii(e);return ni("anchor",n||"#"+t,"#"+t,0,E)},di=function(e){var t,n;return t="h1,h2,h3,h4,h5,h6,a:not([href])",n=e,J(Kn(gn.fromDom(n),t),function(e){return e.dom()})},fi=function(e){return 0<Zn(e.title).length},hi=function(e){var t,n=di(e);return K((t=n,J(K(t,li),ui)).concat(J(K(n,oi),ci)),fi)},mi={},gi=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},pi=function(e,t){return{title:e,value:{title:e,url:t,attach:E}}},vi=function(e,t,n){var i=t in e?e[t]:n;return!1===i?null:i},bi=function(e,i,r,t){var n,o,s,a,l,u,c={title:"-"},d=function(e){var t=e.hasOwnProperty(r)?e[r]:[],n=K(t,function(e){return t=e,!j(i,function(e){return e.url===t});var t});return w.map(n,function(e){return{title:e,value:{title:e,url:e,attach:E}}})},f=function(t){var e,n=K(i,function(e){return e.type===t});return e=n,w.map(e,gi)};return!1===t.typeahead_urls?[]:"file"===r?(n=[xi(e,d(mi)),xi(e,f("header")),xi(e,(a=f("anchor"),l=vi(t,"anchor_top","#top"),u=vi(t,"anchor_bottom","#bottom"),null!==l&&a.unshift(pi("<top>",l)),null!==u&&a.push(pi("<bottom>",u)),a))],o=function(e,t){return 0===e.length||0===t.length?e.concat(t):e.concat(c,t)},s=[],G(n,function(e){s=o(s,e)}),s):xi(e,d(mi))},yi=function(e,t){var n,i,r,o=mi[t];/^https?/.test(e)&&(o?(n=o,i=e,r=q(n,i),-1===r?D.none():D.some(r)).isNone()&&(mi[t]=o.slice(0,5).concat(e)):mi[t]=[e])},xi=function(e,t){var n=e.toLowerCase(),i=w.grep(t,function(e){return-1!==e.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===e?[]:i},wi=function(o,e,n){var i=e.filepicker_validator_handler;i&&o.state.on("change:value",function(e){var t;0!==(t=e.value).length?i({url:t,type:n},function(e){var t,n,i,r=(n=(t=e).status,i=t.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},_i=Qt.extend({Statics:{clearHistory:function(){mi={}}},init:function(e){var t,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:h.activeEditor,d=c.settings,f=e.filetype;e.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=w.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(t=function(){n(u.getEl("inp").id,u.value(),f,window)}):t=function(){var e=u.fire("beforecall").meta;e=w.extend({filetype:f},e),n.call(c,function(e,t){u.value(e).fire("change",{meta:t})},u.value(),e)}),t&&(e.icon="browse",e.onaction=t),u._super(e),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(e){var t=hi(s),n=bi(e,t,a,o);r.showAutoComplete(n,e)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(e){var t=e.value;r.value(t.url);var n,i=(n=t.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:t.attach}}):r.fire("change",{meta:{text:i,attach:t.attach}}),r.focus()}),r.on("click",function(e){0===r.value().length&&"INPUT"===e.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(e){e.isDefaultPrevented()||yi(r.value(),a)})}),wi(u,d,f)}}),Ci=qt.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()})}}),Ri=qt.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,_,C,R,E,k,T,H,S,M,N,P,D,W,O,A,B,L=[],I=Math.max,z=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?(R="y",_="h",C="minH",E="maxH",T="innerH",k="top",H="deltaH",S="contentH",W="left",P="w",M="x",N="innerW",D="minW",O="right",A="deltaW",B="contentW"):(R="x",_="w",C="minW",E="maxW",T="innerW",k="left",H="deltaW",S="contentW",W="top",P="h",M="y",N="innerH",D="minH",O="bottom",A="deltaH",B="contentH"),d=r[T]-o[k]-o[k],w=c=0,t=0,n=i.length;t<n;t++)m=(h=i[t]).layoutRect(),d-=t<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[E]&&L.push(h),m.flex=g),d-=m[C],w<(p=o[W]+m[D]+o[O])&&(w=p);if((y={})[C]=d<0?r[C]-d+r[H]:r[T]-d+r[H],y[D]=w+r[A],y[S]=r[T]-d,y[B]=w,y.minW=z(y.minW,r.maxW),y.minH=z(y.minH,r.maxH),y.minW=I(y.minW,r.startMinWidth),y.minH=I(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,t=0,n=L.length;t<n;t++)(v=(m=(h=L[t]).layoutRect())[E])<(p=m[C]+m.flex*b)?(d-=m[E]-m[C],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[k],y={},0===c&&("end"===l?x=d+o[k]:"center"===l?(x=Math.round(r[T]/2-(r[T]-d)/2)+o[k])<0&&(x=o[k]):"justify"===l&&(x=o[k],u=Math.floor(d/(i.length-1)))),y[M]=o[W],t=0,n=i.length;t<n;t++)p=(m=(h=i[t]).layoutRect()).maxFlexSize||m[C],"center"===a?y[M]=Math.round(r[N]/2-m[P]/2):"stretch"===a?(y[P]=I(m[D]||0,r[N]-o[W]-o[O]),y[M]=o[W]):"end"===a&&(y[M]=r[N]-m[P]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[R]=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())}}}),Ei=Xt.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}}),ki=function(e,t){return Gn.one(t,e)},Ti=function(e,t){return function(){e.execCommand("mceToggleFormat",!1,t)}},Hi=function(e,t,n){var i=function(e){n(e,t)};e.formatter?e.formatter.formatChanged(t,i):e.on("init",function(){e.formatter.formatChanged(t,i)})},Si=function(e,n){return function(t){Hi(e,n,function(e){t.control.active(e)})}},Mi=function(i){var t=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",e=[{text:"Left",icon:"alignleft",onclick:Ti(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:Ti(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:Ti(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:Ti(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:e}),i.addButton("align",{type:"menubutton",icon:r,menu:e,onShowMenu:function(e){var n=e.control.menu;w.each(t,function(t,e){n.items().eq(e).each(function(e){return e.active(i.formatter.match(t))})})},onPostRender:function(e){var n=e.control;w.each(t,function(t,e){Hi(i,t,function(e){n.icon(r),e&&n.icon(t)})})}}),w.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(e,t){i.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Si(i,t)})})},Ni=function(e){return e?e.split(",")[0]:""},Pi=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(e){var t,n,i,r,o=l.queryCommandValue("FontName"),s=(t=u,r=(n=o)?n.toLowerCase():"",w.each(t,function(e){e.value.toLowerCase()===r&&(i=e.value)}),w.each(t,function(e){i||Ni(e.value).toLowerCase()!==Ni(r).toLowerCase()||(i=e.value)}),i);a.value(s||null),!s&&o&&a.text(Ni(o))})}},Di=function(n){n.addButton("fontselect",function(){var e,t=(e=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(n.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"),w.map(e,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:t,fixedWidth:!0,onPostRender:Pi(n,t),onselect:function(e){e.control.settings.value&&n.execCommand("FontName",!1,e.control.settings.value)}}})},Wi=function(e){Di(e)},Oi=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},Ai=function(e,t,n){var i;return w.each(e,function(e){e.value===n?i=n:e.value===t&&(i=t)}),i},Bi=function(n){n.addButton("fontsizeselect",function(){var e,s,a,t=(e=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",w.map(e.split(" "),function(e){var t=e,n=e,i=e.split("=");return 1<i.length&&(t=i[0],n=i[1]),{text:t,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:(s=n,a=t,function(){var o=this;s.on("init nodeChange",function(e){var t,n,i,r;if(t=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=Oi(t,i),r=Ai(a,n,t);o.value(r||null),r||o.text(n)})}),onclick:function(e){e.control.settings.value&&n.execCommand("FontSize",!1,e.control.settings.value)}}})},Li=function(e){Bi(e)},Ii=function(n,e){var i=e.length;return w.each(e,function(e){e.menu&&(e.hidden=0===Ii(n,e.menu));var t=e.format;t&&(e.hidden=!n.formatter.canApply(t)),e.hidden&&i--}),i},zi=function(n,e){var i=e.items().length;return e.items().each(function(e){e.menu&&e.visible(0<zi(n,e.menu)),!e.menu&&e.settings.menu&&e.visible(0<Ii(n,e.settings.menu));var t=e.settings.format;t&&e.visible(n.formatter.canApply(t)),e.visible()||i--}),i},Fi=function(e){var i,r,o,t,s,n,a,l,u=(r=0,o=[],t=[{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"}]}],s=function(e){var i=[];if(e)return w.each(e,function(e){var t={text:e.title,icon:e.icon};if(e.items)t.menu=s(e.items);else{var n=e.format||"custom"+r++;e.format||(e.name=n,o.push(e)),t.format=n,t.cmd=e.cmd}i.push(t)}),i},(i=e).on("init",function(){w.each(o,function(e){i.formatter.register(e.name,e)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(t.concat(i.settings.style_formats)):s(t):s(i.settings.style_formats||t),onPostRender:function(e){i.fire("renderFormatsMenu",{control:e.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var e,t;(e=n.settings.format)&&(n.disabled(!i.formatter.canApply(e)),n.active(i.formatter.match(e))),(t=n.settings.cmd)&&n.active(i.queryCommandState(t))})},onclick:function(){this.settings.format&&Ti(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,e.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=e).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&zi(a,this.menu)}})},Ui=function(n,e){return function(){var r,o,s,t=[];return w.each(e,function(e){t.push({text:e[0],value:e[1],textStyle:function(){return n.formatter.getCssText(e[1])}})}),{type:"listbox",text:e[0][0],values:t,fixedWidth:!0,onselect:function(e){if(e.control){var t=e.control.value();Ti(n,t)()}},onPostRender:(r=n,o=t,function(){var t=this;r.on("nodeChange",function(e){var n=r.formatter,i=null;w.each(e.parents,function(t){if(w.each(o,function(e){if(s?n.matchNode(t,s,{value:e.value})&&(i=e.value):n.matchNode(t,e.value)&&(i=e.value),i)return!1}),i)return!1}),t.value(i)})})}}},Vi=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,w.map(n,function(e){return{text:e[0],onclick:Ti(t,e[1]),textStyle:function(){return t.formatter.getCssText(e[1])}}}))}),e.addButton("formatselect",Ui(e,i))},Yi=function(t,e){var n,i;if("string"==typeof e)i=e.split(" ");else if(w.isArray(e))return 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);te.apply(t,e[n])}return t}(w.map(e,function(e){return Yi(t,e)}));return n=w.grep(i,function(e){return"|"===e||e in t.menuItems}),w.map(n,function(e){return"|"===e?{text:"-"}:t.menuItems[e]})},$i=function(e){return e&&"-"===e.text},Xi=function(e){var t=K(e,function(e,t,n){return!$i(e)||!$i(n[t-1])});return K(t,function(e,t,n){return!$i(e)||0<t&&t<n.length-1})},qi=function(e){var t,n,i,r,o=e.settings.insert_button_items;return Xi(o?Yi(e,o):(t=e,n="insert",i=[{text:"-"}],r=w.grep(t.menuItems,function(e){return e.context===n}),w.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))},ji=function(e){var t;(t=e).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(qi(t)),this.menu.renderNew()}})},Ji=function(e){var n,i,r;n=e,w.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(e,t){n.addButton(t,{active:!1,tooltip:e,onPostRender:Si(n,t),onclick:Ti(n,t)})}),i=e,w.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){i.addButton(t,{tooltip:e[0],cmd:e[1]})}),r=e,w.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(e,t){r.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Si(r,t)})})},Gi=function(e){var n;Ji(e),n=e,w.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,t){n.addMenuItem(t,{text:e[0],icon:t,shortcut:e[2],cmd:e[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:Ti(n,"code")})},Ki=function(n,i){return function(){var e=this,t=function(){var e="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[e]()};e.disabled(!t()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){e.disabled(n.readonly||!t())})}},Zi=function(e){var t,n;(t=e).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Ki(t,"undo"),cmd:"undo"}),t.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Ki(t,"redo"),cmd:"redo"}),(n=e).addButton("undo",{tooltip:"Undo",onPostRender:Ki(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:Ki(n,"redo"),cmd:"redo"})},Qi=function(e){var t,n;(t=e).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=t,function(){var t=this;n.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},er={setup:function(e){var t;e.rtl&&(st.rtl=!0),e.on("mousedown",function(){kt.hideAll()}),(t=e).settings.ui_container&&(fe.container=ki(gn.fromDom(document.body),t.settings.ui_container).fold(k(null),function(e){return e.dom()})),Wt.tooltips=!fe.iOS,st.translate=function(e){return h.translate(e)},Vi(e),Mi(e),Gi(e),Zi(e),Li(e),Wi(e),Fi(e),Qi(e),ji(e)}},tr=qt.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,_,C,R,E,k,T,H,S=[],M=[];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,H="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++)S.push(0);for(f=0;f<n;f++)M.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)R=(u=c.layoutRect()).minW,E=u.minH,S[d]=R>S[d]?R:S[d],M[f]=E>M[f]?E:M[f];for(k=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=S[d]+(0<d?b:0),k-=(0<d?b:0)+S[d];for(T=o.innerH-p.top-p.bottom,f=C=0;f<n;f++)C+=M[f]+(0<f?y:0),T-=(0<f?y:0)+M[f];if(_+=p.left+p.right,C+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=C+(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 N;o.autoResize&&((l=e.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===t.packV?0:0<T?Math.floor(T/n):0;var P=0,D=t.flexWidths;if(D)for(d=0;d<D.length;d++)P+=D[d];else P=i;var W=k/P;for(d=0;d<i;d++)S[d]+=D?D[d]*W:W;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;d<i&&(c=r[H?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(S[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 O=e.parent();O&&(O._lastRect=null,O.recalc())}}}),nr=Wt.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()):u.setTimeout(function(){n.html(e)}),this}}),ir=Wt.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 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()}}),rr=Wt.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&&(Ce.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,Ce.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 t=this;return t.state.on("change:text",function(e){t.innerHtml(t.encode(e.value)),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),or=ct.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()}}),sr=or.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),ar=jt.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=b.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 sr?"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 r=this;return r.on("click",function(e){e.control===r&&function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}(e.target,r.getEl())&&(r.focus(),r.showMenu(!e.aria),e.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(e){var t,n=e.control,i=r.parent();n&&i&&n instanceof ar&&n.parent()===i&&(i.items().filter("MenuButton").each(function(e){e.hideMenu&&e!==n&&(e.menu&&e.menu.visible()&&(t=!0),e.hideMenu())}),t&&(n.focus(),n.showMenu()))}),r._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()}}),lr=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]=w.extend({},e.itemDefaults,t[n]);this._super(e),this.classes.add("menu"),e.animate&&11!==fe.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,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new Mt(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=t=(new Date).getTime(),n.settings.itemsFactory(function(e){0!==e.length?n.requestTime===t&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(e),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(e){var t=e.settings;if(t.icon||t.image||t.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(e){e.control===n&&("show"===e.type?u.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),ur=ar.extend({init:function(i){var t,r,o,n,s=this;s._super(i),i=s.settings,s._values=t=i.values,t&&("undefined"!=typeof i.value&&function e(t){for(var n=0;n<t.length;n++){if(r=t[n].selected||i.value===t[n].value)return o=o||t[n].text,s.state.set("value",t[n].value),!0;if(t[n].menu&&e(t[n].menu))return!0}}(t),!r&&0<t.length&&(o=t[0].text,s.state.set("value",t[0].value)),s.state.set("menu",t)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(e){var t=e.control;n&&(e.lastControl=n),i.multiple?t.active(!t.active()):s.value(e.control.value()),n=t})},value:function(t){return 0===arguments.length?this.state.get("value"):(void 0===t||(this.settings.values?0<w.grep(this.settings.values,function(e){return e.value===t}).length?this.state.set("value",t):null===t&&this.state.set("value",null):this.state.set("value",t)),this)},bindStates:function(){var i=this;return i.on("show",function(e){var t,n;t=e.control,n=i.value(),t instanceof lr&&t.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}),i.state.on("change:value",function(t){var n=function e(t,n){var i;if(t)for(var r=0;r<t.length;r++){if(t[r].value===n)return t[r];if(t[r].menu&&(i=e(t[r].menu,n)))return i}}(i.state.get("menu"),t.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),cr=Wt.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 t,n=this,e=n.settings,i=n.parent();if(i.items().each(function(e){e!==n&&e.hideMenu()}),e.menu){(t=n.menu)?t.show():((t=e.menu).length?t={type:"menu",items:t}:t.type=t.type||"menu",i.settings.itemDefaults&&(t.itemDefaults=i.settings.itemDefaults),(t=n.menu=b.create(t).parent(n).renderTo()).reflow(),t.on("cancel",function(e){e.stopPropagation(),n.focus(),t.hide()}),t.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),t.on("hide",function(e){e.control===t&&n.classes.remove("selected")}),t.submenu=!0),t._parentMenu=i,t.classes.add("menu-sub");var r=t.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);t.moveRel(n.getEl(),r),r="menu-sub-"+(t.rel=r),t.classes.remove(t._lastRel).add(r),t._lastRel=r,n.classes.add("selected"),n.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=fe.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 t=this,n=t.settings,e=n.textStyle;if("function"==typeof e&&(e=e.call(this)),e){var i=t.getEl("text");i&&(i.setAttribute("style",e),t._textStyle=e)}return t.on("mouseenter click",function(e){e.control===t&&(n.menu||"click"!==e.type?(t.showMenu(),e.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(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()}}),dr=Kt.extend({Defaults:{classes:"radio",role:"radio"}}),fr=Wt.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 t=this;t._super(),t.resizeDragHelper=new ft(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 hr(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}var mr=Wt.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var n=this;n._super(e),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.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=hr(t._options),t.size&&(n=' size = "'+t.size+'"'),'<select id="'+t._id+'" class="'+t.classes+'"'+n+">"+e+"</select>"},bindStates:function(){var t=this;return t.state.on("change:options",function(e){t.getEl().innerHTML=hr(e.value)}),t._super()}});function gr(e,t,n){return e<t&&(e=t),n<e&&(e=n),e}function pr(e,t,n){e.setAttribute("aria-"+t,n)}function vr(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)-Ce.getSize(s)[i])*((t-e._minValue)/(e._maxValue-e._minValue))+"px",s.style[r]=o,s.style.height=e.layoutRect().h+"px",pr(s,"valuenow",t),pr(s,"valuetext",""+e.settings.previewFilter(t)),pr(s,"valuemin",e._minValue),pr(s,"valuemax",e._maxValue)}var br=Wt.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=X(e.minValue)?e.minValue:0,t._maxValue=X(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(o,s){function t(e){var t,n,i,r;t=gr(t=(((t=m.value())+(r=n=o))/((i=s)-r)+.05*e)*(i-n)-n,o,s),m.value(t),m.fire("dragstart",{value:t}),m.fire("drag",{value:t}),m.fire("dragend",{value:t})}m.on("keydown",function(e){switch(e.keyCode){case 37:case 38:t(-1);break;case 39:case 40:t(1)}})}(e,t),s=e,a=t,l=m.getEl("handle"),m._dragHelper=new ft(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)-Ce.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(e){var t=e[n]-u;f=gr(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(),vr(this,this.value())},bindStates:function(){var t=this;return t.state.on("change:value",function(e){vr(t,e.value)}),t._super()}}),yr=Wt.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),xr=ar.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,we(e).css({width:i.w-Ce.getSize(t).width,height:i.h-2}),we(t).css({height:i.h-2}),this},activeMenu:function(e){we(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 n=this.settings.onclick;return this.on("click",function(e){var t=e.target;if(e.control===this)for(;t;){if(e.aria&&"down"!==e.aria.key||"BUTTON"===t.nodeName&&-1===t.className.indexOf("open"))return e.stopImmediatePropagation(),void(n&&n.call(this,e));t=t.parentNode}}),delete this.settings.onclick,this._super()}}),wr=Ei.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),_r=bt.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var e;this.activeTabId&&(e=this.getEl(this.activeTabId),we(e).removeClass(this.classPrefix+"active"),e.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(e=this.getEl("t"+n)).setAttribute("aria-selected","true"),we(e).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(e,t){n!==t&&e.hide()})},renderHtml:function(){var i=this,e=i._layout,r="",o=i.classPrefix;return i.preRender(),e.preRender(i),i.items().each(function(e,t){var n=i._id+"-t"+t;e.aria("role","tabpanel"),e.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+e._id+'" aria-selected="false" tabIndex="-1">'+i.encode(e.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+e.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(e){var t=e.target.parentNode;if(t&&t.id===i._id+"-head")for(var n=t.childNodes.length;n--;)t.childNodes[n]===e.target&&i.activateTab(n)})},initLayoutRect:function(){var e,t,n,i=this;t=(t=Ce.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=Ce.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}}),Cr=Wt.extend({init:function(e){var n=this;n._super(e),n.classes.add("textbox"),e.multiline?n.classes.add("multiline"):(n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))}),n.on("keyup",function(e){n.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 t,e,n=this,i=n.settings;return t={id:n._id,hidefocus:"1"},w.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=Ce.create(i.multiline?"textarea":"input",t)).value=n.state.get("value"),e.className=n.classes.toString(),e.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 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()}}),Rr=function(){return{Selector:Ue,Collection:$e,ReflowQueue:Qe,Control:st,Factory:b,KeyboardNavigation:lt,Container:ct,DragHelper:ft,Scrollable:vt,Panel:bt,Movable:Se,Resizable:yt,FloatPanel:kt,Window:Vt,MessageBox:Yt,Tooltip:Dt,Widget:Wt,Progress:Ot,Notification:Bt,Layout:Xt,AbsoluteLayout:qt,Button:jt,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:_i,FitLayout:Ci,FlexLayout:Ri,FlowLayout:Ei,FormatControls:er,GridLayout:tr,Iframe:nr,InfoBox:ir,Label:rr,Toolbar:or,MenuBar:sr,MenuButton:ar,MenuItem:cr,Throbber:Mt,Menu:lr,ListBox:ur,Radio:dr,ResizeHandle:fr,SelectBox:mr,Slider:br,Spacer:yr,SplitButton:xr,StackLayout:wr,TabPanel:_r,TextBox:Cr,DropZone:an,BrowseButton:Jt}},Er=function(n){n.ui?w.each(Rr(),function(e,t){n.ui[t]=e}):n.ui=Rr()};w.each(Rr(),function(e,t){b.add(t,e)}),Er(window.tinymce?window.tinymce:{}),o.add("modern",function(e){return er.setup(e),$t(e)})}();
\ No newline at end of file
+!function(){"use strict";var e,t,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),h=tinymce.util.Tools.resolve("tinymce.EditorManager"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return!1!==c(e)},c=function(e){return e.getParam("menubar")},f=function(e){return e.getParam("toolbar_items_size")},m=function(e){return e.getParam("menu")},g=function(e){return!1===e.settings.skin},p=function(e){var t=e.getParam("resize","vertical");return!1===t?"none":"both"===t?"both":"vertical"},v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),b=tinymce.util.Tools.resolve("tinymce.ui.Factory"),y=tinymce.util.Tools.resolve("tinymce.util.I18n"),s=function(e){return e.fire("SkinLoaded")},x=function(e){return e.fire("ResizeEditor")},_=function(e){return e.fire("BeforeRenderUI")},a=function(t,n){return function(){var e=t.find(n)[0];e&&e.focus(!0)}},R=function(e,t){e.shortcuts.add("Alt+F9","",a(t,"menubar")),e.shortcuts.add("Alt+F10,F10","",a(t,"toolbar")),e.shortcuts.add("Alt+F11","",a(t,"elementpath")),t.on("cancel",function(){e.focus()})},C=tinymce.util.Tools.resolve("tinymce.geom.Rect"),u=tinymce.util.Tools.resolve("tinymce.util.Delay"),E=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},k=function(e){return function(){return e}},l=k(!1),H=k(!0),S=l,T=H,M=function(){return N},N=(i={fold:function(e,t){return e()},is:S,isSome:S,isNone:T,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:n,orThunk:t,map:M,ap:M,each:function(){},bind:M,flatten:M,exists:S,forall:T,filter:M,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:k("none()")},Object.freeze&&Object.freeze(i),i),P=function(n){var e=function(){return n},t=function(){return r},i=function(e){return e(n)},r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:T,isNone:S,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return P(e(n))},ap:function(e){return e.fold(M,function(e){return P(e(n))})},each:function(e){e(n)},bind:i,flatten:e,exists:i,forall:i,filter:function(e){return e(n)?r:N},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(S,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},W={some:P,none:M,from:function(e){return null===e||e===undefined?N:P(e)}},D=function(e){return e?e.getRoot().uiContainer:null},O={getUiContainerDelta:function(e){var t=D(e);if(t&&"static"!==v.DOM.getStyle(t,"position",!0)){var n=v.DOM.getPos(t),i=t.scrollLeft-n.x,r=t.scrollTop-n.y;return W.some({x:i,y:r})}return W.none()},setUiContainer:function(e,t){var n=v.DOM.select(e.settings.ui_container)[0];t.getRoot().uiContainer=n},getUiContainer:D,inheritUiContainer:function(e,t){return t.uiContainer=D(e)}},A=function(i,e,r){var o,s=[];if(e)return w.each(e.split(/[ ,]/),function(t){var e,n=function(){var e=i.selection;t.settings.stateSelector&&e.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&e.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})};"|"===t?o=null:(o||(o={type:"buttongroup",items:[]},s.push(o)),i.buttons[t]&&(e=t,"function"==typeof(t=i.buttons[e])&&(t=t()),t.type=t.type||"button",t.size=r,t=b.create(t),o.items.push(t),i.initialized?n():i.on("init",n)))}),{type:"toolbar",layout:"flow",items:s}},B=A,L=function(n,i){var e,t,r=[];if(w.each(!1===(t=(e=n).getParam("toolbar"))?[]:w.isArray(t)?w.grep(t,function(e){return 0<e.length}):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 0<n.length?n:o}(e.settings,"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"),function(e){var t;(t=e)&&r.push(A(n,t,i))}),r.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:r}},z=v.DOM,I=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}},F=function(e,t){e.moveTo(t.left,t.top)},U=function(e,t,n,i,r,o){return o=I({x:t,y:n,w:o.w,h:o.h}),e&&(o=e({elementRect:I(i),contentAreaRect:I(r),panelRect:o})),o},V=function(x){var i,o=function(){return x.contextToolbars||[]},n=function(e,t){var n,i,r,o,s,a,l,u=x.getParam("inline_toolbar_position_handler");if(!x.removed){if(!e||!e.toolbar.panel)return c=x,void w.each(c.contextToolbars,function(e){e.panel&&e.panel.hide()});var c,d,f,h,m;l=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],s=e.toolbar.panel,t&&s.show(),d=e.element,f=z.getPos(x.getContentAreaContainer()),h=x.dom.getRect(d),"BODY"===(m=x.dom.getRoot()).nodeName&&(h.x-=m.ownerDocument.documentElement.scrollLeft||m.scrollLeft,h.y-=m.ownerDocument.documentElement.scrollTop||m.scrollTop),h.x+=f.x,h.y+=f.y,r=h,i=z.getRect(s.getEl()),o=z.getRect(x.getContentAreaContainer()||x.getBody());var g,p,v,b=O.getUiContainerDelta(s).getOr({x:0,y:0});if(r.x+=b.x,r.y+=b.y,i.x+=b.x,i.y+=b.y,o.x+=b.x,o.y+=b.y,"inline"!==z.getStyle(e.element,"display",!0)){var y=e.element.getBoundingClientRect();r.w=y.width,r.h=y.height}x.inline||(o.w=x.getDoc().documentElement.offsetWidth),x.selection.controlSelection.isResizable(e.element)&&r.w<25&&(r=C.inflate(r,0,8)),n=C.findBestRelativePosition(i,r,o,l),r=C.clamp(r,o),n?(a=C.relativePosition(i,r,n),F(s,U(u,a.x,a.y,r,o,i))):(o.h+=i.h,(r=C.intersect(o,r))?(n=C.findBestRelativePosition(i,r,o,["bc-tc","bl-tl","br-tr"]))?(a=C.relativePosition(i,r,n),F(s,U(u,a.x,a.y,r,o,i))):F(s,U(u,r.x,r.y,r,o,i)):s.hide()),g=s,v=function(e,t){return e===t},p=(p=n)?p.substr(0,2):"",w.each({t:"down",b:"up"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(0,1)))}),w.each({l:"left",r:"right"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(1,1)))})}},r=function(e){return function(){u.requestAnimationFrame(function(){x.selection&&n(a(x.selection.getNode()),e)})}},t=function(e){var t;if(e.toolbar.panel)return e.toolbar.panel.show(),void n(e);t=b.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:B(x,e.toolbar.items),oncancel:function(){x.focus()}}),O.setUiContainer(x,t),function(e){if(!i){var t=r(!0),n=O.getUiContainer(e);i=x.selection.getScrollContainer()||x.getWin(),z.bind(i,"scroll",t),z.bind(n,"scroll",t),x.on("remove",function(){z.unbind(i,"scroll",t),z.unbind(n,"scroll",t)})}}(t),(e.toolbar.panel=t).renderTo().reflow(),n(e)},s=function(){w.each(o(),function(e){e.panel&&e.panel.hide()})},a=function(e){var t,n,i,r=o();for(t=(i=x.$(e).parents().add(e)).length-1;0<=t;t--)for(n=r.length-1;0<=n;n--)if(r[n].predicate(i[t]))return{toolbar:r[n],element:i[t]};return null};x.on("click keyup setContent ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&u.setEditorTimeout(x,function(){var e;(e=a(x.selection.getNode()))?(s(),t(e)):s()})}),x.on("blur hide contextmenu",s),x.on("ObjectResizeStart",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),x.on("ResizeEditor ResizeWindow",r(!0)),x.on("nodeChange",r(!1)),x.on("remove",function(){w.each(o(),function(e){e.panel&&e.panel.remove()}),x.contextToolbars={}}),x.shortcuts.add("ctrl+F9","",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})},Y=function(t){return function(e){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}(e)===t}},$=Y("function"),q=Y("number"),X=(r=Array.prototype.indexOf)===undefined?function(e,t){return Q(e,t)}:function(e,t){return r.call(e,t)},j=function(e,t){return Z(e,t).isSome()},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},G=function(e,t){for(var n=0,i=e.length;n<i;n++)t(e[n],n,e)},K=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},Z=function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n,e))return W.some(n);return W.none()},Q=function(e,t){for(var n=0,i=e.length;n<i;++n)if(e[n]===t)return n;return-1},ee=Array.prototype.push,te=(Array.prototype.slice,$(Array.from)&&Array.from,{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 code"},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(n,e,t,i){var r,o,s,a,l,u,c;return e?(o=e[i],a=!0):o=te[i],o&&(r={text:o.title},s=[],w.each((o.items||"").split(/[ ,]/),function(e){var t=ne(e,n[e]);t&&s.push(t)}),a||w.each(n,function(e,t){var n;e.context!==i||(n=t,Z(s,function(e){return e.name===n}).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=J((l=t,u=K(s,function(e){return!1===l.hasOwnProperty(e.name)}),c=K(u,function(e,t,n){return!ie(e)||!ie(n[t-1])}),K(c,function(e,t,n){return!ie(e)||0<t&&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=m(e);if(i)for(t in i)n.push(t);else for(t in te)n.push(t);return n}(e),r=w.makeMap((t=e,t.getParam("removed_menuitems","")).split(/[ ,]/)),o=c(e),s="string"==typeof o?o.split(/[ ,]/):i,a=0;a<s.length;a++){var l=s[a],u=re(e.menuItems,m(e),r,l);u&&n.push(u)}return n},se=v.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),x(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(c,d,f){return function(e){var t,n,i,r,o,s=e.control,a=s.parents().filter("panel")[0],l=a.find("#"+d)[0],u=(t=f,n=d,w.grep(t,function(e){return e.name===n})[0]);i=d,r=a,o=f,w.each(o,function(e){var t=r.items().filter("#"+e.name)[0];t&&t.visible()&&e.name!==i&&(fe(e,t,"onhide"),t.visible(!1))}),s.parent().items().each(function(e){e.active(!1)}),l&&l.visible()?(fe(u,l,"onhide"),l.hide(),s.active(!1)):(l?l.show():(l=b.create({type:"container",name:d,layout:"stack",classes:"sidebar-panel",html:""}),a.prepend(l),fe(u,l,"onrender")),fe(u,l,"onshow"),s.active(!0)),x(c)}},me=function(e){return!(de.ie&&!(11<=de.ie)||!e.sidebars)&&0<e.sidebars.length},ge=function(n){return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:w.map(n.sidebars,function(e){var t=e.settings;return{type:"button",icon:t.icon,image:t.image,tooltip:t.tooltip,onclick:he(n,e.name,n.sidebars)}})}]}},pe=function(e){var t=function(){e._skinLoaded=!0,s(e)};return function(){e.initialized?t():e.on("init",t)}},ve=v.DOM,be=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},ye=function(t,e,n){var i,r,o,s,a;if(!1===g(t)&&n.skinUiCss?ve.styleSheetLoader.load(n.skinUiCss,pe(t)):pe(t)(),i=e.panel=b.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[{type:"container",classes:"top-part",items:[!1===d(t)?null:{type:"menubar",border:"0 0 1 0",items:oe(t)},L(t,f(t))]},me(t)?(s=t,{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[be("0"),ge(s)]}):be("1 0 0 0")]}),O.setUiContainer(t,i),"none"!==p(t)&&(r={type:"resizehandle",direction:p(t),onResizeStart:function(){var e=t.getContentAreaContainer().firstChild;o={width:e.clientWidth,height:e.clientHeight}},onResize:function(e){"both"===p(t)?ue(t,o.width+e.deltaX,o.height+e.deltaY):ue(t,null,o.height+e.deltaY)}}),t.getParam("statusbar",!0,"boolean")){var l=y.translate(["Powered by {0}",'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">Tiny</a>']),u=t.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+l}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:t},r,u]})}return _(t),t.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly"),n.width&&ve.setStyle(i.getEl(),"width",n.width),t.on("remove",function(){i.remove(),i=null}),R(t,i),V(t),{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 v.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:w.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return v.DOM.createFragment(e)},getWindowSize:function(){return v.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 v.DOM.getPos(e,t||_e.getContainer())},getContainer:function(){return de.container?de.container:document.body},getViewPort:function(e){return v.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return v.DOM.addClass(e,t)},removeClass:function(e,t){return v.DOM.removeClass(e,t)},hasClass:function(e,t){return v.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return v.DOM.toggleClass(e,t,n)},css:function(e,t,n){return v.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return v.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return v.DOM.bind(e,t,n,i)},off:function(e,t,n){return v.DOM.unbind(e,t,n)},fire:function(e,t,n){return v.DOM.fire(e,t,n)},innerHtml:function(e,t){v.DOM.setHTML(e,t)}},Re=function(e){return"static"===_e.getRuntimeStyle(e,"position")},Ce=function(e){return e.state.get("fixed")};function Ee(e,t,n){var i,r,o,s,a,l,u,c,d,f;return d=ke(),o=(r=_e.getPos(t,O.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 ke=function(){var e=window;return{x:Math.max(e.pageXOffset,document.body.scrollLeft,document.documentElement.scrollLeft),y:Math.max(e.pageYOffset,document.body.scrollTop,document.documentElement.scrollTop),w:e.innerWidth||document.documentElement.clientWidth,h:e.innerHeight||document.documentElement.clientHeight}},He=function(e){var t,n=O.getUiContainer(e);return n&&!Ce(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:ke()},Se={testMoveRel:function(e,t){for(var n=He(this),i=0;i<t.length;i++){var r=Ee(this,e,t[i]);if(Ce(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return t[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)return t[i]}return t[0]},moveRel:function(e,t){"string"!=typeof t&&(t=this.testMoveRel(e,t));var n=Ee(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:t<e+n&&(e=t-n)<0?0:e}if(n.settings.constrainToViewport){var r=He(this),o=n.layoutRect();e=i(e,r.w+r.x,o.w),t=i(t,r.h+r.y,o.h)}var s=O.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}},Te=tinymce.util.Tools.resolve("tinymce.util.Class"),Me=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Ne=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})},Pe=function(i,e){function t(e){var t=parseFloat(function(e){var t=i.ownerDocument.defaultView;if(t){var n=t.getComputedStyle(i,null);return n?(e=e.replace(/[A-Z]/g,function(e){return"-"+e}),n.getPropertyValue(e)):null}return i.currentStyle[e]}(e));return isNaN(t)?0:t}return{top:t(e+"TopWidth"),right:t(e+"RightWidth"),bottom:t(e+"BottomWidth"),left:t(e+"LeftWidth")}};function We(){}function De(e){this.cls=[],this.cls._map={},this.onchange=e||We,this.prefix=""}w.extend(De.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)}}),De.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)0<t&&(e+=" "),e+=this.prefix+this.cls[t];return e};var Oe,Ae,Be,Le=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,ze=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Ie=/^\s*|\s*$/g,Fe=Te.extend({init:function(e){var o=this.match;function s(e,t,n){var i;function r(e){e&&t.push(e)}return r(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((i=Le.exec(e.replace(Ie,"")))[1])),r(function(t){if(t)return function(e){return e._name===t}}(i[2])),r(function(n){if(n)return n=n.split("."),function(e){for(var t=n.length;t--;)if(!e.classes.contains(n[t]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(e){var t=e[n]?e[n]():"";return i?"="===i?t===r:"*="===i?0<=t.indexOf(r):"~="===i?0<=(" "+t+" ").indexOf(" "+r+" "):"!="===i?t!==r:"^="===i?0===t.indexOf(r):"$="===i&&t.substr(t.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var t;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(t=a(i[1],[]),function(e){return!o(e,t)}):(i=i[2],function(e,t,n){return"first"===i?0===t:"last"===i?t===n-1:"even"===i?t%2==0:"odd"===i?t%2==1:!!e[i]&&e[i]()})}(i[7])),t.pseudo=!!i[7],t.direct=n,t}function a(e,t){var n,i,r,o=[];do{if(ze.exec(""),(i=ze.exec(e))&&(e=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,t),e=[],r=0;r<o.length;r++)">"!==o[r]&&e.push(s(o[r],[],">"===o[r-1]));return t.push(e),t}this._selectors=a(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;0<=r;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,u=[],i=this._selectors;function c(e,t,n){var i,r,o,s,a,l=t[n];for(i=0,r=e.length;i<r;i++){for(a=e[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===t.length-1?u.push(a):a.items&&c(a.items(),t,n+1);else if(l.direct)return;a.items&&c(a.items(),t,n)}}if(e.items){for(t=0,n=i.length;t<n;t++)c(e.items(),i[t],0);1<n&&(u=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}(u))}return Oe||(Oe=Fe.Collection),new Oe(u)}}),Ue=Array.prototype.push,Ve=Array.prototype.slice;Be={length:0,init:function(e){e&&this.add(e)},add:function(e){return w.isArray(e)?Ue.apply(this,e):e instanceof Ae?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(t){var e,n,i,r,o=[];for("string"==typeof t?(t=new Fe(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 Ae(o)},slice:function(){return new Ae(Ve.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(e){return w.each(this,e),this},toArray:function(){return w.toArray(this)},indexOf:function(e){for(var t=this.length;t--&&this[t]!==e;);return t},reverse:function(){return new Ae(w.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(t,n){var e;return n!==undefined?(this.each(function(e){e[t]&&e[t](n)}),this):(e=this[0])&&e[t]?e[t]():void 0},exec:function(t){var n=w.toArray(arguments).slice(1);return this.each(function(e){e[t]&&e[t].apply(e,n)}),this},remove:function(){for(var e=this.length;e--;)this[e].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)})}},w.each("fire on off show hide append prepend before after reflow".split(" "),function(n){Be[n]=function(){var t=w.toArray(arguments);return this.each(function(e){n in e&&e[n].apply(e,t)}),this}}),w.each("text name disabled active selected checked visible parent value data".split(" "),function(t){Be[t]=function(e){return this.prop(t,e)}}),Ae=Te.extend(Be);var Ye=Fe.Collection=Ae,$e=function(e){this.create=e.create};$e.create=function(r,o){return new $e({create:function(t,n){var i,e=function(e){t.set(n,e.value)};return t.on("change:"+n,function(e){r.set(o,e.value)}),r.on("change:"+o,e),(i=t._bindings)||(i=t._bindings=[],t.on("destroy",function(){for(var e=i.length;e--;)i[e]()})),i.push(function(){r.off("change:"+o,e)}),r.get(o)}})};var qe=tinymce.util.Tools.resolve("tinymce.util.Observable");function Xe(e){return 0<e.nodeType}var je,Je,Ge=Te.extend({Mixins:[qe],init:function(e){var t,n;for(t in e=e||{})(n=e[t])instanceof $e&&(e[t]=n.create(this,t));this.data=e},set:function(t,n){var i,r,o=this.data[t];if(n instanceof $e&&(n=n.create(this,t)),"object"==typeof t){for(i in t)this.set(i,t[i]);return this}return function e(t,n){var i,r;if(t===n)return!0;if(null===t||null===n)return t===n;if("object"!=typeof t||"object"!=typeof n)return t===n;if(w.isArray(n)){if(t.length!==n.length)return!1;for(i=t.length;i--;)if(!e(t[i],n[i]))return!1}if(Xe(t)||Xe(n))return t===n;for(i in r={},n){if(!e(t[i],n[i]))return!1;r[i]=!0}for(i in t)if(!r[i]&&!e(t[i],n[i]))return!1;return!0}(o,n)||(this.data[t]=n,r={target:this,name:t,value:n,oldValue:o},this.fire("change:"+t,r),this.fire("change",r)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(e){return $e.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),je||(je=!0,u.requestAnimationFrame(function(){var e,t;for(e in je=!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(t){var e,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=t=w.extend({},i.Defaults,t),i._id=t.id||"mceu_"+tt++,i._aria={role:t.role},i._elmCache={},i.$=xe,i.state=new Ge({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Ge(t.data),i.classes=new De(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)),w.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=Ne(t.border),i.paddingBox=Ne(t.padding),i.marginBox=Ne(t.margin),t.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var e=O.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||Pe(f,"border"),c.paddingBox=c.paddingBox||Pe(f,"padding"),c.marginBox=c.marginBox||Pe(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=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(0<=u?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=(0<=u?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=(0<=u?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 Ye;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new Ye(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 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&&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)._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),t=(e=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(n){return n._eventDispatcher||(n._eventDispatcher=new Me({scope:n,toggleEvent:function(e,t){t&&Me.isNative(e)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[e]=!0,n.state.get("rendered")&&rt(n))}})),n._eventDispatcher}function rt(a){var e,t,n,l,i,r;function o(e){var t=a.getParentCtrl(e.target);t&&t.fire(e.type,e)}function s(){var e=l._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),l._lastHoverCtrl=null)}function u(e){var t,n,i,r=a.getParentCtrl(e.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(t=i.length-1;s<=t;t--)(o=i[t]).fire("mouseleave",{target:o.getEl()})}for(t=s;t<n.length;t++)(r=n[t]).fire("mouseenter",{target:r.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=a.fire("wheel",e)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),e=0,t=n.length;!l&&e<t;e++)l=n[e]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,t=e,e=0;e<t;e++)n[e]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||et?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(xe(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(xe(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):Qe?xe(a.getEl()).on("mousewheel",c):xe(a.getEl()).on("DOMMouseScroll",c)}}}w.each("text title visible disabled active value".split(" "),function(t){nt[t]=function(e){return 0===arguments.length?this.state.get(t):(void 0!==e&&this.state.set(t,e),this)}});var ot=Je=Te.extend(nt),st=function(e){return!!e.getAttribute("data-mce-tabstop")};function at(e){var o,r,n=e.root;function i(e){return e&&1===e.nodeType}try{o=document.activeElement}catch(t){o=document.body}function s(e){return i(e=e||o)?e.getAttribute("role"):null}function a(e){for(var t,n=e||o;n=n.parentNode;)if(t=s(n))return t}function l(e){var t=o;if(i(t))return t.getAttribute("aria-"+e)}function u(e){var t=e.tagName.toUpperCase();return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}function c(t){var r=[];return function e(t){if(1===t.nodeType&&"none"!==t.style.display&&!t.disabled){var n;(u(n=t)&&!n.hidden||st(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(t);for(var i=0;i<t.childNodes.length;i++)e(t.childNodes[i])}}(t||n.getEl()),r}function d(e){var t,n;(n=(e=e||r).parents().toArray()).unshift(e);for(var i=0;i<n.length&&!(t=n[i]).settings.ariaRoot;i++);return t}function f(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function h(e,t){var n=-1,i=d();t=t||c(i.getEl());for(var r=0;r<t.length;r++)t[r]===o&&(n=r);n+=e,i.lastAriaIndex=f(n,t)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var e=s(),t=a();"tablist"===t?h(1,c(o.parentNode)):"menuitem"===e&&"menu"===t&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var e=s(),t=a();"menuitem"===e&&"menubar"===t?y():"button"===e&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(e){e=e||{},r.fire("click",{target:o,aria:e})}return r=n.getParentCtrl(o),n.on("keydown",function(e){function t(e,t){u(o)||st(o)||"slider"!==s(o)&&!1!==t(e)&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,m);break;case 39:t(e,g);break;case 38:t(e,p);break;case 40:t(e,v);break;case 27:b();break;case 14:case 13:case 32:t(e,y);break;case 9:!function(e){if("tablist"===a()){var t=c(r.getEl("body"))[0];t&&t.focus()}else h(e.shiftKey?-1:1)}(e),e.preventDefault()}}),n.on("focusin",function(e){o=e.target,r=e.control}),{focusFirst:function(e){var t=d(e),n=c(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?f(t.lastAriaIndex,n):f(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 Ye,t.isRtl()&&t.classes.add("rtl"),t.bodyClasses=new De(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=b.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}0<=r&&((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 w.isArray(e)||(e=[e]),w.each(e,function(e){e&&(e instanceof ot||("string"==typeof e&&(e={type:e}),t=w.extend({},n.settings.defaults,e),e.type=t.type=t.type||e.type||n.settings.defaultType||(t.defaults?t.defaults.type:null),e=b.create(t)),i.push(e))}),i},renderNew:function(){var i=this;return i.items().each(function(e,t){var n;e.parent(i),e.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&t<=n.childNodes.length-1?xe(n.childNodes[t]).before(e.renderHtml()):xe(n).append(e.renderHtml()),e.postRender(),Ze.add(e))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},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),0<=t&&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 i={};return this.find("*").each(function(e){var t=e.name(),n=e.value();t&&void 0!==n&&(i[t]=n)}),i},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,h){var m,g,t,p,v,b,y,x=h.document||document;h=h||{};var w=x.getElementById(h.handle||e);t=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=(t=x,u=Math.max,n=t.documentElement,i=t.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});ct(e),e.preventDefault(),g=e.button,c=w,b=e.screenX,y=e.screenY,d=window.getComputedStyle?window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=xe("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),xe(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(e)},v=function(e){if(ct(e),e.button!==g)return p(e);e.deltaX=e.screenX-b,e.deltaY=e.screenY-y,e.preventDefault(),h.drag(e)},p=function(e){ct(e),xe(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(e)},this.destroy=function(){xe(w).off()},xe(w).on("mousedown touchstart",t)}var ft,ht,mt,gt,pt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,e;function t(e,t,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+e)){if(f=t.toLowerCase(),h=n.toLowerCase(),xe(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void xe(a).css("display","none");xe(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+e+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+t]+v,d[h]=u,xe(a).css(d),(d={})[f]=s["scroll"+t]*c,d[h]=u*c,xe(l).css(d)}}e=p.getEl("body"),m=e.scrollWidth>e.clientWidth,g=e.scrollHeight>e.clientHeight,t("h","Left","Width","contentW",m,"Height"),t("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function e(s,a,l,u,c){var d,e=p._id+"-scroll"+s,t=p.classPrefix;xe(p.getEl()).append('<div id="'+e+'" class="'+t+"scrollbar "+t+"scrollbar-"+s+'"><div id="'+e+'t" class="'+t+'scrollbar-thumb"></div></div>'),p.draghelper=new dt(e+"t",{start:function(){d=p.getEl("body")["scroll"+a],xe("#"+e).addClass(t+"active")},drag:function(e){var t,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,t=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+e["delta"+u]/t},stop:function(){xe("#"+e).removeClass(t+"active")}})}p.classes.add("scroll"),e("v","Top","Height","Y","Width"),e("h","Left","Width","X","Height")}(),p.on("wheel",function(e){var t=p.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),xe(p.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(r){var e=_e.getViewPort().y;function t(e,t){for(var n,i=0;i<yt.length;i++)if(yt[i]!==r)for(n=yt[i].parent();n&&(n=n.parent());)n===r&&yt[i].fixed(e).moveBy(0,t).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>e&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),t(!1,r._autoFixY-e)):(r._autoFixY=r.layoutRect().y,r._autoFixY<e&&(r.fixed(!0).layoutRect({y:0}).repaint(),t(!0,e-r._autoFixY))))}function Ct(e,t){var n,i,r=Et.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),Et.currentZIndex=r}var Et=vt.extend({Mixins:[Se,bt],init:function(e){var i=this;i._super(e),(i._eventsRoot=i).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,Et.hideAll())},xe(window).on("resize",mt)}}(),yt.push(i)),e.autofix&&(ht||(ht=function(){var e;for(e=yt.length;e--;)Rt(yt[e])},xe(window).on("scroll",ht)),i.on("move",function(){Rt(this)})),i.on("postrender show",function(e){if(e.control===i){var t,n=i.classPrefix;i.modal&&!gt&&((t=xe("#"+n+"modal-block",i.getContainerElm()))[0]||(t=xe('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),u.setTimeout(function(){t.addClass(n+"in"),xe(i.getEl()).addClass(n+"in")}),gt=!0),Ct(!0,i)}}),i.on("show",function(){i.parents().each(function(e){if(e.state.get("fixed"))return i.fixed(!0),!1})}),e.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",e.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._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 kt(this),Ct(!1,this),this._super()},hideAll:function(){Et.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Ct(!1,this)),this},remove:function(){kt(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function kt(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)}Et.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(s,n,e){var a,i,l=v.DOM,t=s.getParam("fixed_toolbar_container");t&&(i=l.select(t)[0]);var r=function(){if(a&&a.moveRel&&a.visible()&&!a._fixed){var e=s.selection.getScrollContainer(),t=s.getBody(),n=0,i=0;if(e){var r=l.getPos(t),o=l.getPos(e);n=Math.max(0,o.x-r.x),i=Math.max(0,o.y-r.y)}a.fixed(!1).moveRel(t,s.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,i)}},o=function(){a&&(a.show(),r(),l.addClass(s.getBody(),"mce-edit-focus"))},u=function(){a&&(a.hide(),Et.hideAll(),l.removeClass(s.getBody(),"mce-edit-focus"))},c=function(){var e,t;a?a.visible()||o():(a=n.panel=b.create({type:i?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:(e=i,t=s,!(!e||t.settings.ui_container)),border:1,items:[!1===d(s)?null:{type:"menubar",border:"0 0 1 0",items:oe(s)},L(s,f(s))]}),O.setUiContainer(s,a),_(s),i?a.renderTo(i).reflow():a.renderTo().reflow(),R(s,a),o(),V(s),s.on("nodeChange",r),s.on("ResizeWindow",r),s.on("activate",o),s.on("deactivate",u),s.nodeChanged())};return s.settings.content_editable=!0,s.on("focus",function(){!1===g(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,c,c):c()}),s.on("blur hide",u),s.on("remove",function(){a&&(a.remove(),a=null)}),!1===g(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,pe(s)):pe(s)(),{}};function St(i,r){var o,s,a=this,l=ot.classPrefix;a.show=function(e,t){function n(){o&&(xe(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),t&&t())}return a.hide(),o=!0,e?s=u.setTimeout(n,e):n(),a},a.hide=function(){var e=i.lastChild;return u.clearTimeout(s),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,a}}var Tt=function(e,t){var n;e.on("ProgressState",function(e){n=n||new St(t.panel.getEl("body")),e.state?n.show(e.time):n.hide()})},Mt=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):h.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")?Ht(e,t,n):ye(e,t,n)},Nt=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 t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._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}}),Pt=ot.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==Pt.tooltips&&(r.on("mouseenter",function(e){var t=r.tooltip().moveTo(-65535);if(e.control===r){var n=t.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===n),t.classes.toggle("tooltip-nw","bc-tl"===n),t.classes.toggle("tooltip-ne","bc-tr"===n),t.moveRel(r.getEl(),n)}else t.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new Nt({type:"tooltip"}),O.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 t=this;function n(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function i(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(e){n(e.value)}),t.state.on("change:active",function(e){i(e.value)}),t.state.get("disabled")&&n(!0),t.state.get("active")&&i(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Wt=Pt.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 t=this;function n(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(e){n(e.value)}),n(t.state.get("value")),t._super()}}),Dt=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},Ot=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||0<e.timeout)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new Wt),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 u.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),Dt(e,e.state.get("text"))},100),e._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,Dt(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){Dt(t,t.state.get("text"))})),t._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 At(o){var s=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(e,t){var n,i=w.extend(e,{maxWidth:(n=s(o),_e.getSize(n).width)}),r=new Ot(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),t()},i.timeout)),r.on("close",function(){t()}),r.renderTo(),r},close:function(e){e.close()},reposition:function(e){G(e,function(e){e.moveTo(0,0)}),function(n){if(0<n.length){var e=n.slice(0,1)[0],t=s(o);e.moveRel(t,"tc-tc"),G(n,function(e,t){0<t&&e.moveRel(n[t-1].getEl(),"bc-tc")})}}(e)},getArgs:function(e){return e.args}}}var Bt=[],Lt="";function zt(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 It(e,t){(function(){for(var e=0;e<Bt.length;e++)if(Bt[e]._fullscreen)return!0;return!1})()&&!1===t&&xe([document.documentElement,document.body]).removeClass(e+"fullscreen")}var Ft=Et.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 n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),e.buttons&&(n.statusbar=new vt({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){var t=n.classPrefix+"close";(_e.hasClass(e.target,t)||_e.hasClass(e.target.parentNode,t))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(e){e.control===n&&Et.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._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 n,t,i=this,r=document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(xe(window).on("resize",function(){var e;if(i._fullscreen)if(n)i._timer||(i._timer=u.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 t=_e.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),50<(new Date).getTime()-e&&(n=!0)}}),t=i.layoutRect(),i._fullscreen=e){i._initial={x:t.x,y:t.y,w:t.w,h:t.h},i.borderBox=Ne("0"),i.getEl("head").style.display="none",t.deltaH-=t.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=Ne(i.settings.border),i.getEl("head").style.display="",t.deltaH+=t.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 t,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new dt(n._id+"-dragh",{start:function(){t={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(e){n.moveTo(t.x+e.deltaX,t.y+e.deltaY)}}),n.on("submit",function(e){e.isDefaultPrevented()||n.close()}),Bt.push(n),zt(!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(),It(t.classPrefix,!1),e=Bt.length;e--;)Bt[e]===t&&Bt.splice(e,1);zt(0<Bt.length)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});!function(){if(!de.desktop){var n={w:window.innerWidth,h:window.innerHeight};u.setInterval(function(){var e=window.innerWidth,t=window.innerHeight;n.w===e&&n.h===t||(n={w:e,h:t},xe(window).trigger("resize"))},100)}xe(window).on("resize",function(){var e,t,n=_e.getWindowSize();for(e=0;e<Bt.length;e++)t=Bt[e].layoutRect(),Bt[e].moveTo(Bt[e].settings.x||Math.max(0,n.w/2-t.w/2),Bt[e].settings.y||Math.max(0,n.h/2-t.h/2))})}();var Ut,Vt,Yt,$t=Ft.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,i=e.callback||function(){};function n(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),i(t)}}}switch(e.buttons){case $t.OK_CANCEL:t=[n("Ok",!0,!0),n("Cancel",!1)];break;case $t.YES_NO:case $t.YES_NO_CANCEL:t=[n("Yes",1,!0),n("No",0)],e.buttons===$t.YES_NO_CANCEL&&t.push(n("Cancel",-1));break;default:t=[n("Ok",!0,!0)]}return new Ft({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(){i(!1)}}).renderTo(document.body).reflow()},alert:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,$t.msgBox(e)},confirm:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,e.buttons=$t.OK_CANCEL,$t.msgBox(e)}}}),qt=function(n){return{renderUI:function(e){return Mt(n,this,e)},resizeTo:function(e,t){return ue(n,e,t)},resizeBy:function(e,t){return ce(n,e,t)},getNotificationManagerImpl:function(){return At(n)},getWindowManagerImpl:function(){return{open:function(n,e,t){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Ft(n)).on("close",function(){t(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(e){var t=e.name();t in n.data&&e.value(n.data[t])})}),i.features=n||{},i.params=e||{},i=i.renderTo(document.body).reflow()},alert:function(e,t,n){var i;return(i=$t.alert(e,function(){t()})).on("close",function(){n(i)}),i},confirm:function(e,t,n){var i;return(i=$t.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}}}}},Xt=Te.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=w.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}}),jt=Xt.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)}}),Jt=Pt.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 o=this,n=o.$,i=o.classPrefix+"txt";function s(e){var t=n("span."+i,o.getEl());e?(t[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),t=n("span."+i,o.getEl())),t.html(o.encode(e))):t.remove(),o.classes.toggle("btn-has-text",!!e)}return o.state.on("change:text",function(e){s(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Gt=Jt.extend({init:function(e){e=w.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,t=_e.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),xe(t).on("change",function(e){var t=e.target.files;n.value=function(){return t.length?n.settings.multiple?t:t[0]:null},e.preventDefault(),t.length&&n.fire("change",e)}),xe(t).on("click",function(e){e.stopPropagation()}),xe(n.getEl("button")).on("click",function(e){e.stopPropagation(),t.click()}),n.getEl().appendChild(t)},remove:function(){xe(this.getEl("button")).off(),xe(this.getEl("input")).off(),this._super()}}),Kt=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>"}}),Zt=Pt.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 o=this;function t(e){o.classes.toggle("checked",e),o.aria("checked",e)}return o.state.on("change:text",function(e){o.getEl("al").firstChild.data=o.translate(e.value)}),o.state.on("change:checked change:value",function(e){o.fire("change"),t(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;if(void 0===t)return o.settings.icon;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r)}),o.state.get("checked")&&t(!0),o._super()}}),Qt=tinymce.util.Tools.resolve("tinymce.util.VK"),en=Pt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(e){var t=e.target,n=r.getEl();if(xe.contains(n,t)||t===n)for(;t&&t!==n;)t.id&&-1!==t.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),e.aria&&r.menu.items()[0].focus())),t=t.parentNode}),r.on("keydown",function(e){var t;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),r.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),r.fire("submit",{data:t.toJSON()}))}),r.on("keyup",function(e){if("INPUT"===e.target.nodeName){var t=r.state.get("value"),n=e.target.value;n!==t&&(r.state.set("value",n),r.fire("autocomplete",e))}}),r.on("mouseover",function(e){var t=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==e.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=t.text(n).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===i),t.classes.toggle("tooltip-nw","bc-tl"===i),t.classes.toggle("tooltip-ne","bc-tr"===i),t.moveRel(e.target,i)}})},statusLevel:function(e){return 0<arguments.length&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return 0<arguments.length&&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=b.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 t=this;return xe(this.getEl("inp")).on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)}),t._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,i){var r=this;if(0!==e.length){r.menu?r.menu.items().remove():r.menu=b.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),w.each(e,function(e){var t,n;r.menu.add({text:e.title,url:e.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(t=e.value,n=e.title,function(){r.fire("selectitem",{title:n,value:t})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var t=r.layoutRect().w;r.menu.layoutRect({w:t,minW:0,maxW:t}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(e){r.getEl("inp").value!==e.value&&(r.getEl("inp").value=e.value)}),r.state.on("change:disabled",function(e){r.getEl("inp").disabled=e.value}),r.state.on("change:statusLevel",function(e){var t=r.getEl("status"),n=r.classPrefix,i=e.value;_e.css(t,"display","none"===i?"none":""),_e.toggleClass(t,n+"i-checkmark","ok"===i),_e.toggleClass(t,n+"i-warning","warn"===i),_e.toggleClass(t,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),_e.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(e){r.menu&&r.menu.visible()&&(e.stopPropagation(),r.hideMenu())});var n=function(e,t){t&&0<t.items().length&&t.items().eq(e)[0].focus()};return r.on("keydown",function(e){var t=e.keyCode;"INPUT"===e.target.nodeName&&(t===Qt.DOWN?(e.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):t===Qt.UP&&(e.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){xe(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),tn=en.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 t=this;return t.state.on("change:value",function(e){t.state.get("rendered")&&t.repaintColor(e.value)}),t._super()}}),nn=Jt.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 Et(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","tc-bc","tc-br","tc-bl"]));t.panel.classes.toggle("start","l"===i.substr(-1)),t.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);t.panel.classes.toggle("bottom",!r),t.panel.classes.toggle("top",r),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()}}),rn=v.DOM,on=nn.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 t=this,n=t.settings.onclick;return t.on("click",function(e){e.aria&&"down"===e.aria.key||e.control!==t||rn.getParent(e.target,"."+t.classPrefix+"open")||(e.stopImmediatePropagation(),n.call(t,e))}),delete t.settings.onclick,t._super()}}),sn=tinymce.util.Tools.resolve("tinymce.util.Color"),an=Pt.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(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 c(e,t){var n=(360-e.h)/360;_e.css(r,{top:100*n+"%"}),t||_e.css(s,{left:e.s+"%",top:100-e.v+"%"}),o.style.background=sn({s:100,v:100,h:e.h}).toHex(),a.color().parse({s:e.s,v:e.v,h:e.h})}function e(e){var t;t=u(o,e),n.s=100*t.x,n.v=100*(1-t.y),c(n),a.fire("change")}function t(e){var t;t=u(i,e),(n=l.toHsv()).h=360*(1-t.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new dt(a._id+"-sv",{start:e,drag:e}),a._hdraghelper=new dt(a._id+"-h",{start:t,drag:t}),a._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=sn()),this._color},renderHtml:function(){var e,t=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return e='<div id="'+t+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var e,t,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",e=0,t=(i=s.split(",")).length-1;e<t;e++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/t+"%;"+n+i[e]+",endColorstr="+i[e+1]+");-ms-"+n+i[e]+",endColorstr="+i[e+1]+')"></div>';return r}()+'<div id="'+t+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+t+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+e+"</div>"}}),ln=Pt.extend({init:function(e){e=w.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 i=this,e=function(e){e.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(e){e.preventDefault()}),i.$el.on("dragenter",e),i.$el.on("dragleave",e),i.$el.on("drop",function(e){if(e.preventDefault(),!i.state.get("disabled")){var t=function(e){var t=i.settings.accept;if("string"!=typeof t)return e;var n=new RegExp("("+t.split(/\s*,\s*/).join("|")+")$","i");return w.grep(e,function(e){return n.test(e.name)})}(e.dataTransfer.files);i.value=function(){return t.length?i.settings.multiple?t:t[0]:null},t.length&&i.fire("change",e)}})},remove:function(){this.$el.off(),this._super()}}),un=Pt.extend({init:function(e){var n=this;e.delimiter||(e.delimiter="\xbb"),n._super(e),n.classes.add("path"),n.canFocus=!0,n.on("click",function(e){var t;(t=e.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[t],index:t})}),n.row(n.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 t=this;return t.state.on("change:row",function(e){t.innerHtml(t._getDataPathHtml(e.value))}),t._super()},_getDataPathHtml:function(e){var t,n,i=e||[],r="",o=this.classPrefix;for(t=0,n=i.length;t<n;t++)r+=(0<t?'<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}}),cn=un.extend({postRender:function(){var o=this,s=o.settings.editor;function a(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!==s.settings.elementpath&&(o.on("select",function(e){s.focus(),s.selection.select(this.row()[e.index].element),s.nodeChanged()}),s.on("nodeChange",function(e){for(var t=[],n=e.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||t.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(t)})),o._super()}}),dn=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>"}}),fn=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 i=this,e=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),e.each(function(e){var t,n=e.settings.label;n&&((t=new dn(w.extend({items:{type:"label",id:e._id+"-l",text:n,flex:0,forId:e._id,disabled:e.disabled()}},i.settings.formItemDefaults))).type="formitem",e.aria("labelledby",e._id+"-l"),"undefined"==typeof e.settings.flex&&(e.settings.flex=1),i.replace(e,t),t.add(e))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function e(){var e,t,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(e){var t=e.items()[0],n=t.getEl().clientWidth;i=i<n?n:i,r.push(t)}),t=n.settings.labelGap||0,e=r.length;e--;)r[e].settings.minWidth=i+t}n._super(),n.on("show",e),e()}}),hn=fn.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>"}}),mn=0,gn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:k(e)}},pn={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)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){var i=e.dom();return W.from(i.elementFromPoint(t,n)).map(gn)}},vn=(Node.ATTRIBUTE_NODE,Node.CDATA_SECTION_NODE,Node.COMMENT_NODE,Node.DOCUMENT_NODE),bn=(Node.DOCUMENT_TYPE_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE),yn=(Node.TEXT_NODE,Node.PROCESSING_INSTRUCTION_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE,"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 wn(i(1),i(2))}),xn=function(){return wn(0,0)},wn=function(e,t){return{major:e,minor:t}},_n={nu:wn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?xn():yn(e,n)},unknown:xn},Rn="Firefox",Cn=function(e,t){return function(){return t===e}},En=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Cn("Edge",t),isChrome:Cn("Chrome",t),isIE:Cn("IE",t),isOpera:Cn("Opera",t),isFirefox:Cn(Rn,t),isSafari:Cn("Safari",t)}},kn={unknown:function(){return En({current:undefined,version:_n.unknown()})},nu:En,edge:k("Edge"),chrome:k("Chrome"),ie:k("IE"),opera:k("Opera"),firefox:k(Rn),safari:k("Safari")},Hn="Windows",Sn="Android",Tn="Solaris",Mn="FreeBSD",Nn=function(e,t){return function(){return t===e}},Pn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Nn(Hn,t),isiOS:Nn("iOS",t),isAndroid:Nn(Sn,t),isOSX:Nn("OSX",t),isLinux:Nn("Linux",t),isSolaris:Nn(Tn,t),isFreeBSD:Nn(Mn,t)}},Wn={unknown:function(){return Pn({current:undefined,version:_n.unknown()})},nu:Pn,windows:k(Hn),ios:k("iOS"),android:k(Sn),linux:k("Linux"),osx:k("OSX"),solaris:k(Tn),freebsd:k(Mn)},Dn=function(e,t){var n=String(t).toLowerCase();return function(e,t){for(var n=0,i=e.length;n<i;n++){var r=e[n];if(t(r,n,e))return W.some(r)}return W.none()}(e,function(e){return e.search(n)})},On=function(e,n){return Dn(e,n).map(function(e){var t=_n.detect(e.versionRegexes,n);return{current:e.name,version:t}})},An=function(e,n){return Dn(e,n).map(function(e){var t=_n.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Bn=function(e,t){return-1!==e.indexOf(t)},Ln=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,zn=function(t){return function(e){return Bn(e,t)}},In=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Bn(e,"edge/")&&Bn(e,"chrome")&&Bn(e,"safari")&&Bn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ln],search:function(e){return Bn(e,"chrome")&&!Bn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Bn(e,"msie")||Bn(e,"trident")}},{name:"Opera",versionRegexes:[Ln,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:zn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:zn("firefox")},{name:"Safari",versionRegexes:[Ln,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Bn(e,"safari")||Bn(e,"mobile/"))&&Bn(e,"applewebkit")}}],Fn=[{name:"Windows",search:zn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Bn(e,"iphone")||Bn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:zn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:zn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:zn("linux"),versionRegexes:[]},{name:"Solaris",search:zn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:zn("freebsd"),versionRegexes:[]}],Un={browsers:k(In),oses:k(Fn)},Vn=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=Un.browsers(),h=Un.oses(),m=On(f,e).fold(kn.unknown,kn.nu),g=An(h,e).fold(Wn.unknown,Wn.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(r),isiPhone:k(o),isTablet:k(l),isPhone:k(c),isTouch:k(u),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:k(d)})}},Yn=(Yt=!(Ut=function(){var e=navigator.userAgent;return Vn(e)}),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Yt||(Yt=!0,Vt=Ut.apply(null,e)),Vt}),$n=bn,qn=vn,Xn=function(e){return e.nodeType!==$n&&e.nodeType!==qn||0===e.childElementCount},jn=(Yn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),w.trim),Jn=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}},Gn=Jn("true"),Kn=Jn("false"),Zn=function(e,t,n,i,r){return{type:e,title:t,url:n,level:i,attach:r}},Qn=function(e){return e.innerText||e.textContent},ei=function(e){return e.id?e.id:(t="h",n=(new Date).getTime(),t+"_"+Math.floor(1e9*Math.random())+ ++mn+String(n));var t,n},ti=function(e){return(t=e)&&"A"===t.nodeName&&(t.id||t.name)&&ii(e);var t},ni=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},ii=function(e){return function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return Gn(e)}return!1}(e)&&!Kn(e)},ri=function(e){return ni(e)&&ii(e)},oi=function(e){var t,n=ei(e);return Zn("header",Qn(e),"#"+n,ni(t=e)?parseInt(t.nodeName.substr(1),10):0,function(){e.id=n})},si=function(e){var t=e.id||e.name,n=Qn(e);return Zn("anchor",n||"#"+t,"#"+t,0,E)},ai=function(e){var t,n,i,r,o,s;return t="h1,h2,h3,h4,h5,h6,a:not([href])",n=e,J((Yn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),i=pn.fromDom(n),r=t,s=(o=i)===undefined?document:o.dom(),Xn(s)?[]:J(s.querySelectorAll(r),pn.fromDom)),function(e){return e.dom()})},li=function(e){return 0<jn(e.title).length},ui=function(e){var t,n=ai(e);return K((t=n,J(K(t,ri),oi)).concat(J(K(n,ti),si)),li)},ci={},di=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},fi=function(e,t){return{title:e,value:{title:e,url:t,attach:E}}},hi=function(e,t,n){var i=t in e?e[t]:n;return!1===i?null:i},mi=function(e,i,r,t){var n,o,s,a,l,u,c={title:"-"},d=function(e){var t=e.hasOwnProperty(r)?e[r]:[],n=K(t,function(e){return t=e,!j(i,function(e){return e.url===t});var t});return w.map(n,function(e){return{title:e,value:{title:e,url:e,attach:E}}})},f=function(t){var e,n=K(i,function(e){return e.type===t});return e=n,w.map(e,di)};return!1===t.typeahead_urls?[]:"file"===r?(n=[pi(e,d(ci)),pi(e,f("header")),pi(e,(a=f("anchor"),l=hi(t,"anchor_top","#top"),u=hi(t,"anchor_bottom","#bottom"),null!==l&&a.unshift(fi("<top>",l)),null!==u&&a.push(fi("<bottom>",u)),a))],o=function(e,t){return 0===e.length||0===t.length?e.concat(t):e.concat(c,t)},s=[],G(n,function(e){s=o(s,e)}),s):pi(e,d(ci))},gi=function(e,t){var n,i,r,o=ci[t];/^https?/.test(e)&&(o?(n=o,i=e,r=X(n,i),-1===r?W.none():W.some(r)).isNone()&&(ci[t]=o.slice(0,5).concat(e)):ci[t]=[e])},pi=function(e,t){var n=e.toLowerCase(),i=w.grep(t,function(e){return-1!==e.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===e?[]:i},vi=function(o,e,n){var i=e.filepicker_validator_handler;i&&o.state.on("change:value",function(e){var t;0!==(t=e.value).length?i({url:t,type:n},function(e){var t,n,i,r=(n=(t=e).status,i=t.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},bi=en.extend({Statics:{clearHistory:function(){ci={}}},init:function(e){var t,n,i,r,o,s,a,l,u=this,c=window.tinymce?window.tinymce.activeEditor:h.activeEditor,d=c.settings,f=e.filetype;e.spellcheck=!1,(i=d.file_picker_types||d.file_browser_callback_types)&&(i=w.makeMap(i,/[, ]/)),i&&!i[f]||(!(n=d.file_picker_callback)||i&&!i[f]?!(n=d.file_browser_callback)||i&&!i[f]||(t=function(){n(u.getEl("inp").id,u.value(),f,window)}):t=function(){var e=u.fire("beforecall").meta;e=w.extend({filetype:f},e),n.call(c,function(e,t){u.value(e).fire("change",{meta:t})},u.value(),e)}),t&&(e.icon="browse",e.onaction=t),u._super(e),u.classes.add("filepicker"),r=u,o=d,s=c.getBody(),a=f,l=function(e){var t=ui(s),n=mi(e,t,a,o);r.showAutoComplete(n,e)},r.on("autocomplete",function(){l(r.value())}),r.on("selectitem",function(e){var t=e.value;r.value(t.url);var n,i=(n=t.title).raw?n.raw:n;"image"===a?r.fire("change",{meta:{alt:i,attach:t.attach}}):r.fire("change",{meta:{text:i,attach:t.attach}}),r.focus()}),r.on("click",function(e){0===r.value().length&&"INPUT"===e.target.nodeName&&l("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(e){e.isDefaultPrevented()||gi(r.value(),a)})}),vi(u,d,f)}}),yi=jt.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()})}}),xi=jt.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,E,k,H,S,T,M,N,P,W,D,O,A,B,L=[],z=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",E="maxH",H="innerH",k="top",S="deltaH",T="contentH",D="left",P="w",M="x",N="innerW",W="minW",O="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",E="maxW",H="innerW",k="left",S="deltaW",T="contentW",D="top",P="h",M="y",N="innerH",W="minH",O="bottom",A="deltaH",B="contentH"),d=r[H]-o[k]-o[k],w=c=0,t=0,n=i.length;t<n;t++)m=(h=i[t]).layoutRect(),d-=t<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[E]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[D]+m[W]+o[O])&&(w=p);if((y={})[R]=d<0?r[R]-d+r[S]:r[H]-d+r[S],y[W]=w+r[A],y[T]=r[H]-d,y[B]=w,y.minW=I(y.minW,r.maxW),y.minH=I(y.minH,r.maxH),y.minW=z(y.minW,r.startMinWidth),y.minH=z(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,t=0,n=L.length;t<n;t++)(v=(m=(h=L[t]).layoutRect())[E])<(p=m[R]+m.flex*b)?(d-=m[E]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[k],y={},0===c&&("end"===l?x=d+o[k]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[k])<0&&(x=o[k]):"justify"===l&&(x=o[k],u=Math.floor(d/(i.length-1)))),y[M]=o[D],t=0,n=i.length;t<n;t++)p=(m=(h=i[t]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[P]/2):"stretch"===a?(y[P]=z(m[W]||0,r[N]-o[D]-o[O]),y[M]=o[D]):"end"===a&&(y[M]=r[N]-m[P]-o.top),0<m.flex&&(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())}}}),wi=Xt.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}}),_i=function(e,t){return n=t,r=(i=e)===undefined?document:i.dom(),Xn(r)?W.none():W.from(r.querySelector(n)).map(pn.fromDom);var n,i,r},Ri=function(e,t){return function(){e.execCommand("mceToggleFormat",!1,t)}},Ci=function(e,t,n){var i=function(e){n(e,t)};e.formatter?e.formatter.formatChanged(t,i):e.on("init",function(){e.formatter.formatChanged(t,i)})},Ei=function(e,n){return function(t){Ci(e,n,function(e){t.control.active(e)})}},ki=function(i){var t=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",e=[{text:"Left",icon:"alignleft",onclick:Ri(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:Ri(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:Ri(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:Ri(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:e}),i.addButton("align",{type:"menubutton",icon:r,menu:e,onShowMenu:function(e){var n=e.control.menu;w.each(t,function(t,e){n.items().eq(e).each(function(e){return e.active(i.formatter.match(t))})})},onPostRender:function(e){var n=e.control;w.each(t,function(t,e){Ci(i,t,function(e){n.icon(r),e&&n.icon(t)})})}}),w.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(e,t){i.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Ei(i,t)})})},Hi=function(e){return e?e.split(",")[0]:""},Si=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(e){var t,n,i,r,o=l.queryCommandValue("FontName"),s=(t=u,r=(n=o)?n.toLowerCase():"",w.each(t,function(e){e.value.toLowerCase()===r&&(i=e.value)}),w.each(t,function(e){i||Hi(e.value).toLowerCase()!==Hi(r).toLowerCase()||(i=e.value)}),i);a.value(s||null),!s&&o&&a.text(Hi(o))})}},Ti=function(n){n.addButton("fontselect",function(){var e,t=(e=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(n.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"),w.map(e,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:t,fixedWidth:!0,onPostRender:Si(n,t),onselect:function(e){e.control.settings.value&&n.execCommand("FontName",!1,e.control.settings.value)}}})},Mi=function(e){Ti(e)},Ni=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},Pi=function(e,t,n){var i;return w.each(e,function(e){e.value===n?i=n:e.value===t&&(i=t)}),i},Wi=function(n){n.addButton("fontsizeselect",function(){var e,s,a,t=(e=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",w.map(e.split(" "),function(e){var t=e,n=e,i=e.split("=");return 1<i.length&&(t=i[0],n=i[1]),{text:t,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:(s=n,a=t,function(){var o=this;s.on("init nodeChange",function(e){var t,n,i,r;if(t=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=Ni(t,i),r=Pi(a,n,t);o.value(r||null),r||o.text(n)})}),onclick:function(e){e.control.settings.value&&n.execCommand("FontSize",!1,e.control.settings.value)}}})},Di=function(e){Wi(e)},Oi=function(n,e){var i=e.length;return w.each(e,function(e){e.menu&&(e.hidden=0===Oi(n,e.menu));var t=e.format;t&&(e.hidden=!n.formatter.canApply(t)),e.hidden&&i--}),i},Ai=function(n,e){var i=e.items().length;return e.items().each(function(e){e.menu&&e.visible(0<Ai(n,e.menu)),!e.menu&&e.settings.menu&&e.visible(0<Oi(n,e.settings.menu));var t=e.settings.format;t&&e.visible(n.formatter.canApply(t)),e.visible()||i--}),i},Bi=function(e){var i,r,o,t,s,n,a,l,u=(r=0,o=[],t=[{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"}]}],s=function(e){var i=[];if(e)return w.each(e,function(e){var t={text:e.title,icon:e.icon};if(e.items)t.menu=s(e.items);else{var n=e.format||"custom"+r++;e.format||(e.name=n,o.push(e)),t.format=n,t.cmd=e.cmd}i.push(t)}),i},(i=e).on("init",function(){w.each(o,function(e){i.formatter.register(e.name,e)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(t.concat(i.settings.style_formats)):s(t):s(i.settings.style_formats||t),onPostRender:function(e){i.fire("renderFormatsMenu",{control:e.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var e,t;(e=n.settings.format)&&(n.disabled(!i.formatter.canApply(e)),n.active(i.formatter.match(e))),(t=n.settings.cmd)&&n.active(i.queryCommandState(t))})},onclick:function(){this.settings.format&&Ri(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,e.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=e).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&Ai(a,this.menu)}})},Li=function(n,e){return function(){var r,o,s,t=[];return w.each(e,function(e){t.push({text:e[0],value:e[1],textStyle:function(){return n.formatter.getCssText(e[1])}})}),{type:"listbox",text:e[0][0],values:t,fixedWidth:!0,onselect:function(e){if(e.control){var t=e.control.value();Ri(n,t)()}},onPostRender:(r=n,o=t,function(){var t=this;r.on("nodeChange",function(e){var n=r.formatter,i=null;w.each(e.parents,function(t){if(w.each(o,function(e){if(s?n.matchNode(t,s,{value:e.value})&&(i=e.value):n.matchNode(t,e.value)&&(i=e.value),i)return!1}),i)return!1}),t.value(i)})})}}},zi=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,w.map(n,function(e){return{text:e[0],onclick:Ri(t,e[1]),textStyle:function(){return t.formatter.getCssText(e[1])}}}))}),e.addButton("formatselect",Li(e,i))},Ii=function(t,e){var n,i;if("string"==typeof e)i=e.split(" ");else if(w.isArray(e))return 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);ee.apply(t,e[n])}return t}(w.map(e,function(e){return Ii(t,e)}));return n=w.grep(i,function(e){return"|"===e||e in t.menuItems}),w.map(n,function(e){return"|"===e?{text:"-"}:t.menuItems[e]})},Fi=function(e){return e&&"-"===e.text},Ui=function(e){var t=K(e,function(e,t,n){return!Fi(e)||!Fi(n[t-1])});return K(t,function(e,t,n){return!Fi(e)||0<t&&t<n.length-1})},Vi=function(e){var t,n,i,r,o=e.settings.insert_button_items;return Ui(o?Ii(e,o):(t=e,n="insert",i=[{text:"-"}],r=w.grep(t.menuItems,function(e){return e.context===n}),w.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))},Yi=function(e){var t;(t=e).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Vi(t)),this.menu.renderNew()}})},$i=function(e){var n,i,r;n=e,w.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(e,t){n.addButton(t,{active:!1,tooltip:e,onPostRender:Ei(n,t),onclick:Ri(n,t)})}),i=e,w.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){i.addButton(t,{tooltip:e[0],cmd:e[1]})}),r=e,w.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(e,t){r.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Ei(r,t)})})},qi=function(e){var n;$i(e),n=e,w.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,t){n.addMenuItem(t,{text:e[0],icon:t,shortcut:e[2],cmd:e[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:Ri(n,"code")})},Xi=function(n,i){return function(){var e=this,t=function(){var e="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[e]()};e.disabled(!t()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){e.disabled(n.readonly||!t())})}},ji=function(e){var t,n;(t=e).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:Xi(t,"undo"),cmd:"undo"}),t.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:Xi(t,"redo"),cmd:"redo"}),(n=e).addButton("undo",{tooltip:"Undo",onPostRender:Xi(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:Xi(n,"redo"),cmd:"redo"})},Ji=function(e){var t,n;(t=e).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=t,function(){var t=this;n.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Gi={setup:function(e){var t;e.rtl&&(ot.rtl=!0),e.on("mousedown progressstate",function(){Et.hideAll()}),(t=e).settings.ui_container&&(de.container=_i(pn.fromDom(document.body),t.settings.ui_container).fold(k(null),function(e){return e.dom()})),Pt.tooltips=!de.iOS,ot.translate=function(e){return h.translate(e)},zi(e),ki(e),qi(e),ji(e),Di(e),Mi(e),Bi(e),Ji(e),Yi(e)}},Ki=jt.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,E,k,H,S,T=[],M=[];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++)T.push(0);for(f=0;f<n;f++)M.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,E=u.minH,T[d]=C>T[d]?C:T[d],M[f]=E>M[f]?E:M[f];for(k=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=T[d]+(0<d?b:0),k-=(0<d?b:0)+T[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[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 N;o.autoResize&&((l=e.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===t.packV?0:0<H?Math.floor(H/n):0;var P=0,W=t.flexWidths;if(W)for(d=0;d<W.length;d++)P+=W[d];else P=i;var D=k/P;for(d=0;d<i;d++)T[d]+=W?W[d]*D:D;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,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(T[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 O=e.parent();O&&(O._lastRect=null,O.recalc())}}}),Zi=Pt.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()):u.setTimeout(function(){n.html(e)}),this}}),Qi=Pt.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 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()}}),er=Pt.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 t=this;return t.state.on("change:text",function(e){t.innerHtml(t.encode(e.value)),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),tr=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()}}),nr=tr.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),ir=Jt.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=b.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){"hide"===e.type&&e.control.parent()===n&&n.classes.remove("opened-under"),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"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&r<i.y+i.h&&n.classes.add("opened-under"),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 nr?"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 r=this;return r.on("click",function(e){e.control===r&&function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}(e.target,r.getEl())&&(r.focus(),r.showMenu(!e.aria),e.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(e){var t,n=e.control,i=r.parent();n&&i&&n instanceof ir&&n.parent()===i&&(i.items().filter("MenuButton").each(function(e){e.hideMenu&&e!==n&&(e.menu&&e.menu.visible()&&(t=!0),e.hideMenu())}),t&&(n.focus(),n.showMenu()))}),r._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()}}),rr=Et.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]=w.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 t,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new St(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=t=(new Date).getTime(),n.settings.itemsFactory(function(e){0!==e.length?n.requestTime===t&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(e),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(e){var t=e.settings;if(t.icon||t.image||t.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(e){e.control===n&&("show"===e.type?u.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),or=ir.extend({init:function(i){var t,r,o,n,s=this;s._super(i),i=s.settings,s._values=t=i.values,t&&("undefined"!=typeof i.value&&function e(t){for(var n=0;n<t.length;n++){if(r=t[n].selected||i.value===t[n].value)return o=o||t[n].text,s.state.set("value",t[n].value),!0;if(t[n].menu&&e(t[n].menu))return!0}}(t),!r&&0<t.length&&(o=t[0].text,s.state.set("value",t[0].value)),s.state.set("menu",t)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(e){var t=e.control;n&&(e.lastControl=n),i.multiple?t.active(!t.active()):s.value(e.control.value()),n=t})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function t(e){return j(e,function(e){return e.menu?t(e.menu):e.value===n})}(this.settings.values)?null===n&&this.state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function(e){var t,n;t=e.control,n=i.value(),t instanceof rr&&t.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}),i.state.on("change:value",function(t){var n=function e(t,n){var i;if(t)for(var r=0;r<t.length;r++){if(t[r].value===n)return t[r];if(t[r].menu&&(i=e(t[r].menu,n)))return i}}(i.state.get("menu"),t.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),sr=Pt.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 t,n=this,e=n.settings,i=n.parent();if(i.items().each(function(e){e!==n&&e.hideMenu()}),e.menu){(t=n.menu)?t.show():((t=e.menu).length?t={type:"menu",items:t}:t.type=t.type||"menu",i.settings.itemDefaults&&(t.itemDefaults=i.settings.itemDefaults),(t=n.menu=b.create(t).parent(n).renderTo()).reflow(),t.on("cancel",function(e){e.stopPropagation(),n.focus(),t.hide()}),t.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),t.on("hide",function(e){e.control===t&&n.classes.remove("selected")}),t.submenu=!0),t._parentMenu=i,t.classes.add("menu-sub");var r=t.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);t.moveRel(n.getEl(),r),r="menu-sub-"+(t.rel=r),t.classes.remove(t._lastRel).add(r),t._lastRel=r,n.classes.add("selected"),n.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 t=this,n=t.settings,e=n.textStyle;if("function"==typeof e&&(e=e.call(this)),e){var i=t.getEl("text");i&&(i.setAttribute("style",e),t._textStyle=e)}return t.on("mouseenter click",function(e){e.control===t&&(n.menu||"click"!==e.type?(t.showMenu(),e.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(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()}}),ar=Zt.extend({Defaults:{classes:"radio",role:"radio"}}),lr=Pt.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 t=this;t._super(),t.resizeDragHelper=new dt(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 ur(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}var cr=Pt.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var n=this;n._super(e),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.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=ur(t._options),t.size&&(n=' size = "'+t.size+'"'),'<select id="'+t._id+'" class="'+t.classes+'"'+n+">"+e+"</select>"},bindStates:function(){var t=this;return t.state.on("change:options",function(e){t.getEl().innerHTML=ur(e.value)}),t._super()}});function dr(e,t,n){return e<t&&(e=t),n<e&&(e=n),e}function fr(e,t,n){e.setAttribute("aria-"+t,n)}function hr(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",fr(s,"valuenow",t),fr(s,"valuetext",""+e.settings.previewFilter(t)),fr(s,"valuemin",e._minValue),fr(s,"valuemax",e._maxValue)}var mr=Pt.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=q(e.minValue)?e.minValue:0,t._maxValue=q(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(o,s){function t(e){var t,n,i,r;t=dr(t=(((t=m.value())+(r=n=o))/((i=s)-r)+.05*e)*(i-n)-n,o,s),m.value(t),m.fire("dragstart",{value:t}),m.fire("drag",{value:t}),m.fire("dragend",{value:t})}m.on("keydown",function(e){switch(e.keyCode){case 37:case 38:t(-1);break;case 39:case 40:t(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=dr(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(),hr(this,this.value())},bindStates:function(){var t=this;return t.state.on("change:value",function(e){hr(t,e.value)}),t._super()}}),gr=Pt.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),pr=ir.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 n=this.settings.onclick;return this.on("click",function(e){var t=e.target;if(e.control===this)for(;t;){if(e.aria&&"down"!==e.aria.key||"BUTTON"===t.nodeName&&-1===t.className.indexOf("open"))return e.stopImmediatePropagation(),void(n&&n.call(this,e));t=t.parentNode}}),delete this.settings.onclick,this._super()}}),vr=wi.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),br=vt.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var e;this.activeTabId&&(e=this.getEl(this.activeTabId),xe(e).removeClass(this.classPrefix+"active"),e.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(e=this.getEl("t"+n)).setAttribute("aria-selected","true"),xe(e).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(e,t){n!==t&&e.hide()})},renderHtml:function(){var i=this,e=i._layout,r="",o=i.classPrefix;return i.preRender(),e.preRender(i),i.items().each(function(e,t){var n=i._id+"-t"+t;e.aria("role","tabpanel"),e.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+e._id+'" aria-selected="false" tabIndex="-1">'+i.encode(e.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+e.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(e){var t=e.target.parentNode;if(t&&t.id===i._id+"-head")for(var n=t.childNodes.length;n--;)t.childNodes[n]===e.target&&i.activateTab(n)})},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}}),yr=Pt.extend({init:function(e){var n=this;n._super(e),n.classes.add("textbox"),e.multiline?n.classes.add("multiline"):(n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))}),n.on("keyup",function(e){n.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 t,e,n=this,i=n.settings;return t={id:n._id,hidefocus:"1"},w.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=_e.create(i.multiline?"textarea":"input",t)).value=n.state.get("value"),e.className=n.classes.toString(),e.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 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()}}),xr=function(){return{Selector:Fe,Collection:Ye,ReflowQueue:Ze,Control:ot,Factory:b,KeyboardNavigation:at,Container:ut,DragHelper:dt,Scrollable:pt,Panel:vt,Movable:Se,Resizable:bt,FloatPanel:Et,Window:Ft,MessageBox:$t,Tooltip:Nt,Widget:Pt,Progress:Wt,Notification:Ot,Layout:Xt,AbsoluteLayout:jt,Button:Jt,ButtonGroup:Kt,Checkbox:Zt,ComboBox:en,ColorBox:tn,PanelButton:nn,ColorButton:on,ColorPicker:an,Path:un,ElementPath:cn,FormItem:dn,Form:fn,FieldSet:hn,FilePicker:bi,FitLayout:yi,FlexLayout:xi,FlowLayout:wi,FormatControls:Gi,GridLayout:Ki,Iframe:Zi,InfoBox:Qi,Label:er,Toolbar:tr,MenuBar:nr,MenuButton:ir,MenuItem:sr,Throbber:St,Menu:rr,ListBox:or,Radio:ar,ResizeHandle:lr,SelectBox:cr,Slider:mr,Spacer:gr,SplitButton:pr,StackLayout:vr,TabPanel:br,TextBox:yr,DropZone:ln,BrowseButton:Gt}},wr=function(n){n.ui?w.each(xr(),function(e,t){n.ui[t]=e}):n.ui=xr()};w.each(xr(),function(e,t){b.add(t,e)}),wr(window.tinymce?window.tinymce:{}),o.add("modern",function(e){return Gi.setup(e),qt(e)})}();
\ No newline at end of file
Index: src/wp-includes/version.php
===================================================================
--- src/wp-includes/version.php	(revision 44695)
+++ src/wp-includes/version.php	(working copy)
@@ -27,7 +27,7 @@
  *
  * @global string $tinymce_version
  */
-$tinymce_version = '4800-20180716';
+$tinymce_version = '4920-20181217';
 
 /**
  * Holds the required PHP version
