2017-01-11 17:53:30 +01:00
// 4.5.2 (2017-01-04)
! function ( e , t ) { "use strict" ; function n ( e , t ) { for ( var n , r = [ ] , i = 0 ; i < e . length ; ++ i ) { if ( n = s [ e [ i ] ] || o ( e [ i ] ) , ! n ) throw "module definition dependecy not found: " + e [ i ] ; r . push ( n ) } t . apply ( null , r ) } function r ( e , r , i ) { if ( "string" != typeof e ) throw "invalid module definition, module id must be defined and be a string" ; if ( r === t ) throw "invalid module definition, dependencies must be specified" ; if ( i === t ) throw "invalid module definition, definition function must be specified" ; n ( r , function ( ) { s [ e ] = i . apply ( null , arguments ) } ) } function i ( e ) { return ! ! s [ e ] } function o ( t ) { for ( var n = e , r = t . split ( /[.\/]/ ) , i = 0 ; i < r . length ; ++ i ) { if ( ! n [ r [ i ] ] ) return ; n = n [ r [ i ] ] } return n } function a ( n ) { var r , i , o , a , l ; for ( r = 0 ; r < n . length ; r ++ ) { i = e , o = n [ r ] , a = o . split ( /[.\/]/ ) ; for ( var u = 0 ; u < a . length - 1 ; ++ u ) i [ a [ u ] ] === t && ( i [ a [ u ] ] = { } ) , i = i [ a [ u ] ] ; i [ a [ a . length - 1 ] ] = s [ o ] } if ( e . AMDLC _TESTS ) { l = e . privateModules || { } ; for ( o in s ) l [ o ] = s [ o ] ; for ( r = 0 ; r < n . length ; r ++ ) delete l [ n [ r ] ] ; e . privateModules = l } } var s = { } , l = "tinymce/geom/Rect" , u = "tinymce/util/Promise" , c = "tinymce/util/Delay" , d = "tinymce/Env" , f = "tinymce/dom/EventUtils" , p = "tinymce/dom/Sizzle" , h = "tinymce/util/Arr" , m = "tinymce/util/Tools" , g = "tinymce/dom/DomQuery" , v = "tinymce/html/Styles" , y = "tinymce/dom/TreeWalker" , b = "tinymce/dom/Range" , C = "tinymce/html/Entities" , x = "tinymce/dom/StyleSheetLoader" , w = "tinymce/dom/DOMUtils" , E = "tinymce/dom/ScriptLoader" , N = "tinymce/AddOnManager" , _ = "tinymce/dom/NodeType" , S = "tinymce/text/Zwsp" , k = "tinymce/caret/CaretContainer" , T = "tinymce/dom/RangeUtils" , R = "tinymce/NodeChange" , A = "tinymce/html/Node" , B = "tinymce/html/Schema" , D = "tinymce/html/SaxParser" , L = "tinymce/html/DomParser" , M = "tinymce/html/Writer" , P = "tinymce/html/Serializer" , O = "tinymce/dom/Serializer" , H = "tinymce/dom/TridentSelection" , I = "tinymce/util/VK" , F = "tinymce/dom/ControlSelection" , z = "tinymce/util/Fun" , U = "tinymce/caret/CaretCandidate" , W = "tinymce/geom/ClientRect" , V = "tinymce/text/ExtendingChar" , $ = "tinymce/caret/CaretPosition" , q = "tinymce/caret/CaretBookmark" , j = "tinymce/dom/BookmarkManager" , Y = "tinymce/dom/Selection" , X = "tinymce/dom/ElementUtils" , K = "tinymce/fmt/Preview" , G = "tinymce/fmt/Hooks" , J = "tinymce/Formatter" , Q = "tinymce/undo/Diff" , Z = "tinymce/undo/Fragments" , ee = "tinymce/undo/Levels" , te = "tinymce/UndoManager" , ne = "tinymce/EnterKey" , re = "tinymce/ForceBlocks" , ie = "tinymce/caret/CaretUtils" , oe = "tinymce/caret/CaretWalker" , ae = "tinymce/InsertList" , se = "tinymce/InsertContent" , le = "tinymce/EditorCommands" , ue = "tinymce/util/URI" , ce = "tinymce/util/Class" , de = "tinymce/util/EventDispatcher" , fe = "tinymce/data/Binding" , pe = "tinymce/util/Observable" , he = "tinymce/data/ObservableObject" , me = "tinymce/ui/Selector" , ge = "tinymce/ui/Collection" , ve = "tinymce/ui/DomUtils" , ye = "tinymce/ui/BoxUtils" , be = "tinymce/ui/ClassList" , Ce = "tinymce/ui/ReflowQueue" , xe = "tinymce/ui/Control" , we = "tinymce/ui/Factory" , Ee = "tinymce/ui/KeyboardNavigation" , Ne = "tinymce/ui/Container" , _e = "tinymce/ui/DragHelper" , Se = "tinymce/ui/Scrollable" , ke = "tinymce/ui/Panel" , Te = "tinymce/ui/Movable" , Re = "tinymce/ui/Resizable" , Ae = "tinymce/ui/FloatPanel" , Be = "tinymce/ui/Window" , De = "tinymce/ui/MessageBox" , Le = "tinymce/WindowManager" , Me = "tinymce/ui/Tooltip" , Pe = "tinymce/ui/Widget" , Oe = "tinymce/ui/Progress" , He = "tinymce/ui/Notification" , Ie = "tinymce/NotificationManager" , Fe = "tinymce/dom/NodePath" , ze = "tinymce/util/Quirks" , Ue = "tinymce/EditorObservable" , We = "tinymce/Mode" , Ve = "tinymce/Shortcuts" , $e = "tinymce/file/Uploader" , qe = "tinymce/file/Conversions" , je = "tinymce/file/ImageScanner" , Ye = "tinymce/file/BlobCache" , Xe = "tinymce/file/UploadStatus" , Ke = "tinymce/ErrorReporter" , Ge = "tinymce/EditorUpload" , Je = "tinymce/caret/FakeCaret" , Qe = "tinymce/dom/Dimensions" , Ze = "tinymce/caret/LineWalker" , et = "tinymce/caret/LineUtils" , tt = "tinymce/dom/MousePosition" , nt = "tinymce/DragDropOverrides" , rt = "tinymce/SelectionOverrides" , it = "tinymce/util/Uuid" , ot = "tinymce/ui/Sidebar" , at = "tinymce/Editor" , st = "tinymce/util/I18n" , lt = "tinymce/FocusManager" , ut = "tinymce/EditorManager" , ct = "tinymce/LegacyInput" , dt = "tinymce/util/XHR" , ft = "tinymce/util/JSON" , pt = "tinymce/util/JSONRequest" , ht = "tinymce/util/JSONP" , mt = "tinymce/util/LocalStorage" , gt = "tinymce/Compat" , vt = "tinymce/ui/Layout" , yt = "tinymce/ui/AbsoluteLayout" , bt = "tinymce/ui/Button" , Ct = " tinymce / u
if ( n = n || [ ] , 1 === d . length ) { if ( o = d [ 0 ] = d [ 0 ] . slice ( 0 ) , o . length > 2 && "ID" === ( a = o [ 0 ] ) . type && x . getById && 9 === t . nodeType && M && w . relative [ o [ 1 ] . type ] ) { if ( t = ( w . find . ID ( a . matches [ 0 ] . replace ( Ce , xe ) , t ) || [ ] ) [ 0 ] , ! t ) return n ; u && ( t = t . parentNode ) , e = e . slice ( o . shift ( ) . value . length ) } for ( i = pe . needsContext . test ( e ) ? 0 : o . length ; i -- && ( a = o [ i ] , ! w . relative [ s = a . type ] ) ; ) if ( ( l = w . find [ s ] ) && ( r = l ( a . matches [ 0 ] . replace ( Ce , xe ) , ye . test ( o [ 0 ] . type ) && c ( t . parentNode ) || t ) ) ) { if ( o . splice ( i , 1 ) , e = r . length && f ( o ) , ! e ) return Z . apply ( n , r ) , n ; break } } return ( u || S ( e , d ) ) ( r , t , ! M , n , ye . test ( e ) && c ( t . parentNode ) || t ) , n } , x . sortStable = F . split ( "" ) . sort ( j ) . join ( "" ) === F , x . detectDuplicates = ! ! A , B ( ) , x . sortDetached = i ( function ( e ) { return 1 & e . compareDocumentPosition ( D . createElement ( "div" ) ) } ) , i ( function ( e ) { return e . innerHTML = "<a href='#'></a>" , "#" === e . firstChild . getAttribute ( "href" ) } ) || o ( "type|href|height|width" , function ( e , t , n ) { if ( ! n ) return e . getAttribute ( t , "type" === t . toLowerCase ( ) ? 1 : 2 ) } ) , x . attributes && i ( function ( e ) { return e . innerHTML = "<input/>" , e . firstChild . setAttribute ( "value" , "" ) , "" === e . firstChild . getAttribute ( "value" ) } ) || o ( "value" , function ( e , t , n ) { if ( ! n && "input" === e . nodeName . toLowerCase ( ) ) return e . defaultValue } ) , i ( function ( e ) { return null == e . getAttribute ( "disabled" ) } ) || o ( ne , function ( e , t , n ) { var r ; if ( ! n ) return e [ t ] === ! 0 ? t . toLowerCase ( ) : ( r = e . getAttributeNode ( t ) ) && r . specified ? r . value : null } ) , e } ) , r ( h , [ ] , function ( ) { function e ( e ) { var t = e , n , r ; if ( ! c ( e ) ) for ( t = [ ] , n = 0 , r = e . length ; n < r ; n ++ ) t [ n ] = e [ n ] ; return t } function n ( e , n , r ) { var i , o ; if ( ! e ) return 0 ; if ( r = r || e , e . length !== t ) { for ( i = 0 , o = e . length ; i < o ; i ++ ) if ( n . call ( r , e [ i ] , i , e ) === ! 1 ) return 0 } else for ( i in e ) if ( e . hasOwnProperty ( i ) && n . call ( r , e [ i ] , i , e ) === ! 1 ) return 0 ; return 1 } function r ( e , t ) { var r = [ ] ; return n ( e , function ( n , i ) { r . push ( t ( n , i , e ) ) } ) , r } function i ( e , t ) { var r = [ ] ; return n ( e , function ( n , i ) { t && ! t ( n , i , e ) || r . push ( n ) } ) , r } function o ( e , t ) { var n , r ; if ( e ) for ( n = 0 , r = e . length ; n < r ; n ++ ) if ( e [ n ] === t ) return n ; return - 1 } function a ( e , t , n , r ) { var i = 0 ; for ( arguments . length < 3 && ( n = e [ 0 ] ) ; i < e . length ; i ++ ) n = t . call ( r , n , e [ i ] , i ) ; return n } function s ( e , t , n ) { var r , i ; for ( r = 0 , i = e . length ; r < i ; r ++ ) if ( t . call ( n , e [ r ] , r , e ) ) return r ; return - 1 } function l ( e , n , r ) { var i = s ( e , n , r ) ; return i !== - 1 ? e [ i ] : t } function u ( e ) { return e [ e . length - 1 ] } var c = Array . isArray || function ( e ) { return "[object Array]" === Object . prototype . toString . call ( e ) } ; return { isArray : c , toArray : e , each : n , map : r , filter : i , indexOf : o , reduce : a , findIndex : s , find : l , last : u } } ) , r ( m , [ d , h ] , function ( e , n ) { function r ( e ) { return null === e || e === t ? "" : ( "" + e ) . replace ( h , "" ) } function i ( e , r ) { return r ? ! ( "array" != r || ! n . isArray ( e ) ) || typeof e == r : e !== t } function o ( e , t , n ) { var r ; for ( e = e || [ ] , t = t || "," , "string" == typeof e && ( e = e . split ( t ) ) , n = n || { } , r = e . length ; r -- ; ) n [ e [ r ] ] = { } ; return n } function a ( e , t ) { return Object . prototype . hasOwnProperty . call ( e , t ) } function s ( e , t , n ) { var r = this , i , o , a , s , l , u = 0 ; if ( e = /^((static) )?([\w.]+)(:([\w.]+))?/ . exec ( e ) , a = e [ 3 ] . match ( /(^|\.)(\w+)$/i ) [ 2 ] , o = r . createNS ( e [ 3 ] . replace ( /\.\w+$/ , "" ) , n ) , ! o [ a ] ) { if ( "static" == e [ 2 ] ) return o [ a ] = t , void ( this . onCreate && this . onCreate ( e [ 2 ] , e [ 3 ] , o [ a ] ) ) ; t [ a ] || ( t [ a ] = function ( ) { } , u = 1 ) , o [ a ] = t [ a ] , r . extend ( o [ a ] . prototype , t ) , e [ 5 ] && ( i = r . resolve ( e [ 5 ] ) . prototype , s = e [ 5 ] . match ( /\.(\w+)$/i ) [ 1 ] , l = o [ a ] , u ? o [ a ] = function ( ) { return i [ s ] . apply ( this , arguments ) } : o [ a ] = function ( ) { return this . parent = i [ s ] , l . apply ( this , arguments ) } , o [ a ] . prototype [ a ] = o [ a ] , r . each ( i , function ( e , t ) { o [ a ] . prototype [ t ] = i [ t ] } ) , r . each ( t , function ( e , t ) { i [ t ] ? o [ a ] . prototype [ t ] = function ( ) { return this . parent = i [ t ] , e . apply ( this , arguments ) } : t != a && ( o [ a ] . prototype [ t ] = e ) } ) ) , r . each ( t [ "static" ] , function ( e , t ) { o [ a ] [ t ] = e } ) } } function l ( e , n ) { var r , i , o , a = arguments , s ; for ( r = 1 , i = a . length ; r < i ; r ++ ) { n = a [ r ] ; for ( o in n ) n . hasOwnProperty ( o ) && ( s = n [ o ] , s !== t && ( e [ o ] = s ) ) } return e } function u ( e , t , r , i ) { i = i || this , e && ( r && ( e = e [ r ] ) , n . each ( e , function ( e , n ) { return t . call ( i , e , n , r ) !== ! 1 && void u ( e , t , r , i ) } ) ) } function c ( e , t ) { var n , r ; for ( t = t || window , e = e . split ( "." ) , n = 0 ; n < e . length ; n ++ ) r = e [ n ] , t [ r ] || ( t [ r ] = { } ) , t = t [ r ] ; return t } function d ( e , t ) { var n , r ; for ( t = t || window , e = e . split ( "." ) , n = 0 , r = e . length ; n < r && ( t = t [ e [ n ] ] , t ) ; n ++ ) ; return t } function f ( e , t ) { return ! e || i ( e , "array" ) ? e : n . map ( e . split ( t || "," ) , r ) } function p ( t ) { var n = e . cacheSuffix ; return n && ( t += ( t . indexOf ( "?" ) === - 1 ? "?" : "&" ) + n ) , t }
{ w : parseInt ( n , 10 ) || e . offsetWidth || e . clientWidth , h : parseInt ( r , 10 ) || e . offsetHeight || e . clientHeight } } , getParent : function ( e , t , n ) { return this . getParents ( e , t , n , ! 1 ) } , getParents : function ( e , n , r , i ) { var o = this , a , s = [ ] ; for ( e = o . get ( e ) , i = i === t , r = r || ( "BODY" != o . getRoot ( ) . nodeName ? o . getRoot ( ) . parentNode : null ) , g ( n , "string" ) && ( a = n , n = "*" === n ? function ( e ) { return 1 == e . nodeType } : function ( e ) { return o . is ( e , a ) } ) ; e && e != r && e . nodeType && 9 !== e . nodeType ; ) { if ( ! n || n ( e ) ) { if ( ! i ) return e ; s . push ( e ) } e = e . parentNode } return i ? s : null } , get : function ( e ) { var t ; return e && this . doc && "string" == typeof e && ( t = e , e = this . doc . getElementById ( e ) , e && e . id !== t ) ? this . doc . getElementsByName ( t ) [ 1 ] : e } , getNext : function ( e , t ) { return this . _findSib ( e , t , "nextSibling" ) } , getPrev : function ( e , t ) { return this . _findSib ( e , t , "previousSibling" ) } , select : function ( t , n ) { var r = this ; return e ( t , r . get ( n ) || r . settings . root _element || r . doc , [ ] ) } , is : function ( n , r ) { var i ; if ( n . length === t ) { if ( "*" === r ) return 1 == n . nodeType ; if ( C . test ( r ) ) { for ( r = r . toLowerCase ( ) . split ( /,/ ) , n = n . nodeName . toLowerCase ( ) , i = r . length - 1 ; i >= 0 ; i -- ) if ( r [ i ] == n ) return ! 0 ; return ! 1 } } if ( n . nodeType && 1 != n . nodeType ) return ! 1 ; var o = n . nodeType ? [ n ] : n ; return e ( r , o [ 0 ] . ownerDocument || o [ 0 ] , null , o ) . length > 0 } , add : function ( e , t , n , r , i ) { var o = this ; return this . run ( e , function ( e ) { var a ; return a = g ( t , "string" ) ? o . doc . createElement ( t ) : t , o . setAttribs ( a , n ) , r && ( r . nodeType ? a . appendChild ( r ) : o . setHTML ( a , r ) ) , i ? a : e . appendChild ( a ) } ) } , create : function ( e , t , n ) { return this . add ( this . doc . createElement ( e ) , e , t , n , 1 ) } , createHTML : function ( e , t , n ) { var r = "" , i ; r += "<" + e ; for ( i in t ) t . hasOwnProperty ( i ) && null !== t [ i ] && "undefined" != typeof t [ i ] && ( r += " " + i + '="' + this . encode ( t [ i ] ) + '"' ) ; return "undefined" != typeof n ? r + ">" + n + "</" + e + ">" : r + " />" } , createFragment : function ( e ) { var t , n , r = this . doc , i ; for ( i = r . createElement ( "div" ) , t = r . createDocumentFragment ( ) , e && ( i . innerHTML = e ) ; n = i . firstChild ; ) t . appendChild ( n ) ; return t } , remove : function ( e , t ) { return e = this . $$ ( e ) , t ? e . each ( function ( ) { for ( var e ; e = this . firstChild ; ) 3 == e . nodeType && 0 === e . data . length ? this . removeChild ( e ) : this . parentNode . insertBefore ( e , this ) } ) . remove ( ) : e . remove ( ) , e . length > 1 ? e . toArray ( ) : e [ 0 ] } , setStyle : function ( e , t , n ) { e = this . $$ ( e ) . css ( t , n ) , this . settings . update _styles && f ( this , e ) } , getStyle : function ( e , n , r ) { return e = this . $$ ( e ) , r ? e . css ( n ) : ( n = n . replace ( /-(\D)/g , function ( e , t ) { return t . toUpperCase ( ) } ) , "float" == n && ( n = l . ie && l . ie < 12 ? "styleFloat" : "cssFloat" ) , e [ 0 ] && e [ 0 ] . style ? e [ 0 ] . style [ n ] : t ) } , setStyles : function ( e , t ) { e = this . $$ ( e ) . css ( t ) , this . settings . update _styles && f ( this , e ) } , removeAllAttribs : function ( e ) { return this . run ( e , function ( e ) { var t , n = e . attributes ; for ( t = n . length - 1 ; t >= 0 ; t -- ) e . removeAttributeNode ( n . item ( t ) ) } ) } , setAttrib : function ( e , t , n ) { var r = this , i , o , a = r . settings ; "" === n && ( n = null ) , e = r . $$ ( e ) , i = e . attr ( t ) , e . length && ( o = r . attrHooks [ t ] , o && o . set ? o . set ( e , n , t ) : e . attr ( t , n ) , i != n && a . onSetAttrib && a . onSetAttrib ( { attrElm : e , attrName : t , attrValue : n } ) ) } , setAttribs : function ( e , t ) { var n = this ; n . $$ ( e ) . each ( function ( e , r ) { m ( t , function ( e , t ) { n . setAttrib ( r , t , e ) } ) } ) } , getAttrib : function ( e , t , n ) { var r = this , i , o ; return e = r . $$ ( e ) , e . length && ( i = r . attrHooks [ t ] , o = i && i . get ? i . get ( e , t ) : e . attr ( t ) ) , "undefined" == typeof o && ( o = n || "" ) , o } , getPos : function ( e , t ) { var r = this , i = 0 , o = 0 , a , s = r . doc , l = s . body , u ; if ( e = r . get ( e ) , t = t || l , e ) { if ( t === l && e . getBoundingClientRect && "static" === n ( l ) . css ( "position" ) ) return u = e . getBoundingClientRect ( ) , t = r . boxModel ? s . documentElement : l , i = u . left + ( s . documentElement . scrollLeft || l . scrollLeft ) - t . clientLeft , o = u . top + ( s . documentElement . scrollTop || l . scrollTop ) - t . clientTop , { x : i , y : o } ; for ( a = e ; a && a != t && a . nodeType ; ) i += a . offsetLeft || 0 , o += a . offsetTop || 0 , a = a . offsetParent ; for ( a = e . parentNode ; a && a != t && a . nodeType ; ) i -= a . scrollLeft || 0 , o -= a . scrollTop || 0 , a = a . parentNode } return { x : i , y : o } } , parseStyle : function ( e ) { return this . styles . parse ( e ) } , serializeStyle : function ( e , t ) { return this . styles . serialize ( e , t ) } , addStyle : function ( e ) { var t = this , n = t . doc , r , i ; if ( t !== h . DOM && n === document ) { var o = h . DOM . addedStyles ; if ( o = o || [ ] , o [ e ] ) return ; o [ e ] = ! 0 , h . DOM . addedStyles = o } i = n . getElementById ( "mceDefaultStyles" ) , i || ( i = n . createElement ( "style" ) , i . id = "mceDefaultStyles" , i . type = "text/css" , r = n . getElementsByTagName ( "head" ) [ 0 ] , r . firstChild ? r . insertBefore ( i , r . firstChild ) : r . appendChild
i [ e ] = a , a ) } function r ( e , t ) { var n ; return e && ( n = { } , "string" == typeof e && ( e = { "*" : e } ) , s ( e , function ( e , r ) { n [ r ] = n [ r . toUpperCase ( ) ] = "map" == t ? a ( e , /[, ]/ ) : u ( e , /[, ]/ ) } ) ) , n } var i = { } , o = { } , a = e . makeMap , s = e . each , l = e . extend , u = e . explode , c = e . inArray ; return function ( e ) { function o ( t , n , r ) { var o = e [ t ] ; return o ? o = a ( o , /[, ]/ , a ( o . toUpperCase ( ) , /[, ]/ ) ) : ( o = i [ t ] , o || ( o = a ( n , " " , a ( n . toUpperCase ( ) , " " ) ) , o = l ( o , r ) , i [ t ] = o ) ) , o } function d ( e ) { return new RegExp ( "^" + e . replace ( /([?+*])/g , ".$1" ) + "$" ) } function f ( e ) { var n , r , i , o , s , l , u , f , p , h , m , g , v , b , x , w , E , N , _ , S = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/ , k = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/ , T = /[*?+]/ ; if ( e ) for ( e = t ( e , "," ) , y [ "@" ] && ( w = y [ "@" ] . attributes , E = y [ "@" ] . attributesOrder ) , n = 0 , r = e . length ; n < r ; n ++ ) if ( s = S . exec ( e [ n ] ) ) { if ( b = s [ 1 ] , p = s [ 2 ] , x = s [ 3 ] , f = s [ 5 ] , g = { } , v = [ ] , l = { attributes : g , attributesOrder : v } , "#" === b && ( l . paddEmpty = ! 0 ) , "-" === b && ( l . removeEmpty = ! 0 ) , "!" === s [ 4 ] && ( l . removeEmptyAttrs = ! 0 ) , w ) { for ( N in w ) g [ N ] = w [ N ] ; v . push . apply ( v , E ) } if ( f ) for ( f = t ( f , "|" ) , i = 0 , o = f . length ; i < o ; i ++ ) if ( s = k . exec ( f [ i ] ) ) { if ( u = { } , m = s [ 1 ] , h = s [ 2 ] . replace ( /::/g , ":" ) , b = s [ 3 ] , _ = s [ 4 ] , "!" === m && ( l . attributesRequired = l . attributesRequired || [ ] , l . attributesRequired . push ( h ) , u . required = ! 0 ) , "-" === m ) { delete g [ h ] , v . splice ( c ( v , h ) , 1 ) ; continue } b && ( "=" === b && ( l . attributesDefault = l . attributesDefault || [ ] , l . attributesDefault . push ( { name : h , value : _ } ) , u . defaultValue = _ ) , ":" === b && ( l . attributesForced = l . attributesForced || [ ] , l . attributesForced . push ( { name : h , value : _ } ) , u . forcedValue = _ ) , "<" === b && ( u . validValues = a ( _ , "?" ) ) ) , T . test ( h ) ? ( l . attributePatterns = l . attributePatterns || [ ] , u . pattern = d ( h ) , l . attributePatterns . push ( u ) ) : ( g [ h ] || v . push ( h ) , g [ h ] = u ) } w || "@" != p || ( w = g , E = v ) , x && ( l . outputName = p , y [ x ] = l ) , T . test ( p ) ? ( l . pattern = d ( p ) , C . push ( l ) ) : y [ p ] = l } } function p ( e ) { y = { } , C = [ ] , f ( e ) , s ( E , function ( e , t ) { b [ t ] = e . children } ) } function h ( e ) { var n = /^(~)?(.+)$/ ; e && ( i . text _block _elements = i . block _elements = null , s ( t ( e , "," ) , function ( e ) { var t = n . exec ( e ) , r = "~" === t [ 1 ] , i = r ? "span" : "div" , o = t [ 2 ] ; if ( b [ o ] = b [ i ] , M [ o ] = i , r || ( R [ o . toUpperCase ( ) ] = { } , R [ o ] = { } ) , ! y [ o ] ) { var a = y [ i ] ; a = l ( { } , a ) , delete a . removeEmptyAttrs , delete a . removeEmpty , y [ o ] = a } s ( b , function ( e , t ) { e [ i ] && ( b [ t ] = e = l ( { } , b [ t ] ) , e [ o ] = e [ i ] ) } ) } ) ) } function m ( n ) { var r = /^([+\-]?)(\w+)\[([^\]]+)\]$/ ; i [ e . schema ] = null , n && s ( t ( n , "," ) , function ( e ) { var n = r . exec ( e ) , i , o ; n && ( o = n [ 1 ] , i = o ? b [ n [ 2 ] ] : b [ n [ 2 ] ] = { "#comment" : { } } , i = b [ n [ 2 ] ] , s ( t ( n [ 3 ] , "|" ) , function ( e ) { "-" === o ? delete i [ e ] : i [ e ] = { } } ) ) } ) } function g ( e ) { var t = y [ e ] , n ; if ( t ) return t ; for ( n = C . length ; n -- ; ) if ( t = C [ n ] , t . pattern . test ( e ) ) return t } var v = this , y = { } , b = { } , C = [ ] , x , w , E , N , _ , S , k , T , R , A , B , D , L , M = { } , P = { } ; e = e || { } , E = n ( e . schema ) , e . verify _html === ! 1 && ( e . valid _elements = "*[*]" ) , x = r ( e . valid _styles ) , w = r ( e . invalid _styles , "map" ) , T = r ( e . valid _classes , "map" ) , N = o ( "whitespace_elements" , "pre script noscript style textarea video audio iframe object" ) , _ = o ( "self_closing_elements" , "colgroup dd dt li option p td tfoot th thead tr" ) , S = o ( "short_ended_elements" , "area base basefont br col frame hr img input isindex link meta param embed source wbr track" ) , k = o ( "boolean_attributes" , "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls" ) , A = o ( "non_empty_elements" , "td th iframe video audio object script" , S ) , B = o ( "move_caret_before_on_enter_elements" , "table" , A ) , D = o ( "text_block_elements" , "h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure" ) , R = o ( "block_elements" , "hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption" , D ) , L = o ( "text_inline_elements" , "span strong b em i font strike u var cite dfn code mark q sup sub samp" ) , s ( ( e . special || "script noscript style textarea" ) . split ( " " ) , function ( e ) { P [ e ] = new RegExp ( "</" + e + "[^>]*>" , "gi" ) } ) , e . valid _elements ? p ( e . valid _elements ) : ( s ( E , function ( e , t ) { y [ t ] = { attributes : e . attributes , attributesOrder : e . attributesOrder } , b [ t ] = e . children } ) , "html5" != e . schema && s ( t ( "strong/b em/i" ) , function ( e ) { e = t ( e , "/" ) , y [ e [ 1 ] ] . outputName = e [ 0 ] } ) , s ( t ( "ol ul sub sup blockquote span font a table tbody tr strong em b i" ) , function ( e ) { y [ e ] && ( y [ e ] . removeEmpty = ! 0 ) } ) ,
A = { nw : [ 0 , 0 , - 1 , - 1 ] , ne : [ 1 , 0 , 1 , - 1 ] , se : [ 1 , 1 , 1 , 1 ] , sw : [ 0 , 1 , - 1 , 1 ] } ; var J = ".mce-content-body" ; return s . contentStyles . push ( J + " div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: box-sizing;background: #FFF;width: 7px;height: 7px;z-index: 10000}" + J + " .mce-resizehandle:hover {background: #000}" + J + " img[data-mce-selected]," + J + " hr[data-mce-selected] {outline: 1px solid black;resize: none}" + J + " .mce-clonedresizable {position: absolute;" + ( r . gecko ? "" : "outline: 1px dashed black;" ) + "opacity: .5;filter: alpha(opacity=50);z-index: 10000}" + J + " .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}" ) , s . on ( "init" , function ( ) { q ? ( s . on ( "ObjectResized" , function ( e ) { "TABLE" != e . target . nodeName && ( f ( ) , E ( e . target ) ) } ) , h ( X , "controlselect" , b ) , s . on ( "mousedown" , function ( e ) { D = e } ) ) : ( w ( ) , r . ie >= 11 && ( s . on ( "mousedown click" , function ( e ) { var t = e . target , n = t . nodeName ; z || ! /^(TABLE|IMG|HR)$/ . test ( n ) || y ( t ) || ( s . selection . select ( t , "TABLE" == n ) , "mousedown" == e . type && s . nodeChanged ( ) ) } ) , s . dom . bind ( X , "mscontrolselect" , function ( e ) { function t ( e ) { n . setEditorTimeout ( s , function ( ) { s . selection . select ( e ) } ) } return y ( e . target ) ? ( e . preventDefault ( ) , void t ( e . target ) ) : void ( /^(TABLE|IMG|HR)$/ . test ( e . target . nodeName ) && ( e . preventDefault ( ) , "IMG" == e . target . tagName && t ( e . target ) ) ) } ) ) ) ; var e = n . throttle ( function ( e ) { s . composing || p ( e ) } ) ; s . on ( "nodechange ResizeEditor ResizeWindow drop" , e ) , s . on ( "keyup compositionend" , function ( t ) { k && "TABLE" == k . nodeName && e ( t ) } ) , s . on ( "hide blur" , f ) } ) , s . on ( "remove" , x ) , { isResizable : l , showResizeRect : d , hideResizeRect : f , updateResizeRect : p , controlSelect : E , destroy : N } } } ) , r ( z , [ ] , function ( ) { function e ( e ) { return function ( ) { return e } } function t ( e ) { return function ( t ) { return ! e ( t ) } } function n ( e , t ) { return function ( n ) { return e ( t ( n ) ) } } function r ( ) { var e = s . call ( arguments ) ; return function ( t ) { for ( var n = 0 ; n < e . length ; n ++ ) if ( e [ n ] ( t ) ) return ! 0 ; return ! 1 } } function i ( ) { var e = s . call ( arguments ) ; return function ( t ) { for ( var n = 0 ; n < e . length ; n ++ ) if ( ! e [ n ] ( t ) ) return ! 1 ; return ! 0 } } function o ( e ) { var t = s . call ( arguments ) ; return t . length - 1 >= e . length ? e . apply ( this , t . slice ( 1 ) ) : function ( ) { var e = t . concat ( [ ] . slice . call ( arguments ) ) ; return o . apply ( this , e ) } } function a ( ) { } var s = [ ] . slice ; return { constant : e , negate : t , and : i , or : r , curry : o , compose : n , noop : a } } ) , r ( U , [ _ , h , k ] , function ( e , t , n ) { function r ( e ) { return ! m ( e ) && ( d ( e ) ? ! f ( e . parentNode ) : p ( e ) || c ( e ) || h ( e ) || u ( e ) ) } function i ( e , t ) { for ( e = e . parentNode ; e && e != t ; e = e . parentNode ) { if ( u ( e ) ) return ! 1 ; if ( l ( e ) ) return ! 0 } return ! 0 } function o ( e ) { return ! ! u ( e ) && t . reduce ( e . getElementsByTagName ( "*" ) , function ( e , t ) { return e || l ( t ) } , ! 1 ) !== ! 0 } function a ( e ) { return p ( e ) || o ( e ) } function s ( e , t ) { return r ( e ) && i ( e , t ) } var l = e . isContentEditableTrue , u = e . isContentEditableFalse , c = e . isBr , d = e . isText , f = e . matchNodeNames ( "script style textarea" ) , p = e . matchNodeNames ( "img input textarea hr iframe video audio object" ) , h = e . matchNodeNames ( "table" ) , m = n . isCaretContainer ; return { isCaretCandidate : r , isInEditable : i , isAtomic : a , isEditableCaretCandidate : s } } ) , r ( W , [ ] , function ( ) { function e ( e ) { return e ? { left : c ( e . left ) , top : c ( e . top ) , bottom : c ( e . bottom ) , right : c ( e . right ) , width : c ( e . width ) , height : c ( e . height ) } : { left : 0 , top : 0 , bottom : 0 , right : 0 , width : 0 , height : 0 } } function t ( t , n ) { return t = e ( t ) , n ? t . right = t . left : ( t . left = t . left + t . width , t . right = t . left ) , t . width = 0 , t } function n ( e , t ) { return e . left === t . left && e . top === t . top && e . bottom === t . bottom && e . right === t . right } function r ( e , t , n ) { return e >= 0 && e <= Math . min ( t . height , n . height ) / 2 } function i ( e , t ) { return e . bottom < t . top || ! ( e . top > t . bottom ) && r ( t . top - e . bottom , e , t ) } function o ( e , t ) { return e . top > t . bottom || ! ( e . bottom < t . top ) && r ( t . bottom - e . top , e , t ) } function a ( e , t ) { return e . left < t . left } function s ( e , t ) { return e . right > t . right } function l ( e , t ) { return i ( e , t ) ? - 1 : o ( e , t ) ? 1 : a ( e , t ) ? - 1 : s ( e , t ) ? 1 : 0 } function u ( e , t , n ) { return t >= e . left && t <= e . right && n >= e . top && n <= e . bottom } var c = Math . round ; return { clone : e , collapse : t , isEqual : n , isAbove : i , isBelow : o , isLeft : a , isRight : s , compare : l , containsXY : u } } ) , r ( V , [ ] , function ( ) { function e ( e ) { return " stri
g ( t , e ) } ) : ( t = t . length ? t : [ t ] , ce ( t , function ( e ) { e . deep === oe && ( e . deep = ! e . selector ) , e . split === oe && ( e . split = ! e . selector || e . inline ) , e . remove === oe && e . selector && ! e . inline && ( e . remove = "none" ) , e . selector && e . inline && ( e . mixed = ! 0 , e . block _expand = ! 0 ) , "string" == typeof e . classes && ( e . classes = e . classes . split ( /\s+/ ) ) } ) , j [ e ] = t ) ) } function v ( e ) { return e && j [ e ] && delete j [ e ] , j } function y ( e , t ) { var n = m ( t ) ; if ( n ) for ( var r = 0 ; r < n . length ; r ++ ) if ( n [ r ] . inherit === ! 1 && Y . is ( e , n [ r ] . selector ) ) return ! 0 ; return ! 1 } function b ( e ) { var t ; return s . dom . getParent ( e , function ( e ) { return t = s . dom . getStyle ( e , "text-decoration" ) , t && "none" !== t } ) , t } function C ( e ) { var t ; 1 === e . nodeType && e . parentNode && 1 === e . parentNode . nodeType && ( t = b ( e . parentNode ) , s . dom . getStyle ( e , "color" ) && t ? s . dom . setStyle ( e , "text-decoration" , t ) : s . dom . getStyle ( e , "text-decoration" ) === t && s . dom . setStyle ( e , "text-decoration" , null ) ) } function x ( t , n , r ) { function i ( e , t ) { if ( t = t || p , e ) { if ( t . onformat && t . onformat ( e , t , n , r ) , ce ( t . styles , function ( t , r ) { Y . setStyle ( e , r , M ( t , n ) ) } ) , t . styles ) { var i = Y . getAttrib ( e , "style" ) ; i && e . setAttribute ( "data-mce-style" , i ) } ce ( t . attributes , function ( t , r ) { Y . setAttrib ( e , r , M ( t , n ) ) } ) , ce ( t . classes , function ( t ) { t = M ( t , n ) , Y . hasClass ( e , t ) || Y . addClass ( e , t ) } ) } } function o ( e , t ) { var n = ! 1 ; return ! ! p . selector && ( ce ( e , function ( e ) { if ( ! ( "collapsed" in e && e . collapsed !== v ) ) return Y . is ( t , e . selector ) && ! f ( t ) ? ( i ( t , e ) , n = ! 0 , ! 1 ) : void 0 } ) , n ) } function u ( ) { function t ( t , n ) { var i = new e ( n ) ; for ( r = i . prev2 ( ) ; r ; r = i . prev2 ( ) ) { if ( 3 == r . nodeType && r . data . length > 0 ) return r ; if ( r . childNodes . length > 1 || r == t || "BR" == r . tagName ) return r } } var n = s . selection . getRng ( ) , i = n . startContainer , o = n . endContainer ; if ( i != o && 0 === n . endOffset ) { var a = t ( i , o ) , l = 3 == a . nodeType ? a . data . length : a . childNodes . length ; n . setEnd ( a , l ) } return n } function c ( e , r , a ) { var s = [ ] , u , c , h = ! 0 ; u = p . inline || p . block , c = Y . create ( u ) , i ( c ) , K . walk ( e , function ( e ) { function r ( e ) { var g , v , y , b ; if ( b = h , g = e . nodeName . toLowerCase ( ) , v = e . parentNode . nodeName . toLowerCase ( ) , 1 === e . nodeType && ae ( e ) && ( b = h , h = "true" === ae ( e ) , y = ! 0 ) , B ( g , "br" ) ) return m = 0 , void ( p . block && Y . remove ( e ) ) ; if ( p . wrapper && N ( e , t , n ) ) return void ( m = 0 ) ; if ( h && ! y && p . block && ! p . wrapper && l ( g ) && G ( v , u ) ) return e = Y . rename ( e , u ) , i ( e ) , s . push ( e ) , void ( m = 0 ) ; if ( p . selector ) { var C = o ( d , e ) ; if ( ! p . inline || C ) return void ( m = 0 ) } ! h || y || ! G ( u , g ) || ! G ( v , u ) || ! a && 3 === e . nodeType && 1 === e . nodeValue . length && 65279 === e . nodeValue . charCodeAt ( 0 ) || f ( e ) || p . inline && J ( e ) ? ( m = 0 , ce ( de ( e . childNodes ) , r ) , y && ( h = b ) , m = 0 ) : ( m || ( m = Y . clone ( c , ne ) , e . parentNode . insertBefore ( m , e ) , s . push ( m ) ) , m . appendChild ( e ) ) } var m ; ce ( e , r ) } ) , p . links === ! 0 && ce ( s , function ( e ) { function t ( e ) { "A" === e . nodeName && i ( e , p ) , ce ( de ( e . childNodes ) , t ) } t ( e ) } ) , ce ( s , function ( e ) { function r ( e ) { var t = 0 ; return ce ( e . childNodes , function ( e ) { P ( e ) || ue ( e ) || t ++ } ) , t } function o ( e ) { var t , n ; return ce ( e . childNodes , function ( e ) { if ( 1 == e . nodeType && ! ue ( e ) && ! f ( e ) ) return t = e , ne } ) , t && ! ue ( t ) && A ( t , p ) && ( n = Y . clone ( t , ne ) , i ( n ) , Y . replace ( n , e , re ) , Y . remove ( t , 1 ) ) , n || e } var a ; if ( a = r ( e ) , ( s . length > 1 || ! J ( e ) ) && 0 === a ) return void Y . remove ( e , 1 ) ; if ( p . inline || p . wrapper ) { if ( p . exact || 1 !== a || ( e = o ( e ) ) , ce ( d , function ( t ) { ce ( Y . select ( t . inline , e ) , function ( e ) { ue ( e ) || F ( t , n , e , t . exact ? e : null ) } ) } ) , N ( e . parentNode , t , n ) ) return Y . remove ( e , 1 ) , e = 0 , re ; p . merge _with _parents && Y . getParent ( e . parentNode , function ( r ) { if ( N ( r , t , n ) ) return Y . remove ( e , 1 ) , e = 0 , re } ) , e && p . merge _siblings !== ! 1 && ( e = W ( U ( e ) , e ) , e = W ( e , U ( e , re ) ) ) } } ) } var d = m ( t ) , p = d [ 0 ] , h , g , v = ! r && X . isCollapsed ( ) ; if ( "false" !== ae ( X . getNode ( ) ) ) { if ( p ) { if ( r ) r . nodeType ? o ( d , r ) || ( g = Y . createRng ( ) , g . setStartBefore ( r ) , g . setEndAfter ( r ) , c ( H ( g , d ) , null , ! 0 ) ) : c ( r , null , ! 0 ) ; else if ( v && p . inline && ! Y . select ( "td[data-mce-selected],th[data-mce-selected]" ) . length ) $ ( "apply" , t , n ) ; else { var y = s . selection . getNode ( ) ; Q || ! d [ 0 ] . defaultBlock || Y . getParent ( y , Y . isBlock ) || x ( d [ 0 ] . defaultBlock ) , s . selection . setRng ( u ( ) ) , h = X . getBookmark ( ) , c ( H ( X . getRng ( re ) , d ) , h ) , p . styles && ( p . styles . color || p . styles . textDecoration ) && ( fe ( y , C , "childNodes" ) , C ( y ) ) , X . moveToBookmark ( h ) , q ( X . getRng ( re ) ) , s . nodeChanged ( ) } a . postProcess ( t , s ) } } else { r = X . getNode ( ) ; for ( var b = 0 , w = d . length ; b < w ; b ++ ) if ( d [ b ] . ceFalseOverride && Y . is ( r , d [ b ] . selector ) ) return void i ( r , d [ b ] ) } } function w ( e , t , n , r ) { function i ( e ) { var n , r , o , a , s ; if ( 1 === e . nodeType && ae ( e ) && ( a = y , y = "true" === ae ( e ) , s = ! 0 ) , n = de ( e . childNodes ) , y && ! s ) for
return e ? ( n . setStartBefore ( t ) , n . setEndBefore ( t ) ) : ( n . setStartAfter ( t ) , n . setEndAfter ( t ) ) , n } function g ( e , t , n ) { return d ( t , e ) == d ( n , e ) } function v ( e , t , n ) { var r , i ; for ( i = e ? "previousSibling" : "nextSibling" ; n && n != t ; ) { if ( r = n [ i ] , E ( r ) && ( r = r [ i ] ) , x ( r ) ) { if ( g ( t , r , n ) ) return r ; break } if ( k ( r ) ) break ; n = n . parentNode } return null } function y ( e , t , r ) { var o , a , s , l , u = _ ( v , ! 0 , t ) , c = _ ( v , ! 1 , t ) ; if ( a = r . startContainer , s = r . startOffset , i . isCaretContainerBlock ( a ) ) { if ( S ( a ) || ( a = a . parentNode ) , l = a . getAttribute ( "data-mce-caret" ) , "before" == l && ( o = a . nextSibling , x ( o ) ) ) return T ( o ) ; if ( "after" == l && ( o = a . previousSibling , x ( o ) ) ) return R ( o ) } if ( ! r . collapsed ) return r ; if ( n . isText ( a ) ) { if ( E ( a ) ) { if ( 1 === e ) { if ( o = c ( a ) ) return T ( o ) ; if ( o = u ( a ) ) return R ( o ) } if ( e === - 1 ) { if ( o = u ( a ) ) return R ( o ) ; if ( o = c ( a ) ) return T ( o ) } return r } if ( i . endsWithCaretContainer ( a ) && s >= a . data . length - 1 ) return 1 === e && ( o = c ( a ) ) ? T ( o ) : r ; if ( i . startsWithCaretContainer ( a ) && s <= 1 ) return e === - 1 && ( o = u ( a ) ) ? R ( o ) : r ; if ( s === a . data . length ) return o = c ( a ) , o ? T ( o ) : r ; if ( 0 === s ) return o = u ( a ) , o ? R ( o ) : r } return r } function b ( e , t ) { return x ( h ( e , t ) ) } var C = n . isContentEditableTrue , x = n . isContentEditableFalse , w = n . matchStyleValues ( "display" , "block table table-cell table-caption" ) , E = i . isCaretContainer , N = i . isCaretContainerBlock , _ = e . curry , S = n . isElement , k = o . isCaretCandidate , T = _ ( m , ! 0 ) , R = _ ( m , ! 1 ) ; return { isForwards : a , isBackwards : s , findNode : u , getEditingHost : c , getParentBlock : d , isInSameBlock : f , isInSameEditingHost : p , isBeforeContentEditableFalse : _ ( b , 0 ) , isAfterContentEditableFalse : _ ( b , - 1 ) , normalizeRange : y } } ) , r ( oe , [ _ , U , $ , ie , h , z ] , function ( e , t , n , r , i , o ) { function a ( e , t ) { for ( var n = [ ] ; e && e != t ; ) n . push ( e ) , e = e . parentNode ; return n } function s ( e , t ) { return e . hasChildNodes ( ) && t < e . childNodes . length ? e . childNodes [ t ] : null } function l ( e , t ) { if ( m ( e ) ) { if ( v ( t . previousSibling ) && ! f ( t . previousSibling ) ) return n . before ( t ) ; if ( f ( t ) ) return n ( t , 0 ) } if ( g ( e ) ) { if ( v ( t . nextSibling ) && ! f ( t . nextSibling ) ) return n . after ( t ) ; if ( f ( t ) ) return n ( t , t . data . length ) } return g ( e ) ? h ( t ) ? n . before ( t ) : n . after ( t ) : n . before ( t ) } function u ( t , i ) { var o ; return ! ! e . isBr ( t ) && ( o = c ( 1 , n . after ( t ) , i ) , ! ! o && ! r . isInSameBlock ( n . before ( t ) , n . before ( o ) , i ) ) } function c ( e , t , h ) { var C , x , w , E , N , _ , S ; if ( ! p ( h ) || ! t ) return null ; if ( S = t , C = S . container ( ) , x = S . offset ( ) , f ( C ) ) { if ( g ( e ) && x > 0 ) return n ( C , -- x ) ; if ( m ( e ) && x < C . length ) return n ( C , ++ x ) ; w = C } else { if ( g ( e ) && x > 0 && ( E = s ( C , x - 1 ) , v ( E ) ) ) return ! y ( E ) && ( N = r . findNode ( E , e , b , E ) ) ? f ( N ) ? n ( N , N . data . length ) : n . after ( N ) : f ( E ) ? n ( E , E . data . length ) : n . before ( E ) ; if ( m ( e ) && x < C . childNodes . length && ( E = s ( C , x ) , v ( E ) ) ) return u ( E , h ) ? c ( e , n . after ( E ) , h ) : ! y ( E ) && ( N = r . findNode ( E , e , b , E ) ) ? f ( N ) ? n ( N , 0 ) : n . before ( N ) : f ( E ) ? n ( E , 0 ) : n . after ( E ) ; w = S . getNode ( ) } return ( m ( e ) && S . isAtEnd ( ) || g ( e ) && S . isAtStart ( ) ) && ( w = r . findNode ( w , e , o . constant ( ! 0 ) , h , ! 0 ) , b ( w ) ) ? l ( e , w ) : ( E = r . findNode ( w , e , b , h ) , _ = i . last ( i . filter ( a ( C , h ) , d ) ) , ! _ || E && _ . contains ( E ) ? E ? l ( e , E ) : null : S = m ( e ) ? n . after ( _ ) : n . before ( _ ) ) } var d = e . isContentEditableFalse , f = e . isText , p = e . isElement , h = e . isBr , m = r . isForwards , g = r . isBackwards , v = t . isCaretCandidate , y = t . isAtomic , b = t . isEditableCaretCandidate ; return function ( e ) { return { next : function ( t ) { return c ( 1 , t , e ) } , prev : function ( t ) { return c ( - 1 , t , e ) } } } } ) , r ( ae , [ m , oe , $ ] , function ( e , t , n ) { var r = function ( e ) { var t = e . firstChild , n = e . lastChild ; return t && "meta" === t . name && ( t = t . next ) , n && "mce_marker" === n . attr ( "id" ) && ( n = n . prev ) , ! ( ! t || t !== n ) && ( "ul" === t . name || "ol" === t . name ) } , i = function ( e ) { var t = e . firstChild , n = e . lastChild ; return t && "META" === t . nodeName && t . parentNode . removeChild ( t ) , n && "mce_marker" === n . id && n . parentNode . removeChild ( n ) , e } , o = function ( e , t , n ) { var r = t . serialize ( n ) , o = e . createFragment ( r ) ; return i ( o ) } , a = function ( t ) { return e . grep ( t . childNodes , function ( e ) { return "LI" === e . nodeName } ) } , s = function ( e ) { return ! e . firstChild } , l = function ( e ) { return e . length > 0 && s ( e [ e . length - 1 ] ) ? e . slice ( 0 , - 1 ) : e } , u = function ( e , t ) { var n = e . getParent ( t , e . isBlock ) ; return n && "LI" === n . nodeName ? n : null } , c = function ( e , t ) { return ! ! u ( e , t ) } , d = function ( e , t ) { var n = t . cloneRange ( ) , r = t . cloneRange ( ) ; return n . setStartBefore ( e ) , r . setEndAfter ( e ) , [ n . cloneContents ( ) , r . cloneContents ( ) ] } , f = function ( e , r ) { var i = n . before ( e ) , o = new t ( r ) , a = o . next ( i ) ; return a ? a . toRange ( ) : null } , p = function ( e , r ) { var i = n . after ( e ) , o = new t ( r ) , a = o . prev ( i ) ; return a ? a . toRange ( ) : null } , h = function ( t , n , r , i ) { var o = d ( t , i ) , a = t .
} } ) , n . prototype . toString = function ( ) { var e ; if ( this . clsValue ) return this . clsValue ; e = "" ; for ( var t = 0 ; t < this . cls . length ; t ++ ) t > 0 && ( e += " " ) , e += this . prefix + this . cls [ t ] ; return e } , n } ) , r ( Ce , [ c ] , function ( e ) { var t = { } , n ; return { add : function ( r ) { var i = r . parent ( ) ; if ( i ) { if ( ! i . _layout || i . _layout . isNative ( ) ) return ; t [ i . _id ] || ( t [ i . _id ] = i ) , n || ( n = ! 0 , e . requestAnimationFrame ( function ( ) { var e , r ; n = ! 1 ; for ( e in t ) r = t [ e ] , r . state . get ( "rendered" ) && r . reflow ( ) ; t = { } } , document . body ) ) } } , remove : function ( e ) { t [ e . _id ] && delete t [ e . _id ] } } } ) , r ( xe , [ ce , m , de , he , ge , ve , g , ye , be , Ce ] , function ( e , t , n , r , i , o , a , s , l , u ) { function c ( e ) { return e . _eventDispatcher || ( e . _eventDispatcher = new n ( { scope : e , toggleEvent : function ( t , r ) { r && n . isNative ( t ) && ( e . _nativeEvents || ( e . _nativeEvents = { } ) , e . _nativeEvents [ t ] = ! 0 , e . state . get ( "rendered" ) && d ( e ) ) } } ) ) , e . _eventDispatcher } function d ( e ) { function t ( t ) { var n = e . getParentCtrl ( t . target ) ; n && n . fire ( t . type , t ) } function n ( ) { var e = u . _lastHoverCtrl ; e && ( e . fire ( "mouseleave" , { target : e . getEl ( ) } ) , e . parents ( ) . each ( function ( e ) { e . fire ( "mouseleave" , { target : e . getEl ( ) } ) } ) , u . _lastHoverCtrl = null ) } function r ( t ) { var n = e . getParentCtrl ( t . target ) , r = u . _lastHoverCtrl , i = 0 , o , a , s ; if ( n !== r ) { if ( u . _lastHoverCtrl = n , a = n . parents ( ) . toArray ( ) . reverse ( ) , a . push ( n ) , r ) { for ( s = r . parents ( ) . toArray ( ) . reverse ( ) , s . push ( r ) , i = 0 ; i < s . length && a [ i ] === s [ i ] ; i ++ ) ; for ( o = s . length - 1 ; o >= i ; o -- ) r = s [ o ] , r . fire ( "mouseleave" , { target : r . getEl ( ) } ) } for ( o = i ; o < a . length ; o ++ ) n = a [ o ] , n . fire ( "mouseenter" , { target : n . getEl ( ) } ) } } function i ( t ) { t . preventDefault ( ) , "mousewheel" == t . type ? ( t . deltaY = - . 025 * t . wheelDelta , t . wheelDeltaX && ( t . deltaX = - . 025 * t . wheelDeltaX ) ) : ( t . deltaX = 0 , t . deltaY = t . detail ) , t = e . fire ( "wheel" , t ) } var o , s , l , u , c , d ; if ( c = e . _nativeEvents ) { for ( l = e . parents ( ) . toArray ( ) , l . unshift ( e ) , o = 0 , s = l . length ; ! u && o < s ; o ++ ) u = l [ o ] . _eventsRoot ; for ( u || ( u = l [ l . length - 1 ] || e ) , e . _eventsRoot = u , s = o , o = 0 ; o < s ; o ++ ) l [ o ] . _eventsRoot = u ; var h = u . _delegates ; h || ( h = u . _delegates = { } ) ; for ( d in c ) { if ( ! c ) return ! 1 ; "wheel" !== d || p ? ( "mouseenter" === d || "mouseleave" === d ? u . _hasMouseEnter || ( a ( u . getEl ( ) ) . on ( "mouseleave" , n ) . on ( "mouseover" , r ) , u . _hasMouseEnter = 1 ) : h [ d ] || ( a ( u . getEl ( ) ) . on ( d , t ) , h [ d ] = ! 0 ) , c [ d ] = ! 1 ) : f ? a ( e . getEl ( ) ) . on ( "mousewheel" , i ) : a ( e . getEl ( ) ) . on ( "DOMMouseScroll" , i ) } } } var f = "onmousewheel" in document , p = ! 1 , h = "mce-" , m , g = 0 , v = { Statics : { classPrefix : h } , isRtl : function ( ) { return m . rtl } , classPrefix : h , init : function ( e ) { function n ( e ) { var t ; for ( e = e . split ( " " ) , t = 0 ; t < e . length ; t ++ ) i . classes . add ( e [ t ] ) } var i = this , o , u ; i . settings = e = t . extend ( { } , i . Defaults , e ) , i . _id = e . id || "mceu_" + g ++ , i . _aria = { role : e . role } , i . _elmCache = { } , i . $ = a , i . state = new r ( { visible : ! 0 , active : ! 1 , disabled : ! 1 , value : "" } ) , i . data = new r ( e . data ) , i . classes = new l ( function ( ) { i . state . get ( "rendered" ) && ( i . getEl ( ) . className = this . toString ( ) ) } ) , i . classes . prefix = i . classPrefix , o = e . classes , o && ( i . Defaults && ( u = i . Defaults . classes , u && o != u && n ( u ) ) , n ( o ) ) , t . 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 = s . parseBox ( e . border ) , i . paddingBox = s . parseBox ( e . padding ) , i . marginBox = s . parseBox ( e . margin ) , e . hidden && i . hide ( ) } , Properties : "parent,name" , getContainerElm : function ( ) { return o . 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 = this , t = e . settings , n , r , i = e . getEl ( ) , a , l , u , c , d , f , p , h ; n = e . borderBox = e . borderBox || s . measureBox ( i , "border" ) , e . paddingBox = e . paddingBox || s . measureBox ( i , "padding" ) , e . marginBox = e . marginBox || s . measureBox ( i , "margin" ) , h = o . getSize ( i ) , f = t . minWidth , p = t . minHeight , u = f || h . width , c = p || h . height , a = t . width , l = t . height , d = t . autoResize , d = "undefined" != typeof d ? d : ! a && ! l , a = a || u , l = l || c ; var m = n . left + n . right , g = n . top + n . bottom , v = t . maxWidth || 65535 , y = t . maxHeight || 65535 ; return e . _layoutRect = r = { x : t . x || 0 , y : t . y || 0 , w : a , h : l , deltaW : m , deltaH : g , contentW : a - m , contentH : l - g , innerW : a - m , innerH : l - g , startMinWidth : f || 0 , startMinHeight : p || 0 , minW : Math . min ( u , v ) , minH : Math . min ( c , y ) , maxW : v , maxH : y , autoResize : d , scrollW : 0 } , e . _lastLayoutRect = { } , r } , layoutRect : function ( e ) { var t = this , n = t . _layoutRect , r , i , o , a , s , l ; return n || ( n = t . initLayoutRect ( ) ) , e ? ( o = n . deltaW , a = n . deltaH , e . x !== s && ( n . x = e .
} } , { text : "Cancel" , onclick : function ( ) { a . close ( ) } } ] ) , a = new e ( t ) , s . push ( a ) , a . on ( "close" , function ( ) { for ( var e = s . length ; e -- ; ) s [ e ] === a && s . splice ( e , 1 ) ; s . length || n . focus ( ) , o ( a ) } ) , t . data && a . on ( "postRender" , function ( ) { this . find ( "*" ) . each ( function ( e ) { var n = e . name ( ) ; n in t . data && e . value ( t . data [ n ] ) } ) } ) , a . features = t || { } , a . params = r || { } , 1 === s . length && n . nodeChanged ( ) , a = a . renderTo ( ) . reflow ( ) , i ( a ) , a } , a . alert = function ( e , r , a ) { var s ; s = t . alert ( e , function ( ) { r ? r . call ( a || this ) : n . focus ( ) } ) , s . on ( "close" , function ( ) { o ( s ) } ) , i ( s ) } , a . confirm = function ( e , n , r ) { var a ; a = t . confirm ( e , function ( e ) { n . call ( r || this , e ) } ) , a . on ( "close" , function ( ) { o ( a ) } ) , i ( a ) } , a . close = function ( ) { r ( ) && r ( ) . close ( ) } , a . getParams = function ( ) { return r ( ) ? r ( ) . params : null } , a . setParams = function ( e ) { r ( ) && ( r ( ) . params = e ) } , a . getWindows = function ( ) { return s } } } ) , r ( Me , [ xe , Te ] , function ( e , t ) { return e . extend ( { Mixins : [ t ] , Defaults : { classes : "widget tooltip tooltip-n" } , renderHtml : function ( ) { var e = this , t = e . classPrefix ; return '<div id="' + e . _id + '" class="' + e . classes + '" role="presentation"><div class="' + t + 'tooltip-arrow"></div><div class="' + t + 'tooltip-inner">' + e . encode ( e . state . get ( "text" ) ) + "</div></div>" } , bindStates : function ( ) { var e = this ; return e . state . on ( "change:text" , function ( t ) { e . getEl ( ) . lastChild . innerHTML = e . encode ( t . value ) } ) , e . _super ( ) } , repaint : function ( ) { var e = this , t , n ; t = e . getEl ( ) . style , n = e . _layoutRect , t . left = n . x + "px" , t . top = n . y + "px" , t . zIndex = 131070 } } ) } ) , r ( Pe , [ xe , Me ] , function ( e , t ) { var n , r = e . extend ( { init : function ( e ) { var t = this ; t . _super ( e ) , e = t . settings , t . canFocus = ! 0 , e . tooltip && r . tooltips !== ! 1 && ( t . on ( "mouseenter" , function ( n ) { var r = t . tooltip ( ) . moveTo ( - 65535 ) ; if ( n . control == t ) { var i = r . text ( e . tooltip ) . show ( ) . testMoveRel ( t . getEl ( ) , [ "bc-tc" , "bc-tl" , "bc-tr" ] ) ; r . classes . toggle ( "tooltip-n" , "bc-tc" == i ) , r . classes . toggle ( "tooltip-nw" , "bc-tl" == i ) , r . classes . toggle ( "tooltip-ne" , "bc-tr" == i ) , r . moveRel ( t . getEl ( ) , i ) } else r . hide ( ) } ) , t . on ( "mouseleave mousedown click" , function ( ) { t . tooltip ( ) . hide ( ) } ) ) , t . aria ( "label" , e . ariaLabel || e . tooltip ) } , tooltip : function ( ) { return n || ( n = new t ( { type : "tooltip" } ) , n . renderTo ( ) ) , n } , 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 ( ) { function e ( e ) { n . aria ( "disabled" , e ) , n . classes . toggle ( "disabled" , e ) } function t ( e ) { n . aria ( "pressed" , e ) , n . classes . toggle ( "active" , e ) } var n = this ; return n . state . on ( "change:disabled" , function ( t ) { e ( t . value ) } ) , n . state . on ( "change:active" , function ( e ) { t ( e . value ) } ) , n . state . get ( "disabled" ) && e ( ! 0 ) , n . state . get ( "active" ) && t ( ! 0 ) , n . _super ( ) } , remove : function ( ) { this . _super ( ) , n && ( n . remove ( ) , n = null ) } } ) ; return r } ) , r ( Oe , [ Pe ] , function ( e ) { return e . extend ( { Defaults : { value : 0 } , init : function ( e ) { var t = this ; t . _super ( e ) , t . classes . add ( "progress" ) , t . settings . filter || ( t . settings . filter = function ( e ) { return Math . round ( e ) } ) } , renderHtml : function ( ) { var e = this , t = e . _id , n = this . classPrefix ; return '<div id="' + t + '" class="' + e . classes + '"><div class="' + n + 'bar-container"><div class="' + n + 'bar"></div></div><div class="' + n + 'text">0%</div></div>' } , postRender : function ( ) { var e = this ; return e . _super ( ) , e . value ( e . settings . value ) , e } , bindStates : function ( ) { function e ( e ) { e = t . settings . filter ( e ) , t . getEl ( ) . lastChild . innerHTML = e + "%" , t . getEl ( ) . firstChild . firstChild . style . width = e + "%" } var t = this ; return t . state . on ( "change:value" , function ( t ) { e ( t . value ) } ) , e ( t . state . get ( "value" ) ) , t . _super ( ) } } ) } ) , r ( He , [ xe , Te , Oe , c ] , function ( e , t , n , r ) { return e . extend ( { Mixins : [ t ] , Defaults : { classes : "widget notification" } , init : function ( e ) { var t = this ; t . _super ( e ) , e . text && t . text ( e . text ) , e . icon && ( t . icon = e . icon ) , e . color && ( t . color = e . color ) , e . type && t . classes . add ( "notification-" + e . type ) , e . timeout && ( e . timeout < 0 || e . timeout > 0 ) && ! e . closeButton ? t . closeButton = ! 1 : ( t . classes . add ( "has-close" ) , t . closeButton = ! 0 ) , e . progressBar && ( t . progressBar = new n ) , t . on ( "click" , function ( e ) { e . target . className . indexOf ( t . classPrefix + "close" ) != - 1 && t . close ( ) } ) } , renderHtml : function ( ) { var e = this , t = e . classPrefix , n = "" , r = "" , i = "" , o = "" ; return e . icon && ( n = '<i class="' + t + "ico " + t + "i-" + e . icon + '"></i>' ) , e . color && ( o = ' style="background-color: ' + e . color + '"' ) , e . closeButton && ( r = '<button type="button" class="' + t + ' close "
e . notificationManager . open ( { type : "error" , text : t } ) } , o = function ( e , t ) { e . _skinLoaded ? i ( e , t ) : e . on ( "SkinLoaded" , function ( ) { i ( e , t ) } ) } , a = function ( e , t ) { o ( e , "Failed to upload image: " + t ) } , s = function ( e , t ) { o ( e , r ( e , t ) ) } ; return { pluginLoadError : s , uploadError : a } } ) , r ( Ge , [ h , $e , je , Ye , Xe , Ke ] , function ( e , t , n , r , i , o ) { return function ( a ) { function s ( e ) { return function ( t ) { return a . selection ? e ( t ) : [ ] } } function l ( ) { return "?" + ( new Date ) . getTime ( ) } function u ( e , t , n ) { var r = 0 ; do r = e . indexOf ( t , r ) , r !== - 1 && ( e = e . substring ( 0 , r ) + n + e . substr ( r + t . length ) , r += n . length - t . length + 1 ) ; while ( r !== - 1 ) ; return e } function c ( e , t , n ) { return e = u ( e , 'src="' + t + '"' , 'src="' + n + '"' ) , e = u ( e , 'data-mce-src="' + t + '"' , 'data-mce-src="' + n + '"' ) } function d ( t , n ) { e . each ( a . undoManager . data , function ( r ) { "fragmented" === r . type ? r . fragments = e . map ( r . fragments , function ( e ) { return c ( e , t , n ) } ) : r . content = c ( r . content , t , n ) } ) } function f ( ) { return a . notificationManager . open ( { text : a . translate ( "Image uploading..." ) , type : "info" , timeout : - 1 , progressBar : ! 0 } ) } function p ( e , t ) { C . removeByUri ( e . src ) , d ( e . src , t ) , a . $ ( e ) . attr ( { src : E . images _reuse _filename ? t + l ( ) : t , "data-mce-src" : a . convertURL ( t , "src" ) } ) } function h ( n ) { return x || ( x = new t ( N , { url : E . images _upload _url , basePath : E . images _upload _base _path , credentials : E . images _upload _credentials , handler : E . images _upload _handler } ) ) , v ( ) . then ( s ( function ( t ) { var r ; return r = e . map ( t , function ( e ) { return e . blobInfo } ) , x . upload ( r , f ) . then ( s ( function ( r ) { return r = e . map ( r , function ( e , n ) { var r = t [ n ] . image ; return e . status && a . settings . images _replace _blob _uris !== ! 1 ? p ( r , e . url ) : e . error && o . uploadError ( a , e . error ) , { element : r , status : e . status } } ) , n && n ( r ) , r } ) ) } ) ) } function m ( e ) { if ( E . automatic _uploads !== ! 1 ) return h ( e ) } function g ( e ) { return ! E . images _dataimg _filter || E . images _dataimg _filter ( e ) } function v ( ) { return w || ( w = new n ( N , C ) ) , w . findAll ( a . getBody ( ) , g ) . then ( s ( function ( t ) { return e . each ( t , function ( e ) { d ( e . image . src , e . blobInfo . blobUri ( ) ) , e . image . src = e . blobInfo . blobUri ( ) , e . image . removeAttribute ( "data-mce-src" ) } ) , t } ) ) } function y ( ) { C . destroy ( ) , N . destroy ( ) , w = x = null } function b ( t ) { return t . replace ( /src="(blob:[^"]+)"/g , function ( t , n ) { var r = N . getResultUri ( n ) ; if ( r ) return 'src="' + r + '"' ; var i = C . getByUri ( n ) ; return i || ( i = e . reduce ( a . editorManager . editors , function ( e , t ) { return e || t . editorUpload . blobCache . getByUri ( n ) } , null ) ) , i ? 'src="data:' + i . blob ( ) . type + ";base64," + i . base64 ( ) + '"' : t } ) } var C = new r , x , w , E = a . settings , N = new i ; return a . on ( "setContent" , function ( ) { a . settings . automatic _uploads !== ! 1 ? m ( ) : v ( ) } ) , a . on ( "RawSaveContent" , function ( e ) { e . content = b ( e . content ) } ) , a . on ( "getContent" , function ( e ) { e . source _view || "raw" == e . format || ( e . content = b ( e . content ) ) } ) , a . on ( "PostRender" , function ( ) { a . parser . addNodeFilter ( "img" , function ( t ) { e . each ( t , function ( e ) { var t = e . attr ( "src" ) ; if ( ! C . getByUri ( t ) ) { var n = N . getResultUri ( t ) ; n && e . attr ( "src" , n ) } } ) } ) } ) , { blobCache : C , uploadImages : h , uploadImagesAuto : m , scanForImages : v , destroy : y } } } ) , r ( Je , [ k , $ , _ , T , g , W , c ] , function ( e , t , n , r , i , o , a ) { var s = n . isContentEditableFalse ; return function ( t , n ) { function r ( e , n ) { var r = o . collapse ( e . getBoundingClientRect ( ) , n ) , i , a , s , l , u ; return "BODY" == t . tagName ? ( i = t . ownerDocument . documentElement , a = t . scrollLeft || i . scrollLeft , s = t . scrollTop || i . scrollTop ) : ( u = t . getBoundingClientRect ( ) , a = t . scrollLeft - u . left , s = t . scrollTop - u . top ) , r . left += a , r . right += a , r . top += s , r . bottom += s , r . width = 1 , l = e . offsetWidth - e . clientWidth , l > 0 && ( n && ( l *= - 1 ) , r . left += l , r . right += l ) , r } function l ( ) { var n , r , o , a , s ; for ( n = i ( "*[contentEditable=false]" , t ) , a = 0 ; a < n . length ; a ++ ) r = n [ a ] , o = r . previousSibling , e . endsWithCaretContainer ( o ) && ( s = o . data , 1 == s . length ? o . parentNode . removeChild ( o ) : o . deleteData ( s . length - 1 , 1 ) ) , o = r . nextSibling , e . startsWithCaretContainer ( o ) && ( s = o . data , 1 == s . length ? o . parentNode . removeChild ( o ) : o . deleteData ( 0 , 1 ) ) ; return null } function u ( o , a ) { var l , u ; return c ( ) , n ( a ) ? ( g = e . insertBlock ( "p" , a , o ) , l = r ( a , o ) , i ( g ) . css ( "top" , l . top ) , m = i ( '<div class="mce-visual-caret" data-mce-bogus="all"></div>' ) . css ( l ) . appendTo ( t ) , o && m . addClass ( "mce-visual-caret-before" ) , d ( ) , u = a . ownerDocument . createRange ( ) , u . setStart ( g , 0 ) , u . setEnd ( g , 0 ) , u ) : ( g = e . insertInline ( a , o ) , u = a . ownerDocument . createRange ( ) , s ( g . nextSibling ) ? ( u . setStart ( g , 0 ) , u . setEnd ( g , 0 ) ) : ( u . setStart ( g , 1 ) , u . setEnd ( g , 1 ) ) , u ) } function c ( ) { l ( ) , g && ( e . rem
n . on ( "compositionstart compositionend" , function ( e ) { n . composing = "compositionstart" === e . type } ) , n . contentStyles . length > 0 && ( m = "" , I ( n . contentStyles , function ( e ) { m += e + "\r\n" } ) , n . dom . addStyle ( m ) ) , I ( n . contentCSS , function ( e ) { n . loadedCSS [ e ] || ( n . dom . loadCSS ( e ) , n . loadedCSS [ e ] = ! 0 ) } ) , r . auto _focus && N . setEditorTimeout ( n , function ( ) { var e ; e = r . auto _focus === ! 0 ? n : n . editorManager . get ( r . auto _focus ) , e . destroyed || e . focus ( ) } , 100 ) , s = p = h = null } , focus : function ( e ) { function t ( e ) { return n . dom . getParent ( e , function ( e ) { return "true" === n . dom . getContentEditable ( e ) } ) } var n = this , r = n . selection , i = n . settings . content _editable , o , a , s = n . getDoc ( ) , l = n . getBody ( ) , u ; if ( ! e ) { if ( o = r . getRng ( ) , o . item && ( a = o . item ( 0 ) ) , n . quirks . refreshContentEditable ( ) , u = t ( r . getNode ( ) ) , n . $ . contains ( l , u ) ) return u . focus ( ) , r . normalize ( ) , void n . editorManager . setActive ( n ) ; if ( i || ( w . opera || n . getBody ( ) . focus ( ) , n . getWin ( ) . focus ( ) ) , $ || i ) { if ( l . setActive ) try { l . setActive ( ) } catch ( c ) { l . focus ( ) } else l . focus ( ) ; i && r . normalize ( ) } a && a . ownerDocument == s && ( o = s . body . createControlRange ( ) , o . addElement ( a ) , o . select ( ) ) } n . editorManager . setActive ( n ) } , execCallback : function ( e ) { var t = this , n = t . settings [ e ] , r ; if ( n ) return t . callbackLookup && ( r = t . callbackLookup [ e ] ) && ( n = r . func , r = r . scope ) , "string" == typeof n && ( r = n . replace ( /\.\w+$/ , "" ) , r = r ? W ( r ) : 0 , n = W ( n ) , t . callbackLookup = t . callbackLookup || { } , t . callbackLookup [ e ] = { func : n , scope : r } ) , n . apply ( r || t , Array . prototype . slice . call ( arguments , 1 ) ) } , translate : function ( e ) { var t = this . settings . language || "en" , n = this . editorManager . i18n ; return e ? ( e = n . data [ t + "." + e ] || e . replace ( /\{\#([^\}]+)\}/g , function ( e , r ) { return n . data [ t + "." + r ] || "{#" + r + "}" } ) , this . editorManager . translate ( e ) ) : "" } , getLang : function ( e , n ) { return this . editorManager . i18n . data [ ( this . settings . language || "en" ) + "." + e ] || ( n !== t ? n : "{#" + e + "}" ) } , getParam : function ( e , t , n ) { var r = e in this . settings ? this . settings [ e ] : t , i ; return "hash" === n ? ( i = { } , "string" == typeof r ? I ( r . indexOf ( "=" ) > 0 ? r . split ( /[;,](?![^=;,]*(?:[;,]|$))/ ) : r . split ( "," ) , function ( e ) { e = e . split ( "=" ) , e . length > 1 ? i [ U ( e [ 0 ] ) ] = U ( e [ 1 ] ) : i [ U ( e [ 0 ] ) ] = U ( e ) } ) : i = r , i ) : r } , nodeChanged : function ( e ) { this . _nodeChangeDispatcher . nodeChanged ( e ) } , addButton : function ( e , t ) { var n = this ; t . cmd && ( t . onclick = function ( ) { n . execCommand ( t . cmd ) } ) , t . text || t . icon || ( t . icon = e ) , n . buttons = n . buttons || { } , t . tooltip = t . tooltip || t . title , n . buttons [ e ] = t } , addSidebar : function ( e , t ) { return B . add ( this , e , t ) } , addMenuItem : function ( e , t ) { var n = this ; t . cmd && ( t . onclick = function ( ) { n . execCommand ( t . cmd ) } ) , n . menuItems = n . menuItems || { } , n . menuItems [ e ] = t } , addContextToolbar : function ( e , t ) { var n = this , r ; n . contextToolbars = n . contextToolbars || [ ] , "string" == typeof e && ( r = e , e = function ( e ) { return n . dom . is ( e , r ) } ) , n . contextToolbars . push ( { id : A . uuid ( "mcet" ) , predicate : e , items : t } ) } , addCommand : function ( e , t , n ) { this . editorCommands . addCommand ( e , t , n ) } , addQueryStateHandler : function ( e , t , n ) { this . editorCommands . addQueryStateHandler ( e , t , n ) } , addQueryValueHandler : function ( e , t , n ) { this . editorCommands . addQueryValueHandler ( e , t , n ) } , addShortcut : function ( e , t , n , r ) { this . shortcuts . add ( e , t , n , r ) } , execCommand : function ( e , t , n , r ) { return this . editorCommands . execCommand ( e , t , n , r ) } , queryCommandState : function ( e ) { return this . editorCommands . queryCommandState ( e ) } , queryCommandValue : function ( e ) { return this . editorCommands . queryCommandValue ( e ) } , queryCommandSupported : function ( e ) { return this . editorCommands . queryCommandSupported ( e ) } , show : function ( ) { var e = this ; e . hidden && ( e . hidden = ! 1 , e . inline ? e . getBody ( ) . contentEditable = ! 0 : ( M . show ( e . getContainer ( ) ) , M . hide ( e . id ) ) , e . load ( ) , e . fire ( "show" ) ) } , hide : function ( ) { var e = this , t = e . getDoc ( ) ; e . hidden || ( q && t && ! e . inline && t . execCommand ( "SelectAll" ) , e . save ( ) , e . inline ? ( e . getBody ( ) . contentEditable = ! 1 , e == e . editorManager . focusedEditor && ( e . editorManager . focusedEditor = null ) ) : ( M . hide ( e . getContainer ( ) ) , M . setStyle ( e . id , "display" , e . orgDisplay ) ) , e . hidden = ! 0 , e . fire ( "hide" ) ) } , isHidden : function ( ) { return ! ! this . hidden } , setProgressState : function ( e , t ) { this . fire ( "ProgressState" , { state : e , time : t } ) } , load : function ( e ) { var n = this , r = n . getElement ( ) , i ; if ( r ) return e = e || { } , e . load = ! 0 , i = n . setContent ( r . value !== t ? r . value : r . innerHTML , e ) , e . element = r , e . no _events || n . fire ( "LoadContent" , e ) , e . element = r = null , i } , save : function ( e ) { var t = this , n = t . getElement ( ) , r , i ;
var r = n . keyCode ; "INPUT" === n . target . nodeName && ( r === i . DOWN ? ( n . preventDefault ( ) , e . fire ( "autocomplete" ) , t ( 0 , e . menu ) ) : r === i . UP && ( n . preventDefault ( ) , t ( - 1 , e . menu ) ) ) } ) , e . _super ( ) } , remove : function ( ) { r ( this . getEl ( "inp" ) ) . off ( ) , this . menu && this . menu . remove ( ) , this . _super ( ) } } ) } ) , r ( Et , [ wt ] , function ( e ) { return e . 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 ( r ) { } } , bindStates : function ( ) { var e = this ; return e . state . on ( "change:value" , function ( t ) { e . state . get ( "rendered" ) && e . repaintColor ( t . value ) } ) , e . _super ( ) } } ) } ) , r ( Nt , [ bt , Ae ] , function ( e , t ) { return e . extend ( { showPanel : function ( ) { var e = this , n = e . settings ; if ( e . active ( ! 0 ) , e . panel ) e . panel . show ( ) ; else { var r = n . panel ; r . type && ( r = { layout : "grid" , items : r } ) , r . role = r . role || "dialog" , r . popover = ! 0 , r . autohide = ! 0 , r . ariaRoot = ! 0 , e . panel = new t ( r ) . on ( "hide" , function ( ) { e . active ( ! 1 ) } ) . on ( "cancel" , function ( t ) { t . stopPropagation ( ) , e . focus ( ) , e . hidePanel ( ) } ) . parent ( e ) . renderTo ( e . getContainerElm ( ) ) , e . panel . fire ( "show" ) , e . panel . reflow ( ) } e . panel . moveRel ( e . getEl ( ) , n . popoverAlign || ( e . isRtl ( ) ? [ "bc-tr" , "bc-tc" ] : [ "bc-tl" , "bc-tc" ] ) ) } , hidePanel : function ( ) { var e = this ; e . panel && e . 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 ( ) } } ) } ) , r ( _t , [ Nt , w ] , function ( e , t ) { var n = t . DOM ; return e . extend ( { init : function ( e ) { this . _super ( e ) , 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 , r = e . state . get ( "text" ) , i = e . settings . icon ? n + "ico " + n + "i-" + e . settings . icon : "" , o = e . settings . image ? " style=\"background-image: url('" + e . settings . image + "')\"" : "" , a = "" ; return r && ( e . classes . add ( "btn-has-text" ) , a = '<span class="' + n + 'txt">' + e . encode ( r ) + "</span>" ) , '<div id="' + t + '" class="' + e . classes + '" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">' + ( i ? '<i class="' + i + '"' + o + "></i>" : "" ) + '<span id="' + t + '-preview" class="' + n + 'preview"></span>' + a + '</button><button type="button" class="' + n + 'open" hidefocus="1" tabindex="-1"> <i class="' + n + 'caret"></i></button></div>' } , postRender : function ( ) { var e = this , t = e . settings . onclick ; return e . on ( "click" , function ( r ) { r . aria && "down" == r . aria . key || r . control != e || n . getParent ( r . target , "." + e . classPrefix + "open" ) || ( r . stopImmediatePropagation ( ) , t . call ( e , r ) ) } ) , delete e . settings . onclick , e . _super ( ) } } ) } ) , r ( St , [ ] , function ( ) { function e ( e ) { function i ( e , i , o ) { var a , s , l , u , c , d ; return a = 0 , s = 0 , l = 0 , e /= 255 , i /= 255 , o /= 255 , c = t ( e , t ( i , o ) ) , d = n ( e , n ( i , o ) ) , c == d ? ( l = c , { h : 0 , s : 0 , v : 100 * l } ) : ( u = e == c ? i - o : o == c ? e - i : o - e , a = e == c ? 3 : o == c ? 1 : 5 , a = 60 * ( a - u / ( d - c ) ) , s = ( d - c ) / d , l = d , { h : r ( a ) , s : r ( 100 * s ) , v : r ( 100 * l ) } ) } function o ( e , i , o ) { var a , s , l , u ; if ( e = ( parseInt ( e , 10 ) || 0 ) % 360 , i = parseInt ( i , 10 ) / 100 , o = parseInt ( o , 10 ) / 100 , i = n ( 0 , t ( i , 1 ) ) , o = n ( 0 , t ( o , 1 ) ) , 0 === i ) return void ( d = f = p = r ( 255 * o ) ) ; switch ( a = e / 60 , s = o * i , l = s * ( 1 - Math . abs ( a % 2 - 1 ) ) , u = o - s , Math . floor ( a ) ) { case 0 : d = s , f = l , p = 0 ; break ; case 1 : d = l , f = s , p = 0 ; break ; case 2 : d = 0 , f = s , p = l ; break ; case 3 : d = 0 , f = l , p = s ; break ; case 4 : d = l , f = 0 , p = s ; break ; case 5 : d = s , f = 0 , p = l ; break ; default : d = f = p = 0 } d = r ( 255 * ( d + u ) ) , f = r ( 255 * ( f + u ) ) , p = r ( 255 * ( p + u ) ) } function a ( ) { function e ( e ) { return e = parseInt ( e , 10 ) . toString ( 16 ) , e . length > 1 ? e : "0" + e } return "#" + e ( d ) + e ( f ) + e ( p ) } function s ( ) { return { r : d , g : f , b : p } } function l ( ) { return i ( d , f , p ) } function u ( e ) { var t ; return "object" == typeof e ? "r" in e ? ( d = e . r , f = e . g , p = e . b ) : "v" in e && o ( e . h , e . s , e . v ) : ( t = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi . exec ( e ) ) ? ( d = parseInt ( t [ 1 ] , 10 ) , f = parseInt ( t [ 2 ] , 10 ) , p = parseInt ( t [ 3 ] , 10 ) ) : ( t = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi . exec ( e ) ) ? ( d =
return e . extend ( { Defaults : { role : "menubar" , containerCls : "menubar" , ariaRoot : ! 0 , defaults : { type : "menubutton" } } } ) } ) , r ( jt , [ bt , we , qt ] , function ( e , t , n ) { function r ( e , t ) { for ( ; e ; ) { if ( t === e ) return ! 0 ; e = e . parentNode } return ! 1 } var i = e . 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 ( ) { var e = this , n ; return e . menu && e . menu . visible ( ) ? e . hideMenu ( ) : ( e . menu || ( n = e . state . get ( "menu" ) || [ ] , n . length ? n = { type : "menu" , items : n } : n . type = n . type || "menu" , n . renderTo ? e . menu = n . parent ( e ) . show ( ) . renderTo ( ) : e . menu = t . create ( n ) . parent ( e ) . renderTo ( ) , e . fire ( "createmenu" ) , e . menu . reflow ( ) , e . menu . on ( "cancel" , function ( t ) { t . control . parent ( ) === e . menu && ( t . stopPropagation ( ) , e . focus ( ) , e . hideMenu ( ) ) } ) , e . menu . on ( "select" , function ( ) { e . focus ( ) } ) , e . menu . on ( "show hide" , function ( t ) { t . control == e . menu && e . activeMenu ( "show" == t . type ) , e . aria ( "expanded" , "show" == t . type ) } ) . fire ( "show" ) ) , 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" ] ) , void e . fire ( "showmenu" ) ) } , hideMenu : function ( ) { var e = this ; e . menu && ( e . menu . items ( ) . each ( function ( e ) { e . hideMenu && e . hideMenu ( ) } ) , e . menu . hide ( ) ) } , activeMenu : function ( e ) { this . classes . toggle ( "active" , e ) } , renderHtml : function ( ) { var e = this , t = e . _id , r = e . classPrefix , i = e . settings . icon , o , a = e . state . get ( "text" ) , s = "" ; return o = e . settings . image , o ? ( i = "none" , "string" != typeof o && ( o = window . getSelection ? o [ 0 ] : o [ 1 ] ) , o = " style=\"background-image: url('" + o + "')\"" ) : o = "" , a && ( e . classes . add ( "btn-has-text" ) , s = '<span class="' + r + 'txt">' + e . encode ( a ) + "</span>" ) , i = e . settings . icon ? r + "ico " + r + "i-" + i : "" , e . aria ( "role" , e . parent ( ) instanceof n ? "menuitem" : "button" ) , '<div id="' + t + '" class="' + e . classes + '" tabindex="-1" aria-labelledby="' + t + '"><button id="' + t + '-open" role="presentation" type="button" tabindex="-1">' + ( i ? '<i class="' + i + '"' + o + "></i>" : "" ) + s + ' <i class="' + r + 'caret"></i></button></div>' } , postRender : function ( ) { var e = this ; return e . on ( "click" , function ( t ) { t . control === e && r ( t . target , e . getEl ( ) ) && ( e . showMenu ( ) , t . aria && e . menu . items ( ) . filter ( ":visible" ) [ 0 ] . focus ( ) ) } ) , e . on ( "mouseenter" , function ( t ) { var n = t . control , r = e . parent ( ) , o ; n && r && n instanceof i && n . parent ( ) == r && ( r . items ( ) . filter ( "MenuButton" ) . each ( function ( e ) { e . hideMenu && e != n && ( e . menu && e . menu . visible ( ) && ( o = ! 0 ) , e . hideMenu ( ) ) } ) , o && ( n . focus ( ) , n . showMenu ( ) ) ) } ) , e . _super ( ) } , bindStates : function ( ) { var e = this ; return e . state . on ( "change:menu" , function ( ) { e . menu && e . menu . remove ( ) , e . menu = null } ) , e . _super ( ) } , remove : function ( ) { this . _super ( ) , this . menu && this . menu . remove ( ) } } ) ; return i } ) , r ( Yt , [ Pe , we , d , c ] , function ( e , t , n , r ) { return e . extend ( { Defaults : { border : 0 , role : "menuitem" } , init : function ( e ) { var t = this , n ; t . _super ( e ) , e = t . settings , t . classes . add ( "menu-item" ) , e . menu && t . classes . add ( "menu-item-expand" ) , e . preview && t . classes . add ( "menu-item-preview" ) , n = t . state . get ( "text" ) , "-" !== n && "|" !== n || ( t . classes . add ( "menu-item-sep" ) , t . aria ( "role" , "separator" ) , t . state . set ( "text" , "-" ) ) , e . selectable && ( t . aria ( "role" , "menuitemcheckbox" ) , t . classes . add ( "menu-item-checkbox" ) , e . icon = "selected" ) , e . preview || e . selectable || t . classes . add ( "menu-item-normal" ) , t . on ( "mousedown" , function ( e ) { e . preventDefault ( ) } ) , e . menu && ! e . ariaHideMenu && t . aria ( "haspopup" , ! 0 ) } , hasMenus : function ( ) { return ! ! this . settings . menu } , showMenu : function ( ) { var e = this , n = e . settings , r , i = e . parent ( ) ; if ( i . items ( ) . each ( function ( t ) { t !== e && t . hideMenu ( ) } ) , n . menu ) { r = e . menu , r ? r . show ( ) : ( r = n . menu , r . length ? r = { type : "menu" , items : r } : r . type = r . type || "menu" , i . settings . itemDefaults && ( r . itemDefaults = i . settings . itemDefaults ) , r = e . menu = t . create ( r ) . parent ( e ) . renderTo ( ) , r . reflow ( ) , r . on ( "cancel" , function ( t ) { t . stopPropagation ( ) , e . focus ( ) , r . hide ( ) } ) , r . on ( "show hide" , function ( e ) { e . control . items && e . control . items ( ) . each ( function ( e ) { e . active ( e . settings . selected ) } ) } ) . fire ( "show" ) , r . on ( "hide" , function ( t ) { t . control === r && e . classes . remove ( "selected" ) } ) , r . submenu = ! 0 ) , r . _parentMenu = i , r . classes . add ( "menu-sub" ) ; var o = r . testMoveRel ( e . getEl ( ) , e . isRtl ( ) ? [ "tl-tr" , "bl-br" , "tr-tl" , "br-bl" ] : [ "tr-tl" , "br-bl" , "tl-tr" , "bl-br" ] ) ; r . moveRel ( e . getEl ( ) , o ) , r . rel =