From c908c8f708b396b2b99f8091c7128d8998f32ce6 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Mon, 10 Feb 2014 23:48:12 +0000 Subject: [PATCH] Edit image in TinyMCE: - Add a "toolbar" at the top of the image with two buttons: Edit and Delete. - Don't open the edit modal on second click on the image. Makes the "edit" button somewhat pointless and can sometimes trigger after resizing the image. - When the image has caption: attempt to prevent IE11 from making the caption element resizable and wrapping it in thick border. - When the caret is inside a caption next to the image, pressing Enter will create a new

tag above the caption. - Hide the image toolbar on drag, cut, align. Props gcorne, see #24409. Built from https://develop.svn.wordpress.org/trunk@27159 git-svn-id: http://core.svn.wordpress.org/trunk@27025 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/class-wp-editor.php | 10 +- .../js/tinymce/plugins/wpeditimage/plugin.js | 366 +++++++++++++----- .../tinymce/plugins/wpeditimage/plugin.min.js | 2 +- .../js/tinymce/skins/wordpress/wp-content.css | 40 ++ wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 119283 -> 119798 bytes 5 files changed, 311 insertions(+), 107 deletions(-) diff --git a/wp-includes/class-wp-editor.php b/wp-includes/class-wp-editor.php index bcbc631835..a8299451c2 100644 --- a/wp-includes/class-wp-editor.php +++ b/wp-includes/class-wp-editor.php @@ -207,7 +207,7 @@ final class _WP_Editors { $ext_plugins = ''; if ( $set['teeny'] ) { - self::$plugins = $plugins = apply_filters( 'teeny_mce_plugins', array( 'fullscreen', 'link', 'image', 'wordpress', 'wplink' ), $editor_id ); + self::$plugins = $plugins = apply_filters( 'teeny_mce_plugins', array( 'fullscreen', 'link', 'image', 'wordpress', 'wpeditimage', 'wplink' ), $editor_id ); } else { /** * TinyMCE external plugins filter @@ -335,8 +335,12 @@ final class _WP_Editors { self::$first_init['external_plugins'] = json_encode( $mce_external_plugins ); } - // WordPress default stylesheet - $mce_css = array( self::$baseurl . '/skins/wordpress/wp-content.css' ); + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + $version = 'ver=' . $GLOBALS['wp_version']; + $dashicons = includes_url( "css/dashicons$suffix.css?$version" ); + + // WordPress default stylesheet and dashicons + $mce_css = array( $dashicons, self::$baseurl . '/skins/wordpress/wp-content.css' ); // load editor_style.css if the current theme supports it if ( ! empty( $GLOBALS['editor_styles'] ) && is_array( $GLOBALS['editor_styles'] ) ) { diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js b/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js index 6681eda11c..f62509779b 100644 --- a/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +++ b/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js @@ -42,7 +42,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { width = parseInt( w, 10 ) + 10; - return '

' + + return '
' + '
'+ img +'
'+ cap +'
'; }); } @@ -102,7 +102,8 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } function extractImageData( imageNode ) { - var classes, metadata, captionBlock, caption; + var classes, metadata, captionBlock, caption, + dom = editor.dom; // default attributes metadata = { @@ -118,12 +119,13 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { linkUrl: '' }; - metadata.url = editor.dom.getAttrib( imageNode, 'src' ); - metadata.alt = editor.dom.getAttrib( imageNode, 'alt' ); - metadata.width = parseInt( editor.dom.getAttrib( imageNode, 'width' ), 10 ); - metadata.height = parseInt( editor.dom.getAttrib( imageNode, 'height' ), 10 ); + metadata.url = dom.getAttrib( imageNode, 'src' ); + metadata.alt = dom.getAttrib( imageNode, 'alt' ); + metadata.width = parseInt( dom.getAttrib( imageNode, 'width' ), 10 ); + metadata.height = parseInt( dom.getAttrib( imageNode, 'height' ), 10 ); - //TODO: probably should capture attributes on both the and the so that they can be restored when the image and/or caption are updated + //TODO: probably should capture attributes on both the and the so that they can be restored + // when the image and/or caption are updated // maybe use getAttribs() // extract meta data from classes (candidate for turning into a method) @@ -144,7 +146,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } ); // extract caption - captionBlock = editor.dom.getParents( imageNode, '.wp-caption' ); + captionBlock = dom.getParents( imageNode, '.wp-caption' ); if ( captionBlock.length ) { captionBlock = captionBlock[0]; @@ -155,26 +157,26 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { metadata.align = name.replace( 'align', '' ); } } ); - caption = editor.dom.select( 'dd.wp-caption-dd', captionBlock ); + + caption = dom.select( 'dd.wp-caption-dd', captionBlock ); if ( caption.length ) { caption = caption[0]; // need to do some more thinking about this metadata.caption = editor.serializer.serialize( caption ) .replace( /]*>/g, '$&\n' ).replace( /^

/, '' ).replace( /<\/p>$/, '' ); - } } // extract linkTo - if ( imageNode.parentNode.nodeName === 'A' ) { - metadata.linkUrl = editor.dom.getAttrib( imageNode.parentNode, 'href' ); + if ( imageNode.parentNode && imageNode.parentNode.nodeName === 'A' ) { + metadata.linkUrl = dom.getAttrib( imageNode.parentNode, 'href' ); } return metadata; } function updateImage( imageNode, imageData ) { - var className, width, node, html, captionNode, nodeToReplace, uid; + var className, width, node, html, captionNode, nodeToReplace, uid, editedImg; if ( imageData.caption ) { @@ -185,11 +187,11 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { //TODO: shouldn't add the id attribute if it isn't an attachment - // should create a new function for genrating the caption markup + // should create a new function for generating the caption markup html = '

' + '
'+ html + '
'+ imageData.caption +'
'; - node = editor.dom.create( 'div', { 'class': 'mceTemp', draggable: 'true' }, html ); + node = editor.dom.create( 'div', { 'class': 'mceTemp' }, html ); } else { node = createImageAndLink( imageData, 'node' ); } @@ -215,12 +217,15 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { editor.dom.setAttrib( node, 'data-wp-replace-id', '' ); - if ( node.nodeName === 'IMG' ) { - editor.selection.select( node ); - } else { - editor.selection.select( editor.dom.select( 'img', node )[0] ); - } editor.nodeChanged(); + + editedImg = node.nodeName === 'IMG' ? node : editor.dom.select( 'img', node )[0]; + + if ( editedImg ) { + editor.selection.select( editedImg ); + // refresh toolbar + addToolbar( editedImg ); + } } function createImageAndLink( imageData, mode ) { @@ -264,11 +269,124 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } } + function editImage( img ) { + var frame, callback; + + if ( typeof wp === 'undefined' || ! wp.media ) { + editor.execCommand( 'mceImage' ); + return; + } + + editor.undoManager.add(); + + frame = wp.media({ + frame: 'image', + state: 'image-details', + metadata: extractImageData( img ) + } ); + + callback = function( imageData ) { + updateImage( img, imageData ); + editor.focus(); + }; + + frame.state('image-details').on( 'update', callback ); + frame.state('replace-image').on( 'replace', callback ); + frame.on( 'close', function() { + editor.focus(); + // editor.selection.select( img ); + // editor.nodeChanged(); + }); + + frame.open(); + } + + function removeImage( node ) { + var wrap; + + if ( node.nodeName === 'DIV' && editor.dom.hasClass( node, 'mceTemp' ) ) { + wrap = node; + } else if ( node.nodeName === 'IMG' || node.nodeName === 'DT' || node.nodeName === 'A' ) { + wrap = editor.dom.getParent( node, 'div.mceTemp' ); + } + + if ( wrap ) { + if ( wrap.nextSibling ) { + editor.selection.select( wrap.nextSibling ); + } else if ( wrap.previousSibling ) { + editor.selection.select( wrap.previousSibling ); + } else { + editor.selection.select( wrap.parentNode ); + } + + editor.selection.collapse( true ); + editor.nodeChanged(); + editor.dom.remove( wrap ); + } else { + editor.dom.remove( node ); + } + } + + function addToolbar( node ) { + var position, toolbarHtml, toolbar, + dom = editor.dom; + + removeToolbar(); + + // Don't add to placeholders + if ( ! node || node.nodeName !== 'IMG' || isPlaceholder( node ) ) { + return; + } + + dom.setAttrib( node, 'data-wp-imgselect', 1 ); + position = dom.getPos( node, editor.getBody() ); + + toolbarHtml = '
' + + '
' + + '
'; + + toolbar = dom.create( 'div', { + 'id': 'wp-image-toolbar', + 'data-mce-bogus': '1', + 'contenteditable': false + }, toolbarHtml ); + + editor.getBody().appendChild( toolbar ); + + dom.setStyles( toolbar, { + top: position.y, + left: position.x, + width: node.width + }); + } + + function removeToolbar() { + var toolbar = editor.dom.get( 'wp-image-toolbar' ); + + if ( toolbar ) { + editor.dom.remove( toolbar ); + } + + editor.dom.setAttrib( editor.dom.select( 'img[data-wp-imgselect]' ), 'data-wp-imgselect', null ); + } + + function isPlaceholder( node ) { + var dom = editor.dom; + + if ( dom.hasClass( node, 'mceItem' ) || dom.getAttrib( node, 'data-mce-placeholder' ) || + dom.getAttrib( node, 'data-mce-object' ) ) { + + return true; + } + + return false; + } + editor.on( 'init', function() { var dom = editor.dom; // Add caption field to the default image dialog - editor.on( 'wpLoadImageForm', function( e ) { + editor.on( 'wpLoadImageForm', function( event ) { if ( editor.getParam( 'wpeditimage_disable_captions' ) ) { return; } @@ -283,26 +401,26 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { label: 'Image caption' }; - e.data.splice( e.data.length - 1, 0, captionField ); + event.data.splice( event.data.length - 1, 0, captionField ); }); // Fix caption parent width for images added from URL - editor.on( 'wpNewImageRefresh', function( e ) { + editor.on( 'wpNewImageRefresh', function( event ) { var parent, captionWidth; - if ( parent = dom.getParent( e.node, 'dl.wp-caption' ) ) { + if ( parent = dom.getParent( event.node, 'dl.wp-caption' ) ) { if ( ! parent.style.width ) { - captionWidth = parseInt( e.node.clientWidth, 10 ) + 10; + captionWidth = parseInt( event.node.clientWidth, 10 ) + 10; captionWidth = captionWidth ? captionWidth + 'px' : '50%'; dom.setStyle( parent, 'width', captionWidth ); } } }); - editor.on( 'wpImageFormSubmit', function( e ) { - var data = e.imgData.data, - imgNode = e.imgData.node, - caption = e.imgData.caption, + editor.on( 'wpImageFormSubmit', function( event ) { + var data = event.imgData.data, + imgNode = event.imgData.node, + caption = event.imgData.caption, captionId = '', captionAlign = '', captionWidth = '', @@ -311,7 +429,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { // Temp image id so we can find the node later data.id = '__wp-temp-img-id'; // Cancel the original callback - e.imgData.cancel = true; + event.imgData.cancel = true; if ( ! data.style ) { data.style = null; @@ -365,7 +483,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } if ( parent && parent.nodeName === 'P' ) { - wrap = dom.create( 'div', { 'class': 'mceTemp', 'draggable': 'true' }, html ); + wrap = dom.create( 'div', { 'class': 'mceTemp' }, html ); dom.insertAfter( wrap, parent ); editor.selection.select( wrap ); editor.nodeChanged(); @@ -374,7 +492,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { dom.remove( parent ); } } else { - editor.selection.setContent( '
' + html + '
' ); + editor.selection.setContent( '
' + html + '
' ); } } else { editor.selection.setContent( html ); @@ -431,7 +549,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { '
'+ html +'
'+ caption +'
'; if ( parent = dom.getParent( imgNode, 'p' ) ) { - wrap = dom.create( 'div', { 'class': 'mceTemp', 'draggable': 'true' }, html ); + wrap = dom.create( 'div', { 'class': 'mceTemp' }, html ); dom.insertAfter( wrap, parent ); editor.selection.select( wrap ); editor.nodeChanged(); @@ -443,7 +561,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { dom.remove( parent ); } } else { - editor.selection.setContent( '
' + html + '
' ); + editor.selection.setContent( '
' + html + '
' ); } } } else { @@ -466,13 +584,13 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { imgNode = dom.get('__wp-temp-img-id'); dom.setAttrib( imgNode, 'id', imgId ); - e.imgData.node = imgNode; + event.imgData.node = imgNode; }); - editor.on( 'wpLoadImageData', function( e ) { + editor.on( 'wpLoadImageData', function( event ) { var parent, - data = e.imgData.data, - imgNode = e.imgData.node; + data = event.imgData.data, + imgNode = event.imgData.node; if ( parent = dom.getParent( imgNode, 'dl.wp-caption' ) ) { parent = dom.select( 'dd.wp-caption-dd', parent )[0]; @@ -484,33 +602,64 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } }); - // Prevent dragging images out of the caption elements dom.bind( editor.getDoc(), 'dragstart', function( event ) { var node = editor.selection.getNode(); + // Prevent dragging images out of the caption elements if ( node.nodeName === 'IMG' && dom.getParent( node, '.wp-caption' ) ) { event.preventDefault(); } + + // Remove toolbar to avoid an orphaned toolbar when dragging an image to a new location + removeToolbar(); + }); + + // Prevent IE11 from making dl.wp-caption resizable + if ( tinymce.Env.ie && tinymce.Env.ie > 10 ) { + // The 'mscontrolselect' event is supported only in IE11+ + dom.bind( editor.getBody(), 'mscontrolselect', function( event ) { + if ( event.target.nodeName === 'IMG' && dom.getParent( event.target, '.wp-caption' ) ) { + // Hide the thick border with resize handles around dl.wp-caption + editor.getBody().focus(); // :( + } else if ( event.target.nodeName === 'DL' && dom.hasClass( event.target, 'wp-caption' ) ) { + // Trigger the thick border with resize handles... + // This will make the caption text editable. + event.target.focus(); + } + }); + + editor.on( 'click', function( event ) { + if ( event.target.nodeName === 'IMG' && dom.getAttrib( event.target, 'data-wp-imgselect' ) && + dom.getParent( event.target, 'dl.wp-caption' ) ) { + + editor.getBody().focus(); + } + }); + } }); editor.on( 'ObjectResized', function( event ) { var parent, width, node = event.target; - if ( node.nodeName === 'IMG' && ( parent = editor.dom.getParent( node, '.wp-caption' ) ) ) { - width = event.width || editor.dom.getAttrib( node, 'width' ); + if ( node.nodeName === 'IMG' ) { + if ( parent = editor.dom.getParent( node, '.wp-caption' ) ) { + width = event.width || editor.dom.getAttrib( node, 'width' ); - if ( width ) { - width = parseInt( width, 10 ) + 10; - editor.dom.setStyle( parent, 'width', width + 'px' ); + if ( width ) { + width = parseInt( width, 10 ) + 10; + editor.dom.setStyle( parent, 'width', width + 'px' ); + } } + // refresh toolbar + addToolbar( node ); } }); - editor.on( 'BeforeExecCommand', function( e ) { + editor.on( 'BeforeExecCommand', function( event ) { var node, p, DL, align, - cmd = e.command, + cmd = event.command, dom = editor.dom; if ( cmd === 'mceInsertContent' ) { @@ -525,7 +674,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { if ( tinymce.Env.ie > 8 ) { setTimeout( function() { editor.selection.setCursorLocation( p, 0 ); - editor.selection.setContent( e.value ); + editor.selection.setContent( event.value ); }, 500 ); return false; @@ -536,6 +685,8 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { align = cmd.substr(7).toLowerCase(); align = 'align' + align; + removeToolbar(); + if ( dom.is( node, 'dl.wp-caption' ) ) { DL = node; } else { @@ -566,17 +717,18 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } }); - editor.on( 'keydown', function( e ) { + editor.on( 'keydown', function( event ) { var node, wrap, P, spacer, selection = editor.selection, dom = editor.dom; - if ( e.keyCode === tinymce.util.VK.ENTER ) { + if ( event.keyCode === tinymce.util.VK.ENTER ) { // When pressing Enter inside a caption move the caret to a new parapraph under it - wrap = dom.getParent( editor.selection.getNode(), 'div.mceTemp' ); + node = selection.getNode(); + wrap = dom.getParent( node, 'div.mceTemp' ); if ( wrap ) { - dom.events.cancel(e); // Doesn't cancel all :( + dom.events.cancel( event ); // Doesn't cancel all :( // Remove any extra dt and dd cleated on pressing Enter... tinymce.each( dom.select( 'dt, dd', wrap ), function( element ) { @@ -585,13 +737,19 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } }); - spacer = tinymce.Env.ie ? '' : '
'; + spacer = tinymce.Env.ie && tinymce.Env.ie < 11 ? '' : '
'; P = dom.create( 'p', null, spacer ); - dom.insertAfter( P, wrap ); - selection.setCursorLocation( P, 0 ); + + if ( node.nodeName === 'DD' ) { + dom.insertAfter( P, wrap ); + } else { + wrap.parentNode.insertBefore( P, wrap ); + } + editor.nodeChanged(); + selection.setCursorLocation( P, 0 ); } - } else if ( e.keyCode === tinymce.util.VK.DELETE || e.keyCode === tinymce.util.VK.BACKSPACE ) { + } else if ( event.keyCode === tinymce.util.VK.DELETE || event.keyCode === tinymce.util.VK.BACKSPACE ) { node = selection.getNode(); if ( node.nodeName === 'DIV' && dom.hasClass( node, 'mceTemp' ) ) { @@ -601,56 +759,57 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { } if ( wrap ) { - dom.events.cancel(e); - - if ( wrap.nextSibling ) { - selection.select( wrap.nextSibling ); - } else if ( wrap.previousSibling ) { - selection.select( wrap.previousSibling ); - } else { - selection.select( wrap.parentNode ); - } - - selection.collapse( true ); - editor.nodeChanged(); - dom.remove( wrap ); - wrap = null; + dom.events.cancel( event ); + removeImage( node ); return false; } } }); - editor.on( 'mousedown', function( e ) { - var imageNode, frame, callback; - if ( e.target.nodeName === 'IMG' && editor.selection.getNode() === e.target ) { - // Don't trigger on right-click - if ( e.button !== 2 ) { + editor.on( 'mousedown', function( event ) { + var node = event.target; - // Don't attempt to edit placeholders - if ( editor.dom.hasClass( e.target, 'mceItem' ) || '1' === editor.dom.getAttrib( e.target, 'data-mce-placeholder' ) ) { - return; - } - - imageNode = e.target; - - frame = wp.media({ - frame: 'image', - state: 'image-details', - metadata: extractImageData( imageNode ) - } ); - - callback = function( imageData ) { - updateImage( imageNode, imageData ); - editor.focus(); - }; - - frame.state('image-details').on( 'update', callback ); - frame.state('replace-image').on( 'replace', callback ); - - frame.open(); - } + if ( tinymce.Env.ie && editor.dom.getParent( node, '#wp-image-toolbar' ) ) { + // Stop IE > 8 from making the wrapper resizable on mousedown + event.preventDefault(); } - } ); + + if ( node.nodeName === 'IMG' && ! editor.dom.getAttrib( node, 'data-wp-imgselect' ) && ! isPlaceholder( node ) ) { + addToolbar( node ); + } + }); + + editor.on( 'mouseup', function( event ) { + var image, + node = event.target, + dom = editor.dom; + + // Don't trigger on right-click + if ( event.button && event.button > 1 ) { + return; + } + + if ( node.nodeName === 'DIV' && dom.getParent( node, '#wp-image-toolbar' ) ) { + image = dom.select( 'img[data-wp-imgselect]' )[0]; + + if ( image ) { + editor.selection.select( image ); + + if ( dom.hasClass( node, 'remove' ) ) { + removeImage( image ); + removeToolbar(); + } else if ( dom.hasClass( node, 'edit' ) ) { + editImage( image ); + } + } + } else if ( node.nodeName !== 'IMG' ) { + removeToolbar(); + } + }); + + editor.on( 'cut', function() { + removeToolbar(); + }); editor.wpSetImgCaption = function( content ) { return parseShortcode( content ); @@ -660,13 +819,14 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { return getShortcode( content ); }; - editor.on( 'BeforeSetContent', function( e ) { - e.content = editor.wpSetImgCaption( e.content ); + editor.on( 'BeforeSetContent', function( event ) { + event.content = editor.wpSetImgCaption( event.content ); }); - editor.on( 'PostProcess', function( e ) { - if ( e.get ) { - e.content = editor.wpGetImgCaption( e.content ); + editor.on( 'PostProcess', function( event ) { + if ( event.get ) { + event.content = editor.wpGetImgCaption( event.content ); + event.content = event.content.replace( / data-wp-imgselect="1"/g, '' ); } }); diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js b/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js index 6d9c1f477c..7b6b1c04aa 100644 --- a/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js @@ -1 +1 @@ -tinymce.PluginManager.add("wpeditimage",function(a){function b(a){return a.replace(/(?:

)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(a,b,c){var d,e,f,g,h,i,j=tinymce.trim;return d=b.match(/id=['"]([^'"]*)['"] ?/),d&&(b=b.replace(d[0],"")),e=b.match(/align=['"]([^'"]*)['"] ?/),e&&(b=b.replace(e[0],"")),f=b.match(/width=['"]([0-9]*)['"] ?/),f&&(b=b.replace(f[0],"")),c=j(c),h=c.match(/((?:]+>)?]+>(?:<\/a>)?)([\s\S]*)/i),h&&h[2]?(g=j(h[2]),h=j(h[1])):(g=j(b).replace(/caption=['"]/,"").replace(/['"]$/,""),h=c),d=d&&d[1]?d[1]:"",e=e&&e[1]?e[1]:"alignnone",f=f&&f[1]?f[1]:"",f&&g?(i=parseInt(f,10)+10,'

"):c})}function c(a){return a.replace(/
]*>([\s\S]+?)<\/div>/g,function(a,b){var c="";return-1===b.indexOf("]+>([\s\S]+?)<\/dd>/i),c&&c[1]?"

"+c[1]+"

":""):(c=b.replace(/
]+)>\s*
]+>([\s\S]+?)<\/dt>\s*
]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi,function(a,b,c,d){var e,f,g;return g=c.match(/width="([0-9]*)"/),g=g&&g[1]?g[1]:"",g&&d?(e=b.match(/id="([^"]*)"/),e=e&&e[1]?e[1]:"",f=b.match(/class="([^"]*)"/),f=f&&f[1]?f[1]:"",f=f.match(/align[a-z]+/)||"alignnone",d=d.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),d=d.replace(/\s*\n\s*/g,"
"),'[caption id="'+e+'" align="'+f+'" width="'+g+'"]'+c+" "+d+"[/caption]"):c}),0!==c.indexOf("[caption")&&(c=b.replace(/[\s\S]*?((?:
]+>)?]+>(?:<\/a>)?)(

[\s\S]*<\/p>)?[\s\S]*/gi,"

$1

$2")),c)})}function d(b){var c,d,e,f;return d={attachment_id:!1,url:!1,height:"",width:"",size:"none",caption:"",alt:"",align:"none",link:!1,linkUrl:""},d.url=a.dom.getAttrib(b,"src"),d.alt=a.dom.getAttrib(b,"alt"),d.width=parseInt(a.dom.getAttrib(b,"width"),10),d.height=parseInt(a.dom.getAttrib(b,"height"),10),c=b.className.split(" "),tinymce.each(c,function(a){/^wp-image/.test(a)&&(d.attachment_id=parseInt(a.replace("wp-image-",""),10)),/^align/.test(a)&&(d.align=a.replace("align","")),/^size/.test(a)&&(d.size=a.replace("size-",""))}),e=a.dom.getParents(b,".wp-caption"),e.length&&(e=e[0],c=e.className.split(" "),tinymce.each(c,function(a){/^align/.test(a)&&(d.align=a.replace("align",""))}),f=a.dom.select("dd.wp-caption-dd",e),f.length&&(f=f[0],d.caption=a.serializer.serialize(f).replace(/]*>/g,"$&\n").replace(/^

/,"").replace(/<\/p>$/,""))),"A"===b.parentNode.nodeName&&(d.linkUrl=a.dom.getAttrib(b.parentNode,"href")),d}function e(b,c){var d,e,g,h,i,j,k;c.caption?(h=f(c,"html"),e=c.width+10,d="align"+c.align,h='

'+h+'
'+c.caption+"
",g=a.dom.create("div",{"class":"mceTemp",draggable:"true"},h)):g=f(c,"node"),j=b,i=a.dom.getParent(b,".mceTemp"),i?j=i:"A"===b.parentNode.nodeName&&(j=b.parentNode),k=a.dom.uniqueId("wp_"),a.dom.setAttrib(g,"data-wp-replace-id",k),a.dom.replace(g,j),g=a.dom.select('[data-wp-replace-id="'+k+'"]')[0],a.dom.setAttrib(g,"data-wp-replace-id",""),a.selection.select("IMG"===g.nodeName?g:a.dom.select("img",g)[0]),a.nodeChanged()}function f(b,c){var d,e=[];if(c=c?c:"node",b.caption||e.push("align"+b.align),b.attachment_id&&(e.push("wp-image-"+b.attachment_id),b.size&&e.push("size-"+b.size)),d={src:b.url,width:b.width,height:b.height,alt:b.alt},e.length&&(d["class"]=e.join(" ")),b.linkUrl){if("node"===c)return a.dom.create("a",{href:b.linkUrl},a.dom.createHTML("img",d));if("html"===c)return a.dom.createHTML("a",{href:b.linkUrl},a.dom.createHTML("img",d))}else{if("node"===c)return a.dom.create("img",d);if("html"===c)return a.dom.createHTML("img",d)}}return a.on("init",function(){var b=a.dom;a.on("wpLoadImageForm",function(b){if(!a.getParam("wpeditimage_disable_captions")){var c={type:"textbox",flex:1,name:"caption",minHeight:60,multiline:!0,scroll:!0,label:"Image caption"};b.data.splice(b.data.length-1,0,c)}}),a.on("wpNewImageRefresh",function(a){var c,d;(c=b.getParent(a.node,"dl.wp-caption"))&&(c.style.width||(d=parseInt(a.node.clientWidth,10)+10,d=d?d+"px":"50%",b.setStyle(c,"width",d)))}),a.on("wpImageFormSubmit",function(c){var d,e,f,g,h,i=c.imgData.data,j=c.imgData.node,k=c.imgData.caption,l="",m="",n="";return i.id="__wp-temp-img-id",c.imgData.cancel=!0,i.style||(i.style=null),i.src?(k&&(k=k.replace(/\r\n|\r/g,"\n").replace(/<\/?[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),k=k.replace(/(]*>)\s*\n\s*/g,"$1").replace(/\s*\n\s*/g,"
")),j?(h=j.id||null,b.setAttribs(j,i),d=b.getParent(j,"dl.wp-caption"),k?d?(e=b.select("dd.wp-caption-dd",d)[0])&&(e.innerHTML=k):(j.className&&(l=j.className.match(/wp-image-([0-9]+)/),m=j.className.match(/align(left|right|center|none)/)),m?(m=m[0],j.className=j.className.replace(/align(left|right|center|none)/g,"")):m="alignnone",m=' class="wp-caption '+m+'"',l&&(l=' id="attachment_'+l[1]+'"'),n=i.width||j.clientWidth,n&&(n=parseInt(n,10)+10,n=' style="width: '+n+'px"'),j.parentNode&&"A"===j.parentNode.nodeName?(g=b.getOuterHTML(j.parentNode),f=j.parentNode):(g=b.getOuterHTML(j),f=j),g="
'+g+'
'+k+"
",(e=b.getParent(j,"p"))?(d=b.create("div",{"class":"mceTemp",draggable:"true"},g),b.insertAfter(d,e),a.selection.select(d),a.nodeChanged(),b.remove(f),b.isEmpty(e)&&b.remove(e)):a.selection.setContent('
'+g+"
")):d&&(g=b.getOuterHTML("A"===j.parentNode.nodeName?j.parentNode:j),e=b.create("p",{},g),b.insertAfter(e,d.parentNode),a.selection.select(e),a.nodeChanged(),b.remove(d.parentNode))):(g=b.createHTML("img",i),k?(f=a.selection.getNode(),i.width&&(n=parseInt(i.width,10)+10,n=' style="width: '+n+'px"'),g='
'+g+'
'+k+"
",e="P"===f.nodeName?f:b.getParent(f,"p"),e&&"P"===e.nodeName?(d=b.create("div",{"class":"mceTemp",draggable:"true"},g),b.insertAfter(d,e),a.selection.select(d),a.nodeChanged(),b.isEmpty(e)&&b.remove(e)):a.selection.setContent('
'+g+"
")):a.selection.setContent(g)),j=b.get("__wp-temp-img-id"),b.setAttrib(j,"id",h),void(c.imgData.node=j)):void(j&&(b.remove((d=b.getParent(j,"div.mceTemp"))?d:"A"===j.parentNode.nodeName?j.parentNode:j),a.nodeChanged()))}),a.on("wpLoadImageData",function(c){var d,e=c.imgData.data,f=c.imgData.node;(d=b.getParent(f,"dl.wp-caption"))&&(d=b.select("dd.wp-caption-dd",d)[0],d&&(e.caption=a.serializer.serialize(d).replace(/]*>/g,"$&\n").replace(/^

/,"").replace(/<\/p>$/,"")))}),b.bind(a.getDoc(),"dragstart",function(c){var d=a.selection.getNode();"IMG"===d.nodeName&&b.getParent(d,".wp-caption")&&c.preventDefault()})}),a.on("ObjectResized",function(b){var c,d,e=b.target;"IMG"===e.nodeName&&(c=a.dom.getParent(e,".wp-caption"))&&(d=b.width||a.dom.getAttrib(e,"width"),d&&(d=parseInt(d,10)+10,a.dom.setStyle(c,"width",d+"px")))}),a.on("BeforeExecCommand",function(b){var c,d,e,f,g=b.command,h=a.dom;if("mceInsertContent"===g){if((c=h.getParent(a.selection.getNode(),"div.mceTemp"))&&(d=h.create("p"),h.insertAfter(d,c),a.selection.setCursorLocation(d,0),a.nodeChanged(),tinymce.Env.ie>8))return setTimeout(function(){a.selection.setCursorLocation(d,0),a.selection.setContent(b.value)},500),!1}else if("JustifyLeft"===g||"JustifyRight"===g||"JustifyCenter"===g){if(c=a.selection.getNode(),f=g.substr(7).toLowerCase(),f="align"+f,e=h.is(c,"dl.wp-caption")?c:h.getParent(c,"dl.wp-caption"))return h.hasClass(e,f)?(h.removeClass(e,f),h.addClass(e,"alignnone")):(e.className=e.className.replace(/align[^ ]+/g,""),h.addClass(e,f)),!1;"IMG"===c.nodeName&&(h.hasClass(c,f)?h.addClass(c,"alignnone"):h.removeClass(c,"alignnone"))}}),a.on("keydown",function(b){var c,d,e,f,g=a.selection,h=a.dom;if(b.keyCode===tinymce.util.VK.ENTER)d=h.getParent(a.selection.getNode(),"div.mceTemp"),d&&(h.events.cancel(b),tinymce.each(h.select("dt, dd",d),function(a){h.isEmpty(a)&&h.remove(a)}),f=tinymce.Env.ie?"":'
',e=h.create("p",null,f),h.insertAfter(e,d),g.setCursorLocation(e,0),a.nodeChanged());else if((b.keyCode===tinymce.util.VK.DELETE||b.keyCode===tinymce.util.VK.BACKSPACE)&&(c=g.getNode(),"DIV"===c.nodeName&&h.hasClass(c,"mceTemp")?d=c:("IMG"===c.nodeName||"DT"===c.nodeName||"A"===c.nodeName)&&(d=h.getParent(c,"div.mceTemp")),d))return h.events.cancel(b),g.select(d.nextSibling?d.nextSibling:d.previousSibling?d.previousSibling:d.parentNode),g.collapse(!0),a.nodeChanged(),h.remove(d),d=null,!1}),a.on("mousedown",function(b){var c,f,g;if("IMG"===b.target.nodeName&&a.selection.getNode()===b.target&&2!==b.button){if(a.dom.hasClass(b.target,"mceItem")||"1"===a.dom.getAttrib(b.target,"data-mce-placeholder"))return;c=b.target,f=wp.media({frame:"image",state:"image-details",metadata:d(c)}),g=function(b){e(c,b),a.focus()},f.state("image-details").on("update",g),f.state("replace-image").on("replace",g),f.open()}}),a.wpSetImgCaption=function(a){return b(a)},a.wpGetImgCaption=function(a){return c(a)},a.on("BeforeSetContent",function(b){b.content=a.wpSetImgCaption(b.content)}),a.on("PostProcess",function(b){b.get&&(b.content=a.wpGetImgCaption(b.content))}),{_do_shcode:b,_get_shcode:c}}); \ No newline at end of file +tinymce.PluginManager.add("wpeditimage",function(a){function b(a){return a.replace(/(?:

)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(a,b,c){var d,e,f,g,h,i,j=tinymce.trim;return d=b.match(/id=['"]([^'"]*)['"] ?/),d&&(b=b.replace(d[0],"")),e=b.match(/align=['"]([^'"]*)['"] ?/),e&&(b=b.replace(e[0],"")),f=b.match(/width=['"]([0-9]*)['"] ?/),f&&(b=b.replace(f[0],"")),c=j(c),h=c.match(/((?:]+>)?]+>(?:<\/a>)?)([\s\S]*)/i),h&&h[2]?(g=j(h[2]),h=j(h[1])):(g=j(b).replace(/caption=['"]/,"").replace(/['"]$/,""),h=c),d=d&&d[1]?d[1]:"",e=e&&e[1]?e[1]:"alignnone",f=f&&f[1]?f[1]:"",f&&g?(i=parseInt(f,10)+10,'

"):c})}function c(a){return a.replace(/
]*>([\s\S]+?)<\/div>/g,function(a,b){var c="";return-1===b.indexOf("]+>([\s\S]+?)<\/dd>/i),c&&c[1]?"

"+c[1]+"

":""):(c=b.replace(/
]+)>\s*
]+>([\s\S]+?)<\/dt>\s*
]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi,function(a,b,c,d){var e,f,g;return g=c.match(/width="([0-9]*)"/),g=g&&g[1]?g[1]:"",g&&d?(e=b.match(/id="([^"]*)"/),e=e&&e[1]?e[1]:"",f=b.match(/class="([^"]*)"/),f=f&&f[1]?f[1]:"",f=f.match(/align[a-z]+/)||"alignnone",d=d.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),d=d.replace(/\s*\n\s*/g,"
"),'[caption id="'+e+'" align="'+f+'" width="'+g+'"]'+c+" "+d+"[/caption]"):c}),0!==c.indexOf("[caption")&&(c=b.replace(/[\s\S]*?((?:
]+>)?]+>(?:<\/a>)?)(

[\s\S]*<\/p>)?[\s\S]*/gi,"

$1

$2")),c)})}function d(b){var c,d,e,f,g=a.dom;return d={attachment_id:!1,url:!1,height:"",width:"",size:"none",caption:"",alt:"",align:"none",link:!1,linkUrl:""},d.url=g.getAttrib(b,"src"),d.alt=g.getAttrib(b,"alt"),d.width=parseInt(g.getAttrib(b,"width"),10),d.height=parseInt(g.getAttrib(b,"height"),10),c=b.className.split(" "),tinymce.each(c,function(a){/^wp-image/.test(a)&&(d.attachment_id=parseInt(a.replace("wp-image-",""),10)),/^align/.test(a)&&(d.align=a.replace("align","")),/^size/.test(a)&&(d.size=a.replace("size-",""))}),e=g.getParents(b,".wp-caption"),e.length&&(e=e[0],c=e.className.split(" "),tinymce.each(c,function(a){/^align/.test(a)&&(d.align=a.replace("align",""))}),f=g.select("dd.wp-caption-dd",e),f.length&&(f=f[0],d.caption=a.serializer.serialize(f).replace(/]*>/g,"$&\n").replace(/^

/,"").replace(/<\/p>$/,""))),b.parentNode&&"A"===b.parentNode.nodeName&&(d.linkUrl=g.getAttrib(b.parentNode,"href")),d}function e(b,c){var d,e,g,h,j,k,l,m;c.caption?(h=f(c,"html"),e=c.width+10,d="align"+c.align,h='

'+h+'
'+c.caption+"
",g=a.dom.create("div",{"class":"mceTemp"},h)):g=f(c,"node"),k=b,j=a.dom.getParent(b,".mceTemp"),j?k=j:"A"===b.parentNode.nodeName&&(k=b.parentNode),l=a.dom.uniqueId("wp_"),a.dom.setAttrib(g,"data-wp-replace-id",l),a.dom.replace(g,k),g=a.dom.select('[data-wp-replace-id="'+l+'"]')[0],a.dom.setAttrib(g,"data-wp-replace-id",""),a.nodeChanged(),m="IMG"===g.nodeName?g:a.dom.select("img",g)[0],m&&(a.selection.select(m),i(m))}function f(b,c){var d,e=[];if(c=c?c:"node",b.caption||e.push("align"+b.align),b.attachment_id&&(e.push("wp-image-"+b.attachment_id),b.size&&e.push("size-"+b.size)),d={src:b.url,width:b.width,height:b.height,alt:b.alt},e.length&&(d["class"]=e.join(" ")),b.linkUrl){if("node"===c)return a.dom.create("a",{href:b.linkUrl},a.dom.createHTML("img",d));if("html"===c)return a.dom.createHTML("a",{href:b.linkUrl},a.dom.createHTML("img",d))}else{if("node"===c)return a.dom.create("img",d);if("html"===c)return a.dom.createHTML("img",d)}}function g(b){var c,f;return"undefined"!=typeof wp&&wp.media?(a.undoManager.add(),c=wp.media({frame:"image",state:"image-details",metadata:d(b)}),f=function(c){e(b,c),a.focus()},c.state("image-details").on("update",f),c.state("replace-image").on("replace",f),c.on("close",function(){a.focus()}),void c.open()):void a.execCommand("mceImage")}function h(b){var c;"DIV"===b.nodeName&&a.dom.hasClass(b,"mceTemp")?c=b:("IMG"===b.nodeName||"DT"===b.nodeName||"A"===b.nodeName)&&(c=a.dom.getParent(b,"div.mceTemp")),c?(a.selection.select(c.nextSibling?c.nextSibling:c.previousSibling?c.previousSibling:c.parentNode),a.selection.collapse(!0),a.nodeChanged(),a.dom.remove(c)):a.dom.remove(b)}function i(b){var c,d,e,f=a.dom;j(),b&&"IMG"===b.nodeName&&!k(b)&&(f.setAttrib(b,"data-wp-imgselect",1),c=f.getPos(b,a.getBody()),d='
',e=f.create("div",{id:"wp-image-toolbar","data-mce-bogus":"1",contenteditable:!1},d),a.getBody().appendChild(e),f.setStyles(e,{top:c.y,left:c.x,width:b.width}))}function j(){var b=a.dom.get("wp-image-toolbar");b&&a.dom.remove(b),a.dom.setAttrib(a.dom.select("img[data-wp-imgselect]"),"data-wp-imgselect",null)}function k(b){var c=a.dom;return c.hasClass(b,"mceItem")||c.getAttrib(b,"data-mce-placeholder")||c.getAttrib(b,"data-mce-object")?!0:!1}return a.on("init",function(){var b=a.dom;a.on("wpLoadImageForm",function(b){if(!a.getParam("wpeditimage_disable_captions")){var c={type:"textbox",flex:1,name:"caption",minHeight:60,multiline:!0,scroll:!0,label:"Image caption"};b.data.splice(b.data.length-1,0,c)}}),a.on("wpNewImageRefresh",function(a){var c,d;(c=b.getParent(a.node,"dl.wp-caption"))&&(c.style.width||(d=parseInt(a.node.clientWidth,10)+10,d=d?d+"px":"50%",b.setStyle(c,"width",d)))}),a.on("wpImageFormSubmit",function(c){var d,e,f,g,h,i=c.imgData.data,j=c.imgData.node,k=c.imgData.caption,l="",m="",n="";return i.id="__wp-temp-img-id",c.imgData.cancel=!0,i.style||(i.style=null),i.src?(k&&(k=k.replace(/\r\n|\r/g,"\n").replace(/<\/?[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),k=k.replace(/(]*>)\s*\n\s*/g,"$1").replace(/\s*\n\s*/g,"
")),j?(h=j.id||null,b.setAttribs(j,i),d=b.getParent(j,"dl.wp-caption"),k?d?(e=b.select("dd.wp-caption-dd",d)[0])&&(e.innerHTML=k):(j.className&&(l=j.className.match(/wp-image-([0-9]+)/),m=j.className.match(/align(left|right|center|none)/)),m?(m=m[0],j.className=j.className.replace(/align(left|right|center|none)/g,"")):m="alignnone",m=' class="wp-caption '+m+'"',l&&(l=' id="attachment_'+l[1]+'"'),n=i.width||j.clientWidth,n&&(n=parseInt(n,10)+10,n=' style="width: '+n+'px"'),j.parentNode&&"A"===j.parentNode.nodeName?(g=b.getOuterHTML(j.parentNode),f=j.parentNode):(g=b.getOuterHTML(j),f=j),g="
'+g+'
'+k+"
",(e=b.getParent(j,"p"))?(d=b.create("div",{"class":"mceTemp"},g),b.insertAfter(d,e),a.selection.select(d),a.nodeChanged(),b.remove(f),b.isEmpty(e)&&b.remove(e)):a.selection.setContent('
'+g+"
")):d&&(g=b.getOuterHTML("A"===j.parentNode.nodeName?j.parentNode:j),e=b.create("p",{},g),b.insertAfter(e,d.parentNode),a.selection.select(e),a.nodeChanged(),b.remove(d.parentNode))):(g=b.createHTML("img",i),k?(f=a.selection.getNode(),i.width&&(n=parseInt(i.width,10)+10,n=' style="width: '+n+'px"'),g='
'+g+'
'+k+"
",e="P"===f.nodeName?f:b.getParent(f,"p"),e&&"P"===e.nodeName?(d=b.create("div",{"class":"mceTemp"},g),b.insertAfter(d,e),a.selection.select(d),a.nodeChanged(),b.isEmpty(e)&&b.remove(e)):a.selection.setContent('
'+g+"
")):a.selection.setContent(g)),j=b.get("__wp-temp-img-id"),b.setAttrib(j,"id",h),void(c.imgData.node=j)):void(j&&(b.remove((d=b.getParent(j,"div.mceTemp"))?d:"A"===j.parentNode.nodeName?j.parentNode:j),a.nodeChanged()))}),a.on("wpLoadImageData",function(c){var d,e=c.imgData.data,f=c.imgData.node;(d=b.getParent(f,"dl.wp-caption"))&&(d=b.select("dd.wp-caption-dd",d)[0],d&&(e.caption=a.serializer.serialize(d).replace(/]*>/g,"$&\n").replace(/^

/,"").replace(/<\/p>$/,"")))}),b.bind(a.getDoc(),"dragstart",function(c){var d=a.selection.getNode();"IMG"===d.nodeName&&b.getParent(d,".wp-caption")&&c.preventDefault(),j()}),tinymce.Env.ie&&tinymce.Env.ie>10&&(b.bind(a.getBody(),"mscontrolselect",function(c){"IMG"===c.target.nodeName&&b.getParent(c.target,".wp-caption")?a.getBody().focus():"DL"===c.target.nodeName&&b.hasClass(c.target,"wp-caption")&&c.target.focus()}),a.on("click",function(c){"IMG"===c.target.nodeName&&b.getAttrib(c.target,"data-wp-imgselect")&&b.getParent(c.target,"dl.wp-caption")&&a.getBody().focus()}))}),a.on("ObjectResized",function(b){var c,d,e=b.target;"IMG"===e.nodeName&&((c=a.dom.getParent(e,".wp-caption"))&&(d=b.width||a.dom.getAttrib(e,"width"),d&&(d=parseInt(d,10)+10,a.dom.setStyle(c,"width",d+"px"))),i(e))}),a.on("BeforeExecCommand",function(b){var c,d,e,f,g=b.command,h=a.dom;if("mceInsertContent"===g){if((c=h.getParent(a.selection.getNode(),"div.mceTemp"))&&(d=h.create("p"),h.insertAfter(d,c),a.selection.setCursorLocation(d,0),a.nodeChanged(),tinymce.Env.ie>8))return setTimeout(function(){a.selection.setCursorLocation(d,0),a.selection.setContent(b.value)},500),!1}else if("JustifyLeft"===g||"JustifyRight"===g||"JustifyCenter"===g){if(c=a.selection.getNode(),f=g.substr(7).toLowerCase(),f="align"+f,j(),e=h.is(c,"dl.wp-caption")?c:h.getParent(c,"dl.wp-caption"))return h.hasClass(e,f)?(h.removeClass(e,f),h.addClass(e,"alignnone")):(e.className=e.className.replace(/align[^ ]+/g,""),h.addClass(e,f)),!1;"IMG"===c.nodeName&&(h.hasClass(c,f)?h.addClass(c,"alignnone"):h.removeClass(c,"alignnone"))}}),a.on("keydown",function(b){var c,d,e,f,g=a.selection,i=a.dom;if(b.keyCode===tinymce.util.VK.ENTER)c=g.getNode(),d=i.getParent(c,"div.mceTemp"),d&&(i.events.cancel(b),tinymce.each(i.select("dt, dd",d),function(a){i.isEmpty(a)&&i.remove(a)}),f=tinymce.Env.ie&&tinymce.Env.ie<11?"":'
',e=i.create("p",null,f),"DD"===c.nodeName?i.insertAfter(e,d):d.parentNode.insertBefore(e,d),a.nodeChanged(),g.setCursorLocation(e,0));else if((b.keyCode===tinymce.util.VK.DELETE||b.keyCode===tinymce.util.VK.BACKSPACE)&&(c=g.getNode(),"DIV"===c.nodeName&&i.hasClass(c,"mceTemp")?d=c:("IMG"===c.nodeName||"DT"===c.nodeName||"A"===c.nodeName)&&(d=i.getParent(c,"div.mceTemp")),d))return i.events.cancel(b),h(c),!1}),a.on("mousedown",function(b){var c=b.target;tinymce.Env.ie&&a.dom.getParent(c,"#wp-image-toolbar")&&b.preventDefault(),"IMG"!==c.nodeName||a.dom.getAttrib(c,"data-wp-imgselect")||k(c)||i(c)}),a.on("mouseup",function(b){var c,d=b.target,e=a.dom;b.button&&b.button>1||("DIV"===d.nodeName&&e.getParent(d,"#wp-image-toolbar")?(c=e.select("img[data-wp-imgselect]")[0],c&&(a.selection.select(c),e.hasClass(d,"remove")?(h(c),j()):e.hasClass(d,"edit")&&g(c))):"IMG"!==d.nodeName&&j())}),a.on("cut",function(){j()}),a.wpSetImgCaption=function(a){return b(a)},a.wpGetImgCaption=function(a){return c(a)},a.on("BeforeSetContent",function(b){b.content=a.wpSetImgCaption(b.content)}),a.on("PostProcess",function(b){b.get&&(b.content=a.wpGetImgCaption(b.content),b.content=b.content.replace(/ data-wp-imgselect="1"/g,""))}),{_do_shcode:b,_get_shcode:c}}); \ No newline at end of file diff --git a/wp-includes/js/tinymce/skins/wordpress/wp-content.css b/wp-includes/js/tinymce/skins/wordpress/wp-content.css index 92e1f35369..f9537a2932 100644 --- a/wp-includes/js/tinymce/skins/wordpress/wp-content.css +++ b/wp-includes/js/tinymce/skins/wordpress/wp-content.css @@ -117,6 +117,46 @@ img::selection { cursor: pointer; } +#wp-image-toolbar { + position: absolute; +} + +#wp-image-toolbar .wrapper { + position: relative; + height: 33px; + background-color: rgba(0,0,0,0.3); +} + +#wp-image-toolbar .dashicons { + position: absolute; + color: white; + width: 36px; + height: 32px; + line-height: 32px; + cursor: pointer; +} + +#wp-image-toolbar div.dashicons-no-alt { + top: 0; + right: 0; +} + +#wp-image-toolbar div.dashicons-format-image { + top: 0; + left: 0; +} + +/* Image resize handles */ +.mce-content-body div.mce-resizehandle { + border-color: #777; + width: 7px; + height: 7px; +} + +.mce-content-body img[data-mce-selected] { + outline: 1px solid #777; +} + .mce-content-body img.wp-gallery:hover { background-color: #ededed; border-style: solid; diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz index 0d2364dbcdc195960275ccaabb5736dff139c7d0..50c674c92796a687872bb87891855373b298d23e 100644 GIT binary patch delta 14719 zcmV-_Ie^CVqX+h<2Y|Ez&6| zCF_6yNJ8Q^1Zi1g>c7AGs=6E9AShXxnU@@yK%@7iy7scRZqMgV$VqMBz>r+1w-BKBIAEPsGI%MopXEa&h7Dzxjn9%TW9tDgKNiAb?VhbWwm6bUv6#N zVGW!R|DyFi{`?l=*QHN+Cpr9*aJ0b*Asq;7m*!%#c>z;X!~_RAQHX0Oy-tv$Qlqzrz;jNG1VV!ozmZzIWWKk zoRt4R2U+EEbT{TLmFgpiO~QPG%6FvkSEguO-q~DqD)4-}4Jc+|5qv4G^A#l9!Iva1 zGIhQ?{H%72ya*7GXY7CVBtWCH^k<=oGI;IA7gUEZxMdbqeS2J9Hg`ww@({YXEX_8@ zVSk@9>JNV+8trcP1R2aRbMq-k(4o#G&1U%Il;tgDslLw9OwNU{wUe42ZUzrA1NWS) zn#6IsglPgK(<9P(;)qVyyu}Nm*5NiJ0O>3({MZ?2yT4yD_h!*?m%2Uc&V;RJ^<#Ff z0)aw-p};nWTzqyaLoBw2INKiL%o?KZqW%~bpjv-;Ay)=vwC)P(CH$aCAExNTRQF-& zPxZ2>)xBr8l#R1>#1t*loMjx`{FVl_bsCd#HjVu+1hz`3J9nsCWkJ{f!emsZ4MxTK ztTo8a+I~Mi{O9rEx2?mA^JdUiEDaq3^t$usC(puh=P3~yP_)vbjqB^{7FRL=IXG?e zA!&afrWVnU}s3KQ2FW-CJaJ z_ZW&mB11GP7aXbGq~3FrvTsMZvsR_O@j@JbZTYrgo(=C&cBvuPfU@3%PYu`Qgy7>s zzbJxKHCyX+0&0H!Oxzv5%SNw1FMPsO+3`gG~TGyVib9>d=j3;$jdU7f-s>$-F$fT(s-r5j(iwVF#bKnMrc#u`g!*6e2e z#m*jt(@6612`N}6qDC2Gl(T3GSAiH-Sje+ziy6Qyx^@#TNiArK(p zyqF7m!m%q{{#y}3ewwI0mnz1GtXW4$A#Acr-x3nx&xG%jKBa8FSg8SX?1fp8#0xfe zqBhEc+R9N1DfGvk<$${V6wy!A{Z^S)xU?~3RNkYkL}ea7J3>%lHiIJ#=2tX7`6Mnz#dogwHFoGEc)=!%hFkg++7E~0C{Br zXso)N%y{n3IOaz6%xv{50}I={cFT%A*=!fQ5Dm-lDb#b9@ijojOp#dYncD3M&kP&n zvvxvmw#br&68gUTg*Sk95mj^1e)WCYEzbhf2+c&S0tEj=+)LW#uSDh0FFPQ`C1`nF z`z)VTVMX)%`oIXl&Rl{iCH<@pWs2Fh@)t|jR6tYF4_IgJ&$>5$b*4OU0&f4egK&}6>y8e5!{*oQJ zE3$kRsRYg1b!-D>Wiz5)Gqcre${UZmFh@n_d{b0^jgs4$G=uoW5xp z*QR5@VGsuF%y*@gyVyxY(Tu#ana3>lNq=t54q#$TbILxgk1?qoQ=q)@s1-hHUvl0I644PU%Xngn> zfGvmTX_o=-O(#l{nzlVyy;s>!F_FVcsHXX?4My-dMmC|(abq{Z9rEO)(hj@8w5WFD zygybStT?2G+~0Cp~0J=JSy9KyY{P%ZIqNpdylXvzEGWIEoGs60?NKPlOAh2x z+jlF2qh-ahDswo2Xd_!*@a_V|u`I>5w4zCtULbVs#Q@*KxI1TuEmF$T%AbdKmAe3; zPy``7y(r=X+7#+ec^WjmQ^9T9AN{xQUTQQXWxn_!_FwN-2S`KXlpD=!!2w>-OkOK?N>-|snMt1!8DLzDD`4Z+6Ivc^~> zTq-Yxn%!Pq*JL@LOf1Ki-2%E5QPF=Y_{)d+g1P8pW>2%Hr*~Ak&;}~ibgE!dy4)qa zqDip(=)AR>FAkZkqEkQ!O6!K;<&<{&jx&{u7goOh2DtRpNr#hX?TD}>T?X^f8hnFe zPcb7r?dPr2hzG@dLX=LoL0#Z@K22}&xhu3y^nfCPyBv`m^&Aiqcr3PkagqZ3(ru`Ds?})GW$Pu%gUXDzx<^ zXofNn_`og-@Uex@K|mEzz{OoGyyp091xWK$V*5wk*@-G>x(j4nkaU0bh5FoG5k79! z1P+Flm)map43&W{!UdZkwJ3wT0mbKuAF#Oo16Xgv%%<_y<+#esH18}gOXvo`Ipq`d zW=W_vqPm%x-SM5>V~?``4dwUmK^IFSF#jF2dwq5}qOX!%c^PJB+WG}KbkHC;uS zn}}`_s_Z2VXtSY_!t9wc?eG8jne|DKlAD+Br~w{h8;ujsws=tDf=%Nie1HIEvp0lv zGTWoeKH$U-RVGGdvdsoXVKN0DXL~UE@~#D2;yRzV>QYZ-ptaY*M1#?2gXn z>pKvYXdnA)D^FFVI>OMgx_f|LG$RD2+>UHEi3@}_n@^lwrqUnw=KfZWS!uEf#~PiS z|K$`ozj8_(I<}OKBDFIb?`|@6ol3Q)z-gP$eD^^1C zsz?Ce$AGs^&w4p4q|!gPqR)>}O8h$_0mlS=e~!S?_^+Q{zJB}S{fF1z{qXaDdErf0 zo$|j@B~c!#H#P~LYhY3%Yaa3tcL+5hC$vEiAhJa>a0?fh`U^IiDJ-Rv-3UP`9MP(8 z-CP_$2QTx1i4T~VMl?ILC8GVM69jgZsSwC&@Sardg+f9 zf0rj5g`c(wb1-kixkZb|CAQE$8PbVp4B<-51KcVaaCGu+PMgIO!FlBMek$f7Cy%`T zNALXc*<2D9f+bmxgoNFrMb z&F)HI{M|oWKRJ5x1VbA9g$Ks}rq3z;*~>TQltq*Cv@~C^)=B8CCxlVsO37#I>{i!x zcHKN{*||l?skDoNvsPP-P$ocGe~!DjSl1E5oFC|3Nc+d<;qeiy4W*Ge-63nM8QCAV zHs;K{FEA|^%(LWK(ujN;hXVVsL;Y&dpHXs>Ud#v~U<|U{tYv4Gx-%GDp?ERzRAFKl zbb{%&xZqQGv5*Lpc~)=)>lys;DM%-_ONy~uRQ>qPf{FlKsX4Bcn&TL5f8!3>^3Chm zEY_9abm~(eii1#V*pc~@a#QCP0Qfm%oh+r7i3tM`7_sH+RxOfM6-Hhd0_eOZaZL34 zgvI0?Dr052^}TokGJLVw00jfz7?O)-v}$@C);j94=sY)e#YUupb?3-ga6qjXjf;@^ zn2TuAx^q#&1v^PCnYs%ce_B;0n}LOKpg7KN(THMEt0V<%bwR`P_M(~6G@IF|n^cR$^^7lD9Nnopx~YEy1+K&jVz`vGvFsvl7}wN+MTm0w-GUy3EHU57Gm1SSXiR@@a>NR)gA-DF~jH$ zQHeX0KZ63qcfsr z&b;&HnTHMmjm~bfmJ|f302~ptuV$ysiE(_Cf9HV&6 z7%ObXSWiWsm-s<@ATaFDa8Lwwu8vGk!+q zhWaNSRe7{qJg|DUZFUDI2!gr0xO*P>Pz!hr$t>;+&Buk>!}nf3P#-D~Rxn zW3c{=3_2l#AxhW>8T}JUZV!B`QdrnisS#)Ft^C7d#1jUy7zsqDO6~Z5jPKUx?xdY>5%7k!LD3~k73fs-EuHj-DFE*RL zcf|kEX8n$k=PUaC_S>gVC4mmnsxei-kUeye8VZf=x#ngdMF+EfX-AVTDBy?Mhkz&-kg{^K5fPp#&~ zxG|9Q=epeY(wjGLe^hVY!McN9zx|e9UrYzk1*VC7`H~a#Pn@KmTJ{D*nT(tJJD(}fOl@t=UBAX$@GzDL#6x(V{3WmN?!b99rOFkm;CPGhne_Mt}^xcwAg7@+W|07dA z`NWff+2QfMWmllw5$^I^oOjg|PWX`{bl>RypfxE-G>w@qq;fAfHMxmrYQi~Dswm11 zqAkfjSx;4C{QmnmC-M!>A&o+drXf03S^wCNuY61Ejx)8Pajg^-Mx z^$1gV&|J4J^0et4dd-ym;T$xK3|0)gDGffZ=}~=`X%I4$6EuvEfc_vsNj49f{<3Gu z3Z%kL1FSl!QQQJaC2V2NjbR4F2a|WwrkXi7N3oW~ZSoY`AAHuRx64UQw#DFcC^-*sVZNzw(+OQtE5T~>9m zO6Iav=dBB_4MdS$*L+7^I)BASGWdq-$};{e&0e-BCU&H+GMaij9+58DOG#xnj-4;y zjdV(4W_fEKCskSvtNk@?e`j_@O%MJGH2xude|Q)c06qt!7GIAAm?Ar)JnQI>1bDJ= z2yB_7BE!#6G=LMmG2y5!9*ig}+bPPAWed|Yh?g8MgXu7VASX|RHj>JqGDDcA5IhqO zxa03ps+&lS3{(%Q!BngvAQW{1D%>yYClZ3UI@qYq=;=|=fsd^5{2B>|NZ_CV)D1S1 ze~w~H4d}%(i!D`WOEeu`mKwZ?3FZiXyA|BFIYh*evLjUD*CJcKm)$RYTn*?FIi^94 z_V-5?Ll3;WUD=PS*^k(?()Da^U`Ysl|Jq za-;^F%{Wkdf*0kFY_|2(w7{yyE{jsIepGKEje@Xt1 zjSGgnsRwxnPz+^(<~06HB+lo_o5JH76 z9kTDL^kU@%eWM!U^pkB_{6U~mf8zslpOtI--``%mK(<|xPDUouNh~Z`lgl9@Y4_0) zAKh`j_xA@1D4FVO2O#VeI4rbopJu7ey~$FJ3SJfRO{CHneY3Q%K}(@6C?z zDnW`3i&yV?m0($->>VCXsSXxYn(tQ5@zFLCoFcoZW-*r0=M=!d19;I?d1-7zHfnH zcgOfpLu7C)3^)K_sM?mBe;N+Yc>Ov%8Zi?b2r%DTctp>(=B(Z&lZm1&VWZP%p#3#) z*k|^qp;@u}`w2`BUt-PuG~AjE_p3V>1Eo61ubtYQ&VY3OGSOQ7I#HG$NO#aG;!l}E zm27hxTJ@IQ&cI7-jC8xXVy{*nrY6Tw`H7lSQpv0@|tG=Y2^XY{pTM}nF&w8HMIe@{RYksEB9f!ij z-niNkQe53`gJ?i#Gp}zrhV`;qR>Ceqz3_}?dK&g2CLxhTZzZs5^Z>A9@UYARLI=(9 zAH~W-BOkdkYbmB1e{sbsmF*vic4u=+dSuP=t8O_v0rKZ=H|m;0W`6uR?4yo_o}=he~# z7y&@ILoYd&0ivGAuFCz(^|F{Rf1HbhYbtXT1oeCLZ8Z{Zf9xvtn{8|z__})jnoSm! zdg{V|z=NIML2#J%>$@MDUK^(XeqpGN)?!Tch|T1mpB-smFn@k>6biS!b9`HW*kHpn z$pv&^T8U&#FBisz4-1uF zq%>!evgJNUw{I4CJ2bMj8n$bm%2I6A{4cDH)3#n6B_A)B=3i>Dx>hBA{<yte1ukaLI+%2C z8P_W9?x4Nu+}*i_yzHFO?FnU{u72&LM$VkoOsbtBz_GB*aq_Y^d7Zn=fsG&#I?N_n z>H@@Fe}s_lQ90hOG7Og_B`h{};W1PMfYK!*Y~aiR;a*Tk^S`BH##{ht5UBQa);#-` z?$+n`c_qj%0HVsAb8)v=`DBw$Hq1}oFi+wi>-j3%e~kObhu@rUhIuwg>BikGmf1#yGYtF& zD@6u9qp$wx$tedtxvSx`_P^99cN@MVq|NrD<5R)SYk{@!0WSY%oh@$&THCLFs%)$R zLh$ktUEY7Cy*h!WvsxmxW{0v#`!P{S9t~%{PR3%Pl+RQPn@wC=%cjV6Ja^&H-j z@h8Rvt(OSu6R&>x>EhMvA3waf`0qAd1UEH3&j)L(S_2f8x0< z*p~*~l{IT4#!bRdE0|8!y>h-_XI!Y-$~=M1L#Z=hjdwdJ{%`mijuTMbwBBM_Nnm8T znGkWHtZTF))rRS_jcPShE>1SAIH{iIi+|2%1ZjBsH^m~GOgIeMhKW5yNjVSmaKKam z5wP)O)ntt!Pmm%L%5&WGnh6K;fAs#(x>)7Io0k$9E~v@4bTYmZH>5TBCQiN|;r*m8 z+ohB34MB(6Z2ypK1khM*{(k^sYcsATW8HmUmwj$$|K*;{Gt-IpnCq9A>)MR5WF+K} zqyN@rDI|*y8e5ZNYAP|PbX~T8nrvV%*X3B16){#^lO>fb@7WRv&Jx$7e{pTbv8jvc zi@GcelZ6S^Y8DTgbZYotNB-de3OmYrfqly-wtr_(2QcN|fs$EQTPay#=hXzutM=zy zjho*%BC2swpvrs|)?e1Y8@Rf8e!_+O%JoG;ND^}vnWt&FfEV_eU3%M(36-TGU61o* z3`13g$icN?>$ktP=+1oof8jMyfn7Pid-3vb@87<7`8v=oeYt?7RS46flZ6+Mfaup@ zctO`c2U_eT;l)Tlr?(FjfG<*xD!fYo{`=eCZ61c{_7BX7aKF{?l~~K-deOsg$5(G~ zOlhfKL=`@Xe9M$vCaeStV#5ZjvVf6(Gz#gQ7g9*PG#+U<0n#uF&NOJOEaIv{RT)!{!`F{tx2dv=SK zO)DOT!yISfzesX2nHO0_*Ob7NUL1De!8<8n-^d+nNAO-y&SQD)E$6X<)^KKSA*zXc zDEq`r;r@O##oalkfbN?$G#Q24J5JltJ$P=pOZ7w_)+%AQe*-oLtbRAVoD6u ztUeCfIThaDANQY}_rRw2@r3&D1ZDRQrw%N~mul|0r|e3j{Dh=OoQ57j6@z9D{vmq! zr$abQhPXk{W9ns`!jr}(AT$*;%ppDvRc3l0_58eKf5i;JhiM)kg$JzPSSopb$fgVL z^dy}qoyXLb6ss;bl=MbvFDn0q2hF^Bu=tGPtL-v}=?Z#^EJ7B~JC}DRxM*zt5%+B8o~_b%zN`sCRa_9&0RSw}|U+*lFb z+n|i>U`o3f*tF@|AAwOYz99aCVytc2e{yEAY`)x_o-TLj@rA)2gxVi@(kfN)=CewQ zHypVD+aIwAZUGj;Tlw)Wt+08LOsmMv3rs?*1mzyIoh^^1d{e_k)5GWGfg^#&E%nTJ zYE4`21ruhV08G~izMyMqOJB!veVEUo4Mzq`?RqBk9__n8<|Cb(%5~0%OYZXke~ey7 znc#&8d}=fac&KWhyIa`G9V+)Av`2U9dje~_46njTIPE5Spgn&a4Ozih!n0&Lra15d z+@Cz9%|s@f@Q{NNElAvLxeG~1>yU)(--9HWaoEU$r@@dBKZ*-yJDL-tIJe=LP_mIs z0Os2R1A3qpW-NUWY-?RA2rqkAf6-;Lds6_|0VZGO<-E{cVk@Wm2fhks>rp0}+#GL5uG*{D==8FjXF zv}pRdsVR%lw*5TA<@hvk^mQFpME@LSut}8kl8&qj9Tv6BY)j1&LA5alf3h)go}A5C z#;~;@W3!S8r2x&?sGjo*Y->s~Yd>?~%>k~KduV%HQ|Qg=)`od$U+p@$P!@M64Udn% zI@02}jfV+2OJL9rd;dcFft~Z1Vz*&j^PO`S?vl z-$*&hZB!IP;D|$7C?|DXDp-22e)vs5R|&6VU5rxaAT&TS=n*2*fARI%AJ_)}uRd%g zy>L?kOLfu#rv#Eqh)N^x)xnCyR(?91F;7S!cCP9BMA<2cVOm)uo_xG--2=h=28*|h^m`;OqQesjP*`p0ATvbA7TUtar zymT$HrB|Z@dTQrOf8$~dmmo#MJROP*R`w*bQ|oJC;<#~NWwZGqfxw1L)g2YdzXt^F zhm~6zfffwN)&^enp%p6fNmjT_1AC$zEgnYsO8b&b>`Ri?jhL1stpkVWr(_VEP@JNYbxZ@vVQH$0>s*_`fz>WiqZ`m^dij*c2KFXfI_<#O(IL9 zY%u>!HBPe6onvuf=V>Y=oaQqznCpCV6i(NZRn97+2r17(I6O__K}Lim_pYH!-gXDf z{%10UurBpxe+-q6!o*U!yI%a9U2_HRvf(l-#@?270-Ss>tzH5{fj%_L6NhpVg?#bV zBEf+-zC-$PSRSzk{GBlp#m!5jw3o7xRL6UE^k2Z9Y)e8F!Zx*439c7rQQofyQ)eN! zIltgROh@o_&a*-2a+$zGxv~<}ctZBhJHj~yy__~+-|Zr1!^wAw@oaP=ql*=mnBV3Uni0EZdidD z+8GzZe;^8KGBQf;1E_A6691Z2IyT_lP$4SS^QX}iM1ob?smV;%-F1oAyv{VT*?`mN zpq3Dw!gM~I@bC^A749%mNnpfM4n%Ot^^v=DPMG-ZHfM0AkK8Oe*rIS}OyM3tFMpfT zzpS+x@JF)3zpPiXGXAB5zzm&oEKI28=S(0Be?8FY9+7@i^yE%Ld-N5A_LWOu^DcAt zBCxogk1cvH(LG}AQOi~#4YR6g0`K2+8#No~dv(Z_6tAa?)eZZS8kE6*fUvoC4ocsw zUeKXs4J=^@I-ni5Cibpnvr{{lBE_=oGrrV}ICE@=Y6qX)F?gqNpfP2*n2QV#9|D~6#xla?#3bSMu-U|qkY2uKWxzd z$fn#;c7%&V_Nu>qjRy85foI9I;5I%dSiAs z_2)`&dp2FCJ;8aee%x83p@GT@tD{$?O72RmI50UJjXk9A>X4O9ZBuW-u3=Voe<>)) zt&!T6z`yK>+HUhAw(Wo&_H+$XCacW1J}e3oGTF7;x>7cla?Ub@g}y!v;k!kAFnJQF z=##s=E~{@QnvHc8q?J`r^1+c)acZ{{`te}cR?beMYV=$lvifoJ{5f4^A_J5 zg(A?w=W^t?rMuR26*lB*b)DfDLDTw@%uFy8OJe@>2%?=yPOXb4p!X?RO|^~znS zUS37ai2~SZ*Pn$oDBq~&e@JF9rS9sZcIN_UwdcF?*ox1-yH=W;Z|}X_-g*`%KaG-- zlb>vJ@{=u2e&TTQ@7@;ym`aARv$Z|OP^}~Qqqj3#bM4sBk*_xEK@RMvYeJ7F7Y8C6#LU>R85FTB(0f2^^!Y=B>itHst0>HMM?BU*ZAzy=KZEqSmBLuvf@5LM)|)J|Pw zn?Y<@6%$rA6ysahjq+vmmAXhD-nJrA- z4D)PB(uLihe_mY??qblX{{%t13cOZsN%Xesx)-@#yjZX1LYMJ?s-IzE_?|2M1rg-$ z%rG2!f^6){;R#b}hgrkU;nNB8x9sAKd1mukEa;qu>Rg)GfT45)@+v31Kb8f2LmwNz zFLTV67wTZV9q$FT^`6`Mz4UUC)q2Zt8)5et4{pIYf7bYvXV*@H4~3x0Vc zzsA6hH8p4+l&;neI5Lz(t&Hhn?b)MGGZ{UsET9d%!#YOE<{tZ{3%S4;y;R(i8fF_~ zg~BBce{8>UspD5pFLl6r{e7=#TgUiZ2Tvy5>`m`n^!?*9Hrke>qVKo1j`437rrig4 z)=?ef3#^`GA4Jv6VI3>6q9Y^@ zf3CdV;r2|LR{^NxrQ-jrjT7IHPj#2~i_)Q&bd&+cd)`{`g)ad`&ug4~)wOMV`})`0 z-1gUn_-olL{V;#2zU&=69K`^RQd#4@3jC+b(%k#M{Vgn!0G!efgc1E7Pp%L}OeJe3 zn0{A{(E|R)2+mN((dBTFo)0qH+wS?%G;|FLv=I`(36nY1*bNU8~&|6L2#3Y4_eC==&RtT8qbn zE(^UP*KyDVvAH+0wOyh2o)?_cNe>|3FZ-(&8-WVAE{_eIurXZ6k|VIb1=C90e+oml zdbZO;f*+I;2IyYIjt1>Lvn<+uivRI>Rf7CdbeWXuNUZl(Dks&guk}3$YgRB}wz=ul zP7p5B&WwimQ^ta~`?nYe9<1A8KO3&_w%*^MX2q2$eCdF-=NqQpASi>9(b3LSa@p9n zFhJo*;xRVS%w(|t#r6Dfs|#rze>O;K4%Z%m753ceLDwHMcBI+X^5!t8N6w7V)?0xI zj5wzFs5$*$L6+45Av6K=k}~Ak_%u2`ezL!R{N(9rG{&dxSY7Z4;Eb%}kX!Sm-;KLG z2kc`&9i-SWtK)9$cyYbG4JA)!o8t&N;^XG52nd#Ac!wMyxz{->Hje^rMW0p*lBj1g z!j8j3#0=A1aCgc%2;*qrY-jZ$#sGCT$04MK#FE|A6r(B*E@z4IYmo#YitF!&;FebV N{{hFHzl11y1prXE`?df8 delta 14200 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