Upgraded to Redactor II 1.2
authorAlexander Ebert <ebert@woltlab.com>
Tue, 12 Jan 2016 22:57:11 +0000 (23:57 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Tue, 12 Jan 2016 22:57:11 +0000 (23:57 +0100)
com.woltlab.wcf/templates/wysiwyg.tpl
wcfsetup/install/files/js/3rdParty/redactor2/redactor.js
wcfsetup/install/files/js/3rdParty/redactor2/redactor.min.js

index 2e08d1b1c63e0c6de737ca681cdf7d5505f08055..ab2aea0de06913d4824518bc04c3b788993a2b47 100644 (file)
@@ -26,6 +26,7 @@
                
                var config = {
                        buttons: buttons,
+                       minHeight: 200,
                        plugins: ['WoltLabButton', 'WoltLabDropdown', 'WoltLabEvent', 'WoltLabQuote'],
                        woltlab: {
                                autosave: autosave
index db8ebbf60e9a7546c00ad039b0fb58ea906ca1d0..3b663f78f268bfc8c2986f6b20119c2a9a2315cf 100644 (file)
@@ -1,7 +1,7 @@
 /*
        Redactor II
-       Version 1.0.1
-       Updated: October 13, 2015
+       Version 1.2.0
+       Updated: December 16, 2015
 
        http://imperavi.com/redactor/
 
@@ -29,7 +29,6 @@
 
        var uuid = 0;
 
-
        // Plugin
        $.fn.redactor = function(options)
        {
 
        // Options
        $.Redactor = Redactor;
-       $.Redactor.VERSION = '1.0.1';
-       $.Redactor.modules = ['air', 'autosave', 'block', 'browser', 'buffer', 'build', 'button', 'caret', 'clean', 'code', 'core', 'dropdown',
+       $.Redactor.VERSION = '1.2.0';
+       $.Redactor.modules = ['air', 'autosave', 'block', 'buffer', 'build', 'button', 'caret', 'clean', 'code', 'core', 'detect', 'dropdown',
                                                  'events', 'file', 'focus', 'image', 'indent', 'inline', 'insert', 'keydown', 'keyup',
-                                                 'lang', 'line', 'link', 'linkify', 'list', 'modal', 'observe', 'paragraphize', 'paste', 'placeholder',
-                                                 'progress', 'selection', 'shortcuts', 'toolbar', 'upload', 'uploads3', 'utils'];
+                                                 'lang', 'line', 'link', 'linkify', 'list', 'marker', 'modal', 'observe', 'offset', 'paragraphize', 'paste', 'placeholder',
+                                                 'progress', 'selection', 'shortcuts', 'storage', 'toolbar', 'upload', 'uploads3', 'utils',
+
+                                                 'browser' // deprecated
+                                                 ];
 
        $.Redactor.settings = {};
        $.Redactor.opts = {
 
                // settings
+               animation: false,
                lang: 'en',
                direction: 'ltr',
 
                linkify: true,
                enterKey: true,
 
+               pastePlainText: false,
+               pasteImages: true,
+               pasteLinks: true,
+               pasteBlockTags: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'table', 'tbody', 'thead', 'tfoot', 'th', 'tr', 'td', 'ul', 'ol', 'li', 'blockquote', 'pre'],
+               pasteInlineTags: ['strong', 'b', 'u', 'em', 'i', 'code', 'del', 'ins', 'samp', 'kbd', 'sup', 'sub', 'mark', 'var', 'cite', 'small'],
+
                preClass: false, // string
                preSpaces: 4, // or false
                tabAsSpaces: false, // true or number of spaces
 
                imageUpload: null,
                imageUploadParam: 'file',
+               imageUploadFields: false,
+               imageUploadForms: false,
+
+               imageCaption: true,
+
                dragImageUpload: true,
+               multipleImageUpload: true,
+               clipboardImageUpload: true,
 
                fileUpload: null,
                fileUploadParam: 'file',
+               fileUploadFields: false,
+               fileUploadForms: false,
                dragFileUpload: true,
 
                s3: false,
 
                linkTooltip: true,
-               linkProtocol: 'http',
                linkNofollow: false,
-               linkSize: 50,
+               linkSize: 30,
+
+               videoContainerClass: 'video-container',
 
                toolbar: true,
                toolbarFixed: true,
                toolbarFixedTarget: document,
                toolbarFixedTopOffset: 0, // pixels
                toolbarExternal: false, // ID selector
-               toolbarOverflow: false,
-               toolbarCustom: false,
 
                air: false,
+               airWidth: false,
 
                formatting: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],
                formattingAdd: false,
                },
                shortcutsAdd: false,
 
+               activeButtons: ['deleted', 'italic', 'bold'],
+               activeButtonsStates: {
+                       b: 'bold',
+                       strong: 'bold',
+                       i: 'italic',
+                       em: 'italic',
+                       del: 'deleted',
+                       strike: 'deleted'
+               },
+
                // private lang
                langs: {
                        en: {
                                "indent": "Indent",
                                "horizontalrule": "Line",
                                "upload-label": "Drop file here or ",
+                               "caption": "Caption",
 
                                "accessibility-help-label": "Rich text editor"
                        }
                        // extend shortcuts
                        $.extend(this.opts.shortcuts, this.opts.shortcutsAdd);
 
+                       // set editor
+                       this.$editor = this.$element;
+
+                       // detect type of editor
+                       this.detectType();
+
                        // start callback
                        this.core.callback('start');
                        this.core.callback('startToEdit');
                        this.build.start();
 
                },
+               detectType: function()
+               {
+                       if (this.build.isInline() || this.opts.inline)
+                       {
+                               this.opts.type = 'inline';
+                       }
+                       else if (this.build.isTag('DIV'))
+                       {
+                               this.opts.type = 'div';
+                       }
+                       else if (this.build.isTag('PRE'))
+                       {
+                               this.opts.type = 'pre';
+                       }
+               },
                loadToEdit: function(options)
                {
 
                        $.extend(options.callbacks,  {
                                startToEdit: function()
                                {
-                                       this.insert.node(this.selection.marker(), false);
+                                       this.insert.node(this.marker.get(), false);
                                },
                                initToEdit: function()
                                {
                                        this.clickToCancelStorage = this.code.get();
 
                                        // cancel
+                                       $(this.opts.clickToCancel).off('.redactor-click-to-edit');
                                        $(this.opts.clickToCancel).show().on('click.redactor-click-to-edit', $.proxy(function(e)
                                        {
                                                e.preventDefault();
                                                this.clickToCancelStorage = '';
                                                $(this.opts.clickToCancel).hide();
                                                $(this.opts.clickToSave).hide();
+
                                                this.$element.on('click.redactor-click-to-edit', $.proxy(function()
                                                {
                                                        this.initToEdit(options);
                                                }, this));
+
                                                this.$element.addClass('redactor-click-to-edit');
 
                                        }, this));
 
                                        // save
+                                       $(this.opts.clickToSave).off('.redactor-click-to-edit');
                                        $(this.opts.clickToSave).show().on('click.redactor-click-to-edit', $.proxy(function(e)
                                        {
                                                e.preventDefault();
                        });
 
                        this.$element.redactor(options);
-                       this.$element.off('click.redactor-click-to-edit');
+                       this.$element.off('.redactor-click-to-edit');
 
                },
                loadOptions: function(options)
                {
+                       var settings = {};
+
+                       // check namespace
+                       if (typeof $.Redactor.settings.namespace !== 'undefined')
+                       {
+                                if (this.$element.hasClass($.Redactor.settings.namespace))
+                                {
+                                        settings = $.Redactor.settings;
+                                }
+                       }
+                       else
+                       {
+                               settings = $.Redactor.settings;
+                       }
+
                        this.opts = $.extend(
                                {},
                                $.extend(true, {}, $.Redactor.opts),
-                               $.extend(true, {}, $.Redactor.settings),
+                               $.extend(true, {}, settings),
                                this.$element.data(),
                                options
                        );
                                },
                                build: function()
                                {
-                                       if (this.utils.isMobile())
+                                       if (this.detect.isMobile())
                                        {
                                                return;
                                        }
 
                                        this.$air = this.air.createContainer();
 
+                                       if (this.opts.airWidth !== false)
+                                       {
+                                               this.$air.css('width', this.opts.airWidth);
+                                       }
+
                                        this.air.append();
                                        this.button.$toolbar = this.$air;
                                        this.button.setFormatting();
                                },
                                show: function (e)
                                {
-                                       this.selection.removeMarkers();
+                                       this.marker.remove();
                                        this.selection.save();
                                        this.selection.restore(false);
 
                                                        var hide = this.air.hide(e);
                                                        if (hide !== false)
                                                        {
-                                                               this.selection.removeMarkers();
+                                                               this.marker.remove();
                                                        }
                                                }
 
                                                if (key === this.keyCode.ESC)
                                                {
                                                        this.selection.get().collapseToStart();
-                                                       this.selection.removeMarkers();
+                                                       this.marker.remove();
                                                }
                                                else if (key === this.keyCode.BACKSPACE || key === this.keyCode.DELETE)
                                                {
                                                        var sel = this.selection.get();
                                                        var range = this.selection.range(sel);
                                                        range.deleteContents();
-                                                       this.selection.removeMarkers();
+                                                       this.marker.remove();
                                                }
                                                else if (key === this.keyCode.ENTER)
                                                {
                                                        this.selection.get().collapseToEnd();
-                                                       this.selection.removeMarkers();
+                                                       this.marker.remove();
                                                }
 
                                                if (this.air.enabled)
                                                else
                                                {
                                                        this.selection.get().collapseToStart();
-                                                       this.selection.removeMarkers();
+                                                       this.marker.remove();
                                                }
 
 
                                {
                                        tag = (tag === 'quote') ? 'blockquote' : tag;
 
-                                       this.block.tags = ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div'];
+                                       this.block.tags = ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'figure'];
                                        if ($.inArray(tag, this.block.tags) === -1)
                                        {
                                                return;
                                        }
 
-                                       this.placeholder.remove();
+                                       if (tag === 'p' && typeof attr === 'undefined')
+                                       {
+                                               // remove all
+                                               attr = 'class';
+                                       }
+
+                                       this.placeholder.hide();
                                        this.buffer.set();
 
                                        return (this.utils.isCollapsed()) ? this.block.formatCollapsed(tag, attr, value, type) : this.block.formatUncollapsed(tag, attr, value, type);
                                                replaced = this.block.setAttr(replaced, attr, value, type);
                                        }
 
+
+                                       // trim pre
+                                       if (tag === 'pre' && replaced.length === 1)
+                                       {
+                                               $(replaced).html($.trim($(replaced).html()));
+                                       }
+
+
                                        this.selection.restore();
                                        this.block.removeInlineTags(replaced);
 
 
                                        this.selection.restore();
 
+                                       // combine pre
+                                       if (tag === 'pre' && replaced.length !== 0)
+                                       {
+                                               var first = replaced[0];
+                                               $.each(replaced, function(i,s)
+                                               {
+                                                       if (i !== 0)
+                                                       {
+                                                               $(first).append("\n" + $.trim(s.html()));
+                                                               $(s).remove();
+                                                       }
+                                               });
+
+                                               replaced = [];
+                                               replaced.push(first);
+                                       }
+
                                        return replaced;
                                },
                                removeInlineTags: function(node)
                        };
                },
 
-               // =browser
-               browser: function()
-               {
-                       return {
-                               webkit: function()
-                               {
-                                       return /webkit/.test(this.opts.userAgent);
-                               },
-                               ff: function()
-                               {
-                                       return this.opts.userAgent.indexOf('firefox') > -1;
-                               },
-                               ie: function(v)
-                               {
-                                       var ie;
-                                       ie = RegExp('msie' + (!isNaN(v)?('\\s'+v):''), 'i').test(navigator.userAgent);
-                                       if (!ie)
-                                       {
-                                               ie = !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
-                                       }
-                                       return ie;
-                               }
-                       };
-               },
-
                // buffer
                buffer: function()
                {
                                setUndo: function()
                                {
                                        this.selection.save();
-                                       this.opts.buffer.push(this.core.editor().html());
+
+                                       var last = this.opts.buffer[this.opts.buffer.length-1];
+                                       var current = this.core.editor().html();
+                                       if (last !== current)
+                                       {
+                                               this.opts.buffer.push(current);
+                                       }
+
                                        this.selection.restore();
                                },
                                setRedo: function()
                                },
                                getUndo: function()
                                {
-                                       this.events.stopDetect();
                                        this.core.editor().html(this.opts.buffer.pop());
-                                       this.events.startDetect();
-
                                },
                                getRedo: function()
                                {
-                                       this.events.stopDetect();
                                        this.core.editor().html(this.opts.rebuffer.pop());
-                                       this.events.startDetect();
-
                                },
                                add: function()
                                {
                                        this.buffer.getUndo();
 
                                        this.selection.restore();
-
-                                       setTimeout($.proxy(this.observe.load, this), 50);
                                },
                                redo: function()
                                {
                                        this.buffer.getRedo();
 
                                        this.selection.restore();
-
-                                       setTimeout($.proxy(this.observe.load, this), 50);
                                }
                        };
                },
                        return {
                                start: function()
                                {
-                                       this.$editor = this.$element;
-
-                                       // load
-                                       if (this.build.isInline() || this.opts.inline)
+                                       if (this.opts.type === 'inline')
                                        {
                                                this.opts.type = 'inline';
-                                               this.opts.inline = true;
-                                               this.opts.linkify = false;
                                        }
-                                       else if (this.build.isTag('DIV'))
+                                       else if (this.opts.type === 'div')
                                        {
-                                               this.opts.type = 'div';
-
                                                // empty
-                                               if (this.$editor.html() === '')
+                                               var html = $.trim(this.$editor.html());
+                                               if (html === '')
                                                {
                                                        this.$editor.html(this.opts.emptyHtml);
                                                }
-
                                        }
-                                       else if (this.build.isTag('PRE'))
-                                       {
-                                               this.opts.type = 'pre';
-                                       }
-                                       else
+                                       else if (this.opts.type === 'textarea')
                                        {
                                                this.build.startTextarea();
                                        }
                                        {
                                                this.core.editor().css('min-height', this.opts.minHeight);
                                        }
+                                       else
+                                       {
+                                               this.core.editor().css('min-height', '40px');
+                                       }
 
                                        // max height
                                        if (this.opts.maxHeight)
                                                this.toolbarsButtons = this.button.init();
                                        }
 
-                                       // custom toolbar
-                                       if (this.opts.toolbarCustom)
-                                       {
-                                               this.toolbar.custom();
-                                       }
-
                                        // load toolbar
                                        if (this.opts.air)
                                        {
                                                this.toolbar.build();
                                        }
 
-                                       if (this.utils.isMobile() && this.opts.toolbarMobile && this.opts.air)
+                                       if (this.detect.isMobile() && this.opts.toolbarMobile && this.opts.air)
                                        {
                                                this.opts.toolbar = true;
                                                this.toolbar.build();
                                        // observe dropdowns
                                        if (this.opts.air || this.opts.toolbar)
                                        {
-                                               this.core.editor().on('mouseup.redactor keyup.redactor focus.redactor', $.proxy(this.observe.dropdowns, this));
+                                               this.core.editor().on('mouseup.redactor-observe.' + this.uuid + ' keyup.redactor-observe.' + this.uuid + ' focus.redactor-observe.' + this.uuid + ' touchstart.redactor-observe.' + this.uuid, $.proxy(this.observe.toolbar, this));
+                                               this.core.element().on('blur.callback.redactor', $.proxy(function()
+                                               {
+                                                       this.button.setInactiveAll();
+
+                                               }, this));
                                        }
 
                                        // modal templates init
                                        // sync code
                                        this.code.html = this.code.cleaned(this.core.editor().html());
 
-                                       // observers
-                                       setTimeout($.proxy(this.observe.load, this), 4);
-
                                        // init callback
                                        this.core.callback('init');
                                        this.core.callback('initToEdit');
 
+                                       // get images & files list
+                                       this.storage.observe();
+
                                        // started
                                        this.start = false;
 
                                        }
 
                                        // placeholder
-                                       this.placeholder.enable();
+                                       this.placeholder.init();
 
                                        // focus
                                        if (this.opts.focus)
                                },
                                hideButtonsOnMobile: function()
                                {
-                                       if (this.utils.isMobile() && this.opts.buttonsHideOnMobile.length !== 0)
+                                       if (this.detect.isMobile() && this.opts.buttonsHideOnMobile.length !== 0)
                                        {
                                                this.button.hideButtonsSlicer(this.opts.buttonsHideOnMobile);
                                        }
 
                                        $.each(this.opts.buttons, $.proxy(function(i, btnName)
                                        {
-                                               if (!this.toolbarsButtons[btnName])
-                                               {
-                                                       return;
-                                               }
-
-                                               if (btnName === 'file' && (!this.opts.fileUpload || !this.opts.fileUpload && !this.opts.s3))
-                                               {
-                                                       return;
-                                               }
-
-                                               if (btnName === 'image' && (!this.opts.imageUpload || !this.opts.imageUpload && !this.opts.s3))
+                                               if (!this.toolbarsButtons[btnName]
+                                                       || (btnName === 'file' && !this.file.is())
+                                                       || (btnName === 'image' && !this.image.is()))
                                                {
                                                        return;
                                                }
                                },
                                build: function(btnName, btnObject)
                                {
+                                       if (this.opts.toolbar === false)
+                                       {
+                                               return;
+                                       }
+
                                        var $button = $('<a href="javascript:void(null);" class="re-button re-' + btnName + '" rel="' + btnName + '" />').html(btnObject.title);
                                        $button.attr({ 'role': 'button', 'aria-label': btnObject.title, 'tabindex': '-1' });
 
                                        {
                                                $button.addClass('redactor-toolbar-link-dropdown').attr('aria-haspopup', true);
 
-                                               var $dropdown = $('<div class="redactor-dropdown redactor-dropdown-' + this.uuid + ' redactor-dropdown-box-' + btnName + '" style="display: none;">');
+                                               var $dropdown = $('<ul class="redactor-dropdown redactor-dropdown-' + this.uuid + ' redactor-dropdown-box-' + btnName + '" style="display: none;">');
                                                $button.data('dropdown', $dropdown);
                                                this.dropdown.build(btnName, $dropdown, btnObject.dropdown);
                                        }
 
                                        return $button;
                                },
+                               getButtons: function()
+                               {
+                                       return this.button.toolbar().find('a.re-button');
+                               },
+                               getButtonsKeys: function()
+                               {
+                                       return this.button.buttons;
+                               },
                                setEvent: function($button, btnName, btnObject)
                                {
-                                       $button.on('click', $.proxy(function(e)
+                                       $button.on('mousedown', $.proxy(function(e)
                                        {
+                                               e.preventDefault();
+
                                                if ($button.hasClass('redactor-button-disabled'))
                                                {
                                                        return false;
                                },
                                toggle: function(e, btnName, type, callback, args)
                                {
-                                       e.preventDefault();
 
-                                       if (this.browser.ie())
+                                       if (this.detect.isIe() || !this.detect.isDesktop())
                                        {
                                                this.utils.freezeScroll();
                                                e.returnValue = false;
                                                this.button.clickCallback(e, callback, btnName, args);
                                        }
 
+                                       if (type !== 'dropdown')
+                                       {
+                                               this.dropdown.hideAll(false);
+                                       }
+
                                        if (this.opts.air && type !== 'dropdown')
                                        {
                                                this.air.hide(e);
                                        }
 
-                                       if (this.browser.ie())
+                                       if (this.detect.isIe() || !this.detect.isDesktop())
                                        {
                                                this.utils.unfreezeScroll();
                                        }
                                        }
                                        else
                                        {
+
                                                if (typeof args === 'object')
                                                {
                                                        this[callback].apply(this, args);
                                                }
                                        }
 
+                                       this.observe.buttons(e, btnName);
+
                                },
                                all: function()
                                {
                                },
                                get: function(key)
                                {
+                                       if (this.opts.toolbar === false)
+                                       {
+                                               return;
+                                       }
+
                                        return this.button.toolbar().find('a.re-' + key);
                                },
                                set: function(key, title)
                                {
+                                       if (this.opts.toolbar === false)
+                                       {
+                                               return;
+                                       }
+
                                        var $btn = this.button.toolbar().find('a.re-' + key);
 
                                        $btn.html(title).attr('aria-label', title);
                                },
                                add: function(key, title)
                                {
-                                       if (this.button.isMobileUndoRedo(key))
+                                       if (this.opts.toolbar === false)
                                        {
                                                return;
                                        }
                                },
                                addFirst: function(key, title)
                                {
-                                       if (this.button.isMobileUndoRedo(key))
+                                       if (this.opts.toolbar === false)
                                        {
                                                return;
                                        }
                                },
                                addAfter: function(afterkey, key, title)
                                {
-                                       if (this.button.isMobileUndoRedo(key))
+                                       if (this.opts.toolbar === false)
                                        {
                                                return;
                                        }
                                },
                                addBefore: function(beforekey, key, title)
                                {
-                                       if (this.button.isMobileUndoRedo(key))
+                                       if (this.opts.toolbar === false)
                                        {
                                                return;
                                        }
                                },
                                addCallback: function($btn, callback)
                                {
-                                       if (typeof $btn === 'undefined')
+                                       if (typeof $btn === 'undefined' || this.opts.toolbar === false)
                                        {
                                                return;
                                        }
 
                                        var type = (callback === 'dropdown') ? 'dropdown' : 'func';
                                        var key = $btn.attr('rel');
-                                       $btn.on('touchstart click', $.proxy(function(e)
+                                       $btn.on('mousedown', $.proxy(function(e)
                                        {
                                                if ($btn.hasClass('redactor-button-disabled'))
                                                {
                                },
                                addDropdown: function($btn, dropdown)
                                {
+                                       if (this.opts.toolbar === false)
+                                       {
+                                               return;
+                                       }
+
                                        $btn.addClass('redactor-toolbar-link-dropdown').attr('aria-haspopup', true);
 
                                        var key = $btn.attr('rel');
                                setInactiveAll: function(key)
                                {
                                        var $btns = this.button.toolbar().find('a.re-button');
+
                                        if (typeof key !== 'undefined')
                                        {
                                                $btns = $btns.not('.re-' + key);
 
                                        $btns.removeClass('redactor-act');
                                },
+                               disable: function(key)
+                               {
+                                       this.button.get(key).addClass('redactor-button-disabled');
+                               },
+                               enable: function(key)
+                               {
+                                       this.button.get(key).removeClass('redactor-button-disabled');
+                               },
                                disableAll: function(key)
                                {
                                        var $btns = this.button.toolbar().find('a.re-button');
                                remove: function(key)
                                {
                                        this.button.get(key).remove();
-                               },
-                               isMobileUndoRedo: function(key)
-                               {
-                                       return (key === "undo" || key === "redo") && !this.utils.isDesktop();
                                }
                        };
                },
                                                return $prev[0];
                                        }
                                },
+
+                               // #backward
                                offset: function(node)
                                {
-                                       var sel, range, cloned;
-
-                                       if (typeof node === 'undefined')
-                                       {
-                                           sel = this.selection.get();
-                                               range = this.selection.range(sel);
-
-                                       cloned = range.cloneRange();
-                                       cloned.selectNodeContents(this.$editor[0]);
-                                       cloned.setEnd(range.endContainer, range.endOffset);
-
-                                               return $.trim(cloned.toString().replace(/\u200B/g, '')).length;
-                                       }
-                                       else
-                                       {
-                                               node = node[0] || node;
-
-                                               sel = this.selection.get();
-                                               range = this.selection.range(sel);
-
-                                               cloned = range.cloneRange();
-                                               cloned.selectNodeContents(node);
-                                               cloned.setEnd(range.endContainer, range.endOffset);
-
-
-                                               return $.trim(cloned.toString().replace(/\u200B/g, '')).length;
-                                       }
+                                       return this.offset.get(node);
                                }
 
                        };
                                        // replace special characters in links
                                        html = html.replace(/<a href="(.*?[^>]?)®(.*?[^>]?)">/gi, '<a href="$1&reg$2">');
 
+                                       // save markers
+                                       html = html.replace(/<span(.*?[^>]?)id="selection-marker-1"(.*?[^>]?)>​<\/span>/gi, '[[[marker1]]]');
+                                       html = html.replace(/<span(.*?[^>]?)id="selection-marker-2"(.*?[^>]?)>​<\/span>/gi, '[[[marker2]]]');
+
                                        // replace tags
                                        var self = this;
                                        var $div = $("<div/>").html($.parseHTML(html, document, true));
                                        // paragraphize
                                        html = this.paragraphize.load(html);
 
+                                       // restore markers
+                                       html = html.replace('[[[marker1]]]', '<span id="selection-marker-1" class="redactor-selection-marker">​</span>');
+                                       html = html.replace('[[[marker2]]]', '<span id="selection-marker-2" class="redactor-selection-marker">​</span>');
+
                                        // empty
                                        if (html.search(/^(||\s||<br\s?\/?>||&nbsp;)$/i) !== -1)
                                        {
                                },
                                onSync: function(html)
                                {
-                                       // remove spaces
+                                       // remove invisible spaces
                                        html = html.replace(/\u200B/g, '');
                                        html = html.replace(/&#x200b;/gi, '');
-                                       html = html.replace(/&nbsp;/gi, ' ');
+                                       //html = html.replace(/&nbsp;&nbsp;/gi, '&nbsp;');
 
                                        if (html.search(/^<p>(||\s||<br\s?\/?>||&nbsp;)<\/p>$/i) !== -1)
                                        {
                                        html = html.replace(new RegExp('</li><br\\s?/?>', 'gi'), '</li>');
 
                                        // pre class
+                                       html = html.replace(/<pre>/gi, "<pre>\n");
                                        if (this.opts.preClass)
                                        {
                                                html = html.replace(/<pre>/gi, '<pre class="' + this.opts.preClass + '">');
 
                                        html = html.replace(/&amp;/g, '&');
 
+                                       // remove empty paragpraphs
+                                       html = html.replace(/<p><\/p>/gi, "");
+
                                        return html;
                                },
-                               onPaste: function(html, insert)
+                               onPaste: function(html, data, insert)
                                {
-                                       var blocks = this.selection.blocks();
-
-                                       this.paste.text = false;
-                                       this.insert.gap = false;
-
-                                       html = $.trim(html);
-
+                                       // if paste event
                                        if (insert !== true)
                                        {
-                                               html = html.replace(/</g, '&lt;');
-                                               html = html.replace(/>/g, '&gt;');
+                                               var msword = this.clean.isHtmlMsWord(html);
+                                               if (msword)
+                                               {
+                                                       html = this.clean.cleanMsWord(html);
+                                               }
                                        }
 
-                                       if (this.opts.enterKey === false || this.opts.type === 'inline' || (blocks.length === 1 && this.utils.isCurrentOrParent(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'a', 'figcaption'])))
-                                       {
-                                               this.paste.text = true;
+                                       html = $.trim(html);
 
-                                               if (typeof insert !== 'undefined')
+                                       if (data.pre)
+                                       {
+                                               if (this.opts.preSpaces)
                                                {
-                                                       html = this.clean.getPlainText(html);
+                                                       html = html.replace(/\t/g, new Array(this.opts.preSpaces + 1).join(' '));
                                                }
-
-                                               return html;
                                        }
-                                       else if (blocks.length === 1 && this.utils.isCurrentOrParent(['th', 'td', 'blockquote']))
+                                       else
                                        {
-                                               if (typeof insert !== 'undefined')
+                                               html = this.clean.replaceBrToNl(html);
+                                               html = this.clean.removeTagsInsidePre(html);
+                                       }
+
+                                       // if paste event
+                                       if (insert !== true)
+                                       {
+                                               html = this.clean.removeSpans(html);
+                                               html = this.clean.removeEmptyInlineTags(html);
+
+                                               if (data.encode === false)
                                                {
-                                                       html = html.replace(/<br\s?\/?>|<\/H[1-6]>|<\/p>|<\/div>|<\/li>|<\/td>/gi, '\n');
+                                                       html = html.replace(/&/g, '&amp;');
+                                                       html = this.clean.convertTags(html, data);
                                                        html = this.clean.getPlainText(html);
+                                                       html = this.clean.reconvertTags(html, data);
                                                }
 
-                                               html = html.replace(/\n/g, '<br />');
+                                       }
 
-                                               return html;
+                                       if (data.text)
+                                       {
+                                               html = this.clean.replaceNbspToSpaces(html);
+                                               html = this.clean.getPlainText(html);
                                        }
-                                       else if (this.opts.type === 'pre' || (blocks.length === 1 && this.utils.isCurrentOrParent('pre')))
+
+                                       if (data.encode)
                                        {
+                                               html = this.clean.encodeHtml(html);
+                                       }
 
-                                               html = html.replace(/”/g, '"');
-                                               html = html.replace(/“/g, '"');
-                                               html = html.replace(/‘/g, '\'');
-                                               html = html.replace(/’/g, '\'');
-                                               html = this.clean.encodeEntities(html);
+                                       if (data.paragraphize)
+                                       {
 
-                                               return html;
+                                               html = this.paragraphize.load(html);
                                        }
 
-                                       this.paste.text = false;
-                                       this.insert.gap = true;
+                                       return html;
+
+                               },
+                               getCurrentType: function(html, insert)
+                               {
+                                       var blocks = this.selection.blocks();
+
+                                       var data = {
+                                               text: false,
+                                               encode: false,
+                                               paragraphize: true,
+                                               line: this.clean.isHtmlLine(html),
+                                               blocks: this.clean.isHtmlBlocked(html),
+                                               pre: false,
+                                               lists: false,
+                                               block: true,
+                                               inline: true,
+                                               links: true,
+                                               images: true
+                                       };
 
-                                       // if no block level tags
-                                       if (typeof insert !== 'undefined')
+                                       if (blocks.length === 1 && this.utils.isCurrentOrParent(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'a', 'figcaption']))
                                        {
-                                               var match1 = html.match(new RegExp('</(' + this.opts.blockTags.join('|' ).toUpperCase() + ')>', 'gi'));
-                                               var match2 = html.match(new RegExp('<hr\s?/?>', 'gi'));
-                                               if (match1 === null && match2 === null)
-                                               {
-                                                       this.insert.gap = false;
+                                               data.text = true;
+                                               data.paragraphize = false;
+                                               data.inline = false;
+                                               data.images = false;
+                                               data.links = false;
+                                               data.line = true;
+                                       }
+                                       else if (this.opts.type === 'inline' || this.opts.enterKey === false)
+                                       {
+                                               data.paragraphize = false;
+                                               data.block = false;
+                                               data.line = true;
+                                       }
+                                       else if (blocks.length === 1 && this.utils.isCurrentOrParent(['li']))
+                                       {
+                                               data.lists = true;
+                                               data.block = false;
+                                               data.paragraphize = false;
+                                               data.images = false;
+                                       }
+                                       else if (blocks.length === 1 && this.utils.isCurrentOrParent(['th', 'td', 'blockquote']))
+                                       {
+                                               data.block = false;
+                                               data.paragraphize = false;
 
-                                                       return html;
-                                               }
+                                       }
+                                       else if (this.opts.type === 'pre' || (blocks.length === 1 && this.utils.isCurrentOrParent('pre')))
+                                       {
+                                               data.inline = false;
+                                               data.block = false;
+                                               data.encode = true;
+                                               data.pre = true;
+                                               data.paragraphize = false;
+                                               data.images = false;
+                                               data.links = false;
                                        }
 
-                                       // if text as single line
-                                       var singleLine = false;
-                                       if (!this.utils.isSelectAll())
+                                       if (data.line === true)
                                        {
-                                               var matchBR = html.match(/<br\s?\/?>/gi);
-                                               var matchNL = html.match(/\n/gi);
-                                               if (!matchBR && !matchNL)
-                                               {
-                                                       singleLine = true;
-                                               }
+                                               data.paragraphize = false;
                                        }
 
-                                       if (singleLine)
+                                       if (insert === true)
                                        {
-                                               this.paste.text = true;
+                                               data.text = false;
                                        }
-                                       else
+
+                                       return data;
+
+                               },
+                               isHtmlBlocked: function(html)
+                               {
+                                       var match1 = html.match(new RegExp('</(' + this.opts.blockTags.join('|' ).toUpperCase() + ')>', 'gi'));
+                                       var match2 = html.match(new RegExp('<hr(.*?[^>])>', 'gi'));
+
+                                       return (match1 === null && match2 === null) ? false : true;
+                               },
+                               isHtmlLine: function(html)
+                               {
+                                       if (this.clean.isHtmlBlocked(html))
                                        {
-                                               html = this.paragraphize.load(html);
+                                               return false;
+                                       }
+
+                                       var matchBR = html.match(/<br\s?\/?>/gi);
+                                       var matchNL = html.match(/\n/gi);
+
+                                       return (!matchBR && !matchNL) ? true : false;
+                               },
+                               isHtmlMsWord: function(html)
+                               {
+                                       return html.match(/class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i);
+                               },
+                               removeEmptyInlineTags: function(html)
+                               {
+                                       var tags = this.opts.inlineTags;
+                                       var len = tags.length;
+                                       for (var i = 0; i < len; i++)
+                                       {
+                                               html = html.replace(new RegExp('<' + tags[i] + '[^>]*>(\s\n|\t)?</' + tags[i] + '>', 'gi'), '');
                                        }
 
                                        return html;
                                },
-                               getPlainText: function(html)
+                               removeSpans: function(html)
                                {
-                                       var tmp = document.createElement('div');
-                                       tmp.innerHTML = html;
-                                       html = tmp.textContent || tmp.innerText;
+                                       html = html.replace(/<\/span>/gi, '');
+                                       html = html.replace(/<span[^>]*>/gi, '');
 
-                                       return $.trim(html);
+                                       return html;
                                },
-                               savePreCode: function(html)
+                               cleanMsWord: function(html)
                                {
-                                       html = this.clean.savePreFormatting(html);
-                                       html = this.clean.saveCodeFormatting(html);
+                                       html = html.replace(/\n/g, " ");
+                                       html = html.replace(/<br\s?\/?>|<\/p>|<\/div>|<\/li>|<\/td>/gi, '\n\n');
 
                                        return html;
                                },
-                               savePreFormatting: function(html)
+                               replaceNbspToSpaces: function(html)
                                {
-                                       var pre = html.match(/<pre(.*?)>([\w\W]*?)<\/pre>/gi);
-                                       if (pre === null)
+                                       return html.replace('&nbsp;', ' ');
+                               },
+                               replaceBrToNl: function(html)
+                               {
+                                       return html.replace(/<br\s?\/?>/gi, '\n');
+                               },
+                               replaceNlToBr: function(html)
+                               {
+                                       return html.replace(/\n/g, '<br />');
+                               },
+                               convertTags: function(html, data)
+                               {
+                                       // links & images
+                                       if (data.links && this.opts.pasteLinks)
                                        {
-                                               return html;
+                                               html = html.replace(/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/gi, '###a href="$2"###$4###/a###');
                                        }
 
-                                       $.each(pre, $.proxy(function(i,s)
+                                       if (data.images && this.opts.pasteImages)
                                        {
-                                               var arr = s.match(/<pre(.*?)>([\w\W]*?)<\/pre>/i);
+                                               html = html.replace(/<img src="(.*?)"(.*?[^>])>/gi, '###img src="$1"###');
+                                       }
 
-                                               arr[2] = arr[2].replace(/<br\s?\/?>/g, '\n');
-                                               arr[2] = arr[2].replace(/&nbsp;/g, ' ');
+                                       // plain text
+                                       if (this.opts.pastePlainText)
+                                       {
+                                               return html;
+                                       }
+
+                                       // all tags
+                                       var blockTags = (data.lists) ? ['ul', 'ol', 'li'] : this.opts.pasteBlockTags;
+
+                                       var tags;
+                                       if (data.block)
+                                       {
+                                               tags = (data.inline) ? blockTags.concat(this.opts.pasteInlineTags) : blockTags;
+                                       }
+                                       else
+                                       {
+                                               tags = (data.inline) ? this.opts.pasteInlineTags : [];
+                                       }
+
+                                       var len = tags.length;
+                                       for (var i = 0; i < len; i++)
+                                       {
+                                               html = html.replace(new RegExp('</' + tags[i] + '>', 'gi'), '###/' + tags[i] + '###');
+
+                                               if (tags[i] === 'td' || tags[i] === 'th')
+                                               {
+                                                       html = html.replace(new RegExp('<' + tags[i] + '(.*?[^>])((colspan|rowspan)="(.*?[^>])")?(.*?[^>])>', 'gi'), '###' + tags[i] + ' $2###');
+                                               }
+                                               else
+                                               {
+                                                       html = html.replace(new RegExp('<' + tags[i] + '[^>]*>', 'gi'), '###' + tags[i] + '###');
+                                               }
+                                       }
+
+
+                                       return html;
+
+                               },
+                               reconvertTags: function(html, data)
+                               {
+                                       // links & images
+                                       if (data.links && this.opts.pasteLinks)
+                                       {
+                                               html = html.replace(/###a href="(.*?)"###(.*?)###\/a###/gi, '<a href="$1">$2</a>');
+                                       }
+
+                                       if (data.images && this.opts.pasteImages)
+                                       {
+                                               html = html.replace(/###img src="(.*?)"###/gi, '<img src="$1">');
+                                       }
+
+                                       // plain text
+                                       if (this.opts.pastePlainText)
+                                       {
+                                               return html;
+                                       }
+
+                                       var blockTags = (data.lists) ? ['ul', 'ol', 'li'] : this.opts.pasteBlockTags;
+
+                                       var tags;
+                                       if (data.block)
+                                       {
+                                               tags = (data.inline) ? blockTags.concat(this.opts.pasteInlineTags) : blockTags;
+                                       }
+                                       else
+                                       {
+                                               tags = (data.inline) ? this.opts.pasteInlineTags : [];
+                                       }
+
+                                       var len = tags.length;
+                                       for (var i = 0; i < len; i++)
+                                       {
+                                               html = html.replace(new RegExp('###/' + tags[i] + '###', 'gi'), '</' + tags[i] + '>');
+
+                                               if (tags[i] === 'td' || tags[i] === 'th')
+                                               {
+                                                       html = html.replace(new RegExp('###' + tags[i] + ' (.*?[^#])###', 'gi'), '<' + tags[i] + '$1>');
+                                               }
+                                               else
+                                               {
+                                                       html = html.replace(new RegExp('###' + tags[i] + '###', 'gi'), '<' + tags[i] + '>');
+                                               }
+                                       }
+
+                                       return html;
+
+                               },
+                               cleanPre: function(block)
+                               {
+                                       block = (typeof block === 'undefined') ? $(this.selection.block()).closest('pre', this.core.editor()[0]) : block;
+
+                                       $(block).find('br').replaceWith(function()
+                                       {
+                                               return document.createTextNode('\n');
+                                       });
+
+                                       $(block).find('p').replaceWith(function()
+                                       {
+                                               return $(this).contents();
+                                       });
+
+                               },
+                               removeTagsInsidePre: function(html)
+                               {
+                                       var $div = $('<div />').append(html);
+                                       $div.find('pre').replaceWith(function()
+                                       {
+                                               var str = $(this).html();
+                                               str = str.replace(/<br\s?\/?>|<\/p>|<\/div>|<\/li>|<\/td>/gi, '\n');
+                                               str = str.replace(/(<([^>]+)>)/gi, '');
+
+                                               return $('<pre />').append(str);
+                                       });
+
+                                       html = $div.html();
+                                       $div.remove();
+
+                                       return html;
+
+                               },
+                               getPlainText: function(html)
+                               {
+                                       html = html.replace(/<!--[\s\S]*?-->/gi, '');
+                                       html = html.replace(/<style[\s\S]*?style>/gi, '');
+                                       html = html.replace(/<\/p>|<\/div>|<\/li>|<\/td>/gi, '\n');
+                                       html = html.replace(/<\/H[1-6]>/gi, '\n\n');
+
+                                       var tmp = document.createElement('div');
+                                       tmp.innerHTML = html;
+                                       html = tmp.textContent || tmp.innerText;
+
+                                       return $.trim(html);
+                               },
+                               savePreCode: function(html)
+                               {
+                                       html = this.clean.savePreFormatting(html);
+                                       html = this.clean.saveCodeFormatting(html);
+                                       html = this.clean.restoreSelectionMarkers(html);
+
+                                       return html;
+                               },
+                               savePreFormatting: function(html)
+                               {
+                                       var pre = html.match(/<pre(.*?)>([\w\W]*?)<\/pre>/gi);
+                                       if (pre === null)
+                                       {
+                                               return html;
+                                       }
+
+                                       $.each(pre, $.proxy(function(i,s)
+                                       {
+                                               var arr = s.match(/<pre(.*?)>([\w\W]*?)<\/pre>/i);
+
+                                               arr[2] = arr[2].replace(/<br\s?\/?>/g, '\n');
+                                               arr[2] = arr[2].replace(/&nbsp;/g, ' ');
 
                                                if (this.opts.preSpaces)
                                                {
 
                                        return html;
                                },
+                               restoreSelectionMarkers: function(html)
+                               {
+                                       html = html.replace(/&lt;span id=&quot;selection-marker-([0-9])&quot; class=&quot;redactor-selection-marker&quot;&gt;​&lt;\/span&gt;/g, '<span id="selection-marker-$1" class="redactor-selection-marker">​</span>');
+
+                                       return html;
+                               },
                                saveFormTags: function(html)
                                {
                                        return html.replace(/<form(.*?)>([\w\W]*?)<\/form>/gi, '<section$1 rel="redactor-form-tag">$2</section>');
                                {
                                        return html.replace(/<section(.*?) rel="redactor-form-tag"(.*?)>([\w\W]*?)<\/section>/gi, '<form$1$2>$3</form>');
                                },
+                               encodeHtml: function(html)
+                               {
+                                       html = html.replace(/”/g, '"');
+                                       html = html.replace(/“/g, '"');
+                                       html = html.replace(/‘/g, '\'');
+                                       html = html.replace(/’/g, '\'');
+                                       html = this.clean.encodeEntities(html);
+
+                                       return html;
+                               },
                                encodeEntities: function(str)
                                {
                                        str = String(str).replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"');
                                        html = html.replace(/\u200B/g, '');
 
                                        return html;
+                               },
+                               normalizeCurrentHeading: function()
+                               {
+                                       var heading = this.selection.block();
+                                       if (this.utils.isCurrentOrParentHeader() && heading)
+                                       {
+                                               heading.normalize();
+                                       }
                                }
                        };
                },
                                        {
                                                html = this.clean.onSet(html);
                                        }
+                                       else if (this.opts.type === 'div' && html === '')
+                                       {
+                                               html = this.opts.emptyHtml;
+                                       }
 
-                                       this.events.stopDetect();
+                                       this.events.stopDetectChanges();
                                        this.core.editor().html(html);
-                                       this.events.startDetect();
+                                       this.observe.load();
+                                       this.events.startDetectChanges();
                                },
                                set: function(html)
                                {
                                        {
                                                html = this.clean.onSet(html);
                                        }
+                                       else if (this.opts.type === 'div' && html === '')
+                                       {
+                                               html = this.opts.emptyHtml;
+                                       }
 
                                        this.core.editor().html(html);
-                                       this.focus.end();
+
+                                       if (this.opts.type === 'textarea')
+                                       {
+                                               this.core.textarea().val(this.clean.onSync(html));
+                                       }
+
+                                       this.placeholder.enable();
                                },
                                get: function()
                                {
                                                setTimeout($.proxy(function()
                                                {
                                                        this.code.startSync(html);
+
                                                }, this), 10);
                                        }
                                },
                                },
                                isSync: function(htmlCleaned)
                                {
-                                       return (this.code.html && this.code.html === htmlCleaned);
+                                       var html = (this.code.html !== false) ? this.code.html : false;
 
+                                       return (html !== false && html === htmlCleaned);
                                },
                                cleaned: function(html)
                                {
-                                       html = this.clean.removeSpaces(html);
+                                       html = html.replace(/\u200B/g, '');
                                        return this.clean.removeMarkers(html);
                                }
                        };
                core: function()
                {
                        return {
+
                                id: function()
                                {
                                        return this.$editor.attr('id');
                                },
                                editor: function()
                                {
-                                       return this.$editor;
+                                       return (typeof this.$editor === 'undefined') ? $() : this.$editor;
                                },
                                textarea: function()
                                {
 
                                        this.core.callback('destroy');
 
-                                       // custom toolbar
-                                       $('.redactor-data-cmd').off('click.redactor-data-cmd').removeClass('redactor-data-cmd');
+                                       // placeholder
+                                       this.placeholder.destroy();
 
-                                       // placeholder style
-                                       $('.redactor-style-tag').remove();
+                                       // progress
+                                       this.progress.destroy();
 
                                        // help label
                                        $('#redactor-voice-' + this.uuid).remove();
 
-                                       this.core.editor().removeClass('redactor-in');
-
-                                       // structure class
-                                       this.core.editor().removeClass('redactor-structure');
+                                       this.core.editor().removeClass('redactor-in redactor-structure');
 
                                        // caret service
                                        this.core.editor().off('keydown.redactor-remove-textnode');
 
                                        // observer
-                                       this.observer.disconnect();
+                                       this.core.editor().off('.redactor-observe.' + this.uuid);
 
                                        // off events and remove data
                                        this.$element.off('.redactor').removeData('redactor');
                                        this.core.editor().off('.redactor');
 
+                                       $(document).off('.redactor-dropdown');
                                        $(document).off('.redactor-air.' + this.uuid);
                                        $(document).off('mousedown.redactor-blur.' + this.uuid);
                                        $(document).off('mousedown.redactor.' + this.uuid);
                                        $(document).off('touchstart.redactor.' + this.uuid + ' click.redactor.' + this.uuid);
                                        $(window).off('.redactor-toolbar.' + this.uuid);
+                                       $(window).off('touchmove.redactor.' + this.uuid);
                                        $("body").off('scroll.redactor.' + this.uuid);
 
                                        $(this.opts.toolbarFixedTarget).off('scroll.redactor.' + this.uuid);
 
                                        // plugins events
                                        var self = this;
-                                       $.each(this.opts.plugins, function(i,s)
+                                       if (this.opts.plugins !== false)
                                        {
-                                               $(window).off('.redactor-plugin-' + s);
-                                               $(document).off('.redactor-plugin-' + s);
-                                               $("body").off('.redactor-plugin-' + s);
-                                               self.core.editor().off('.redactor-plugin-' + s);
-                                       });
+                                               $.each(this.opts.plugins, function(i,s)
+                                               {
+                                                       $(window).off('.redactor-plugin-' + s);
+                                                       $(document).off('.redactor-plugin-' + s);
+                                                       $("body").off('.redactor-plugin-' + s);
+                                                       self.core.editor().off('.redactor-plugin-' + s);
+                                               });
+                                       }
 
                                        // click to edit
                                        this.$element.off('click.redactor-click-to-edit');
                                        this.$element.removeClass('redactor-click-to-edit');
 
                                        // common
-                                       this.core.editor().removeClass('redactor-editor redactor-linebreaks redactor-placeholder');
+                                       this.core.editor().removeClass('redactor-editor');
                                        this.core.editor().removeAttr('contenteditable');
 
                                        var html = this.code.get();
                        };
                },
 
+               // =detect
+               detect: function()
+               {
+                       return {
+
+                               // public
+                               isWebkit: function()
+                               {
+                                       return /webkit/.test(this.opts.userAgent);
+                               },
+                               isFirefox: function()
+                               {
+                                       return this.opts.userAgent.indexOf('firefox') > -1;
+                               },
+                               isIe: function(v)
+                               {
+                                       var ie;
+                                       ie = RegExp('msie' + (!isNaN(v)?('\\s'+v):''), 'i').test(navigator.userAgent);
+                                       if (!ie)
+                                       {
+                                               ie = !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
+                                       }
+                                       return ie;
+                               },
+                               isMobile: function()
+                               {
+                                       return /(iPhone|iPod|BlackBerry|Android)/.test(navigator.userAgent);
+                               },
+                               isDesktop: function()
+                               {
+                                       return !/(iPhone|iPod|iPad|BlackBerry|Android)/.test(navigator.userAgent);
+                               },
+                               isIpad: function()
+                               {
+                                       return /iPad/.test(navigator.userAgent);
+                               }
+
+                       };
+               },
+
                // =dropdown
                dropdown: function()
                {
                        return {
+                               active: false,
+                               button: false,
+                               key: false,
+                               position: [],
+                               getDropdown: function()
+                               {
+                                       return this.dropdown.active;
+                               },
                                build: function(name, $dropdown, dropdownObject)
                                {
-                                       if (name === 'format' && this.opts.formattingAdd)
-                                       {
-                                               $.each(this.opts.formattingAdd, $.proxy(function(i,s)
-                                               {
-                                                       var func;
-                                                       var type = (this.utils.isBlockTag(s.args[0])) ? 'block' : 'inline';
+                                       dropdownObject = this.dropdown.buildFormatting(name, dropdownObject);
 
-                                                       if (type === 'block')
-                                                       {
-                                                               func = 'block.format';
-                                                       }
-                                                       else
-                                                       {
-                                                               func = 'inline.format';
-                                                       }
+                                       $.each(dropdownObject, $.proxy(function(btnName, btnObject)
+                                       {
+                                               var $item = this.dropdown.buildItem(btnName, btnObject);
 
-                                                       dropdownObject[i] = {
-                                                               func: func,
-                                                               args: s.args,
-                                                               title: s.title
-                                                       };
+                                               this.observe.addDropdown($item, btnName, btnObject);
+                                               $dropdown.attr('rel', name).append($item);
 
-                                               }, this));
+                                       }, this));
+                               },
+                               buildFormatting: function(name, dropdownObject)
+                               {
+                                       if (name !== 'format' || this.opts.formattingAdd === false)
+                                       {
+                                               return dropdownObject;
                                        }
 
-                                       $.each(dropdownObject, $.proxy(function(btnName, btnObject)
+                                       $.each(this.opts.formattingAdd, $.proxy(function(i,s)
                                        {
-                                               var $item = $('<a href="#" class="redactor-dropdown-' + btnName + '" role="button">' + btnObject.title + '</a>');
+                                               var type = (this.utils.isBlockTag(s.args[0])) ? 'block' : 'inline';
 
-                                               $item.on('click', $.proxy(function(e)
-                                               {
-                                                       e.preventDefault();
+                                               dropdownObject[i] = {
+                                                       func: (type === 'block') ? 'block.format' : 'inline.format',
+                                                       args: s.args,
+                                                       title: s.title
+                                               };
 
-                                                       var type = 'func';
-                                                       var callback = btnObject.func;
-                                                       if (btnObject.command)
-                                                       {
-                                                               type = 'command';
-                                                               callback = btnObject.command;
-                                                       }
-                                                       else if (btnObject.dropdown)
-                                                       {
-                                                               type = 'dropdown';
-                                                               callback = btnObject.dropdown;
-                                                       }
+                                       }, this));
 
-                                                       if ($(e.target).hasClass('redactor-dropdown-link-inactive'))
-                                                       {
-                                                               return;
-                                                       }
+                                       return dropdownObject;
+                               },
+                               buildItem: function(btnName, btnObject)
+                               {
+                                       var $itemContainer = $('<li />');
+                                       var $item = $('<a href="#" class="redactor-dropdown-' + btnName + '" role="button" />');
+                                       var $itemSpan = $('<span />').html(btnObject.title);
 
-                                                       if (typeof btnObject.args !== ' undefined')
-                                                       {
-                                                               this.button.toggle(e, btnName, type, callback, btnObject.args);
-                                                       }
-                                                       else
-                                                       {
-                                                               this.button.toggle(e, btnName, type, callback);
-                                                       }
+                                       $item.append($itemSpan);
+                                       $item.on('mousedown', $.proxy(function(e)
+                                       {
+                                               e.preventDefault();
 
-                                                       this.dropdown.hideAll();
+                                               this.dropdown.buildClick(e, btnName, btnObject);
 
+                                       }, this));
 
-                                               }, this));
+                                       $itemContainer.append($item);
 
-                                               this.observe.addDropdown($item, btnName, btnObject);
-                                               $dropdown.attr('rel', name).append($item);
+                                       return $itemContainer;
 
-                                       }, this));
                                },
-                               show: function(e, key)
+                               buildClick: function(e, btnName, btnObject)
                                {
-                                       this.core.editor().focus();
-
-                                       var $button = this.button.get(key);
+                                       if ($(e.target).hasClass('redactor-dropdown-link-inactive'))
+                                       {
+                                               return;
+                                       }
 
-                                       // Always re-append it to the end of <body> so it always has the highest sub-z-index.
-                                       var $dropdown = $button.data('dropdown').appendTo(document.body);
+                                       var command = this.dropdown.buildCommand(btnObject);
 
-                                       if ($button.hasClass('dropact'))
+                                       if (typeof btnObject.args !== ' undefined')
                                        {
-                                               this.dropdown.hideAll();
+                                               this.button.toggle(e, btnName, command.type, command.callback, btnObject.args);
                                        }
                                        else
                                        {
-                                               this.dropdown.hideAll();
+                                               this.button.toggle(e, btnName, command.type, command.callback);
+                                       }
+                               },
+                               buildCommand: function(btnObject)
+                               {
+                                       var command = {};
+                                       command.type = 'func';
+                                       command.callback = btnObject.func;
 
-                                               this.core.callback('dropdownShow', { dropdown: $dropdown, key: key, button: $button });
+                                       if (btnObject.command)
+                                       {
+                                               command.type = 'command';
+                                               command.callback = btnObject.command;
+                                       }
+                                       else if (btnObject.dropdown)
+                                       {
+                                               command.type = 'dropdown';
+                                               command.callback = btnObject.dropdown;
+                                       }
 
-                                               this.button.setActive(key);
+                                       return command;
+                               },
+                               show: function(e, key)
+                               {
+                                       if (this.detect.isDesktop())
+                                       {
+                                               this.core.editor().focus();
+                                       }
 
-                                               $button.addClass('dropact');
+                                       this.dropdown.hideAll(false, key);
 
-                                               var keyPosition = $button.offset();
+                                       this.dropdown.key = key;
+                                       this.dropdown.button = this.button.get(this.dropdown.key);
 
-                                               // fix right placement
-                                               var dropdownWidth = $dropdown.width();
-                                               if ((keyPosition.left + dropdownWidth) > $(document).width())
-                                               {
-                                                       keyPosition.left = Math.max(0, keyPosition.left - dropdownWidth);
-                                               }
+                                       if (this.dropdown.button.hasClass('dropact'))
+                                       {
+                                               this.dropdown.hide();
+                                               return;
+                                       }
 
-                                               var top;
-                                               var left = keyPosition.left + 'px';
+                                       // re append
+                                       this.dropdown.active = this.dropdown.button.data('dropdown').appendTo(document.body);
 
-                                               // fixed toolbar
-                                               if (this.button.toolbar().hasClass('toolbar-fixed-box'))
-                                               {
-                                                       top = $button.position().top + $button.innerHeight() + this.opts.toolbarFixedTopOffset;
+                                       // callback
+                                       this.core.callback('dropdownShow', { dropdown: this.dropdown.active, key: this.dropdown.key, button: this.dropdown.button });
 
-                                                       var position = 'fixed';
-                                                       if (this.opts.toolbarFixedTarget !== document)
-                                                       {
-                                                               top = ($button.innerHeight() + this.$toolbar.offset().top) + this.opts.toolbarFixedTopOffset;
-                                                               position = 'absolute';
-                                                       }
+                                       // set button
+                                       this.button.setActive(this.dropdown.key);
+                                       this.dropdown.button.addClass('dropact');
 
-                                                       $dropdown.css({ position: position, left: left, top: top + 'px' }).slideDown(300);
-                                               }
-                                               else
-                                               {
-                                                       top = ($button.innerHeight() + keyPosition.top) + 'px';
-                                                       $dropdown.css({ position: 'absolute', left: left, top: top }).slideDown(300);
-                                               }
+                                       // position
+                                       this.dropdown.getButtonPosition();
 
-                                               this.core.callback('dropdownShown', { dropdown: $dropdown, key: key, button: $button });
+                                       // show
+                                       if (this.button.toolbar().hasClass('toolbar-fixed-box') && this.detect.isDesktop())
+                                       {
+                                               this.dropdown.showIsFixedToolbar();
+                                       }
+                                       else
+                                       {
+                                               this.dropdown.showIsUnFixedToolbar();
+                                       }
 
-                                               this.$dropdown = $dropdown;
+                                       // disable scroll whan dropdown scroll
+                                       if (this.detect.isDesktop())
+                                       {
+                                               this.dropdown.active.on('mouseover.redactor-dropdown', $.proxy(this.utils.disableBodyScroll, this));
+                                               this.dropdown.active.on('mouseout.redactor-dropdown', $.proxy(this.utils.enableBodyScroll, this));
                                        }
 
+                                       e.stopPropagation();
 
-                                       $(document).one('click.redactor-dropdown', $.proxy(this.dropdown.hide, this));
-                                       this.$editor.one('click.redactor-dropdown', $.proxy(this.dropdown.hide, this));
-                                       $(document).one('keyup.redactor-dropdown', $.proxy(this.dropdown.closeHandler, this));
+                               },
+                               showIsFixedToolbar: function()
+                               {
+                                       var top = this.dropdown.button.position().top + this.dropdown.button.innerHeight() + this.opts.toolbarFixedTopOffset;
 
-                                       // disable scroll whan dropdown scroll
-                                       $dropdown.on('mouseover.redactor-dropdown', $.proxy(this.utils.disableBodyScroll, this));
-                                       $dropdown.on('mouseout.redactor-dropdown', $.proxy(this.utils.enableBodyScroll, this));
+                                       var position = 'fixed';
+                                       if (this.opts.toolbarFixedTarget !== document)
+                                       {
+                                               top = (this.dropdown.button.innerHeight() + this.$toolbar.offset().top) + this.opts.toolbarFixedTopOffset;
+                                               position = 'absolute';
+                                       }
 
+                                       this.dropdown.active.css({
+
+                                               position: position,
+                                               left: this.dropdown.position.left + 'px',
+                                               top: top + 'px'
+
+                                       }).show();
+
+                                       // animate
+                                       this.dropdown.active.redactorAnimation('slideDown', { duration: 0.2 }, $.proxy(function()
+                                       {
+                                               this.dropdown.enableCallback();
+                                               this.dropdown.enableEvents();
+
+                                       }, this));
+                               },
+                               showIsUnFixedToolbar: function()
+                               {
+                                       this.dropdown.active.css({
+
+                                               position: 'absolute',
+                                               left: this.dropdown.position.left + 'px',
+                                               top: (this.dropdown.button.innerHeight() + this.dropdown.position.top) + 'px'
+
+                                       }).show();
+
+                                       // animate
+                                       this.dropdown.active.redactorAnimation(((this.opts.animation) ? 'slideDown' : 'show'), { duration: 0.2 }, $.proxy(function()
+                                       {
+                                               this.dropdown.enableCallback();
+                                               this.dropdown.enableEvents();
+
+                                       }, this));
+                               },
+                               enableEvents: function()
+                               {
+                                       $(document).on('mousedown.redactor-dropdown', $.proxy(this.dropdown.hideAll, this));
+                                       this.core.editor().on('touchstart.redactor-dropdown', $.proxy(this.dropdown.hideAll, this));
+                                       $(document).on('keyup.redactor-dropdown', $.proxy(this.dropdown.closeHandler, this));
+                               },
+                               enableCallback: function()
+                               {
+                                       this.core.callback('dropdownShown', { dropdown: this.dropdown.active, key: this.dropdown.key, button: this.dropdown.button });
+                               },
+                               getButtonPosition: function()
+                               {
+                                       this.dropdown.position = this.dropdown.button.offset();
+
+                                       // fix right placement
+                                       var dropdownWidth = this.dropdown.active.width();
+                                       if ((this.dropdown.position.left + dropdownWidth) > $(document).width())
+                                       {
+                                               this.dropdown.position.left = Math.max(0, this.dropdown.position.left - dropdownWidth + parseInt(this.dropdown.button.innerWidth()));
+                                       }
 
-                                       e.stopPropagation();
                                },
                                closeHandler: function(e)
                                {
                                                return;
                                        }
 
-                                       this.dropdown.hideAll();
+                                       this.dropdown.hideAll(e);
                                        this.core.editor().focus();
                                },
-                               hideAll: function()
+                               hideAll: function(e, key)
                                {
-                                       this.button.toolbar().find('a.dropact').removeClass('redactor-act').removeClass('dropact');
+                                       if (this.detect.isDesktop())
+                                       {
+                                               this.utils.enableBodyScroll();
+                                       }
 
-                                       this.utils.enableBodyScroll();
+                                       if (e !== false && $(e.target).closest('.redactor-dropdown').length !== 0)
+                                       {
+                                               return;
+                                       }
 
-                                       $('.redactor-dropdown-' + this.uuid).slideUp(200);
-                                       $('.redactor-dropdown-link-selected').removeClass('redactor-dropdown-link-selected');
+                                       var $buttons = (typeof key === 'undefined') ? this.button.toolbar().find('a.dropact') : this.button.toolbar().find('a.dropact').not('.re-' + key);
+                                       var $elements = (typeof key === 'undefined') ? $('.redactor-dropdown-' + this.uuid) : $('.redactor-dropdown-' + this.uuid).not('.redactor-dropdown-box-' + key);
 
 
-                                       if (this.$dropdown)
+                                       if ($elements.length !== 0)
                                        {
-                                               this.$dropdown.off('.redactor-dropdown');
-                                               this.core.callback('dropdownHide', this.$dropdown);
 
-                                               this.$dropdown = false;
+                                               $(document).off('.redactor-dropdown');
+                                               this.core.editor().off('.redactor-dropdown');
+
+
+                                               $.each($elements, $.proxy(function(i,s)
+                                               {
+                                                       var $el = $(s);
+
+                                                       this.core.callback('dropdownHide', $el);
+
+                                                       $el.hide();
+                                                       $el.off('mouseover mouseout').off('.redactor-dropdown');
+
+                                               }, this));
+
+                                               $buttons .removeClass('redactor-act dropact');
+
+                                               this.dropdown.button = false;
+                                               this.dropdown.key = false;
+                                               this.dropdown.active = false;
                                        }
+
+
                                },
-                               hide: function (e)
+                               hide: function ()
                                {
-                                       var $dropdown = $(e.target);
-
-                                       if (!$dropdown.hasClass('dropact') && !$dropdown.hasClass('redactor-dropdown-link-inactive'))
+                                       if (this.dropdown.active === false)
                                        {
-                                               $dropdown.removeClass('dropact');
-                                               $dropdown.off('mouseover mouseout');
+                                               return;
+                                       }
 
-                                               this.dropdown.hideAll();
+                                       if (this.detect.isDesktop())
+                                       {
+                                               this.utils.enableBodyScroll();
                                        }
+
+                                       this.dropdown.active.redactorAnimation(((this.opts.animation) ? 'slideUp' : 'hide'), { duration: 0.2 }, $.proxy(function()
+                                       {
+                                               $(document).off('.redactor-dropdown');
+                                               this.core.editor().off('.redactor-dropdown');
+
+                                               this.dropdown.hideOut();
+
+
+                                       }, this));
+                               },
+                               hideOut: function()
+                               {
+                                       this.core.callback('dropdownHide', this.dropdown.active);
+
+                                       this.dropdown.button.removeClass('redactor-act dropact');
+                                       this.dropdown.active.off('mouseover mouseout').off('.redactor-dropdown');
+                                       this.dropdown.button = false;
+                                       this.dropdown.key = false;
+                                       this.dropdown.active = false;
                                }
                        };
                },
                        return {
                                focused: false,
                                blured: true,
-                               stop: false,
-                               stopDetect: function()
+                               dropImage: false,
+                               stopChanges: false,
+                               stopDetectChanges: function()
                                {
-                                       this.events.stop = true;
+                                       this.events.stopChanges = true;
                                },
-                               startDetect: function()
+                               startDetectChanges: function()
                                {
                                        var self = this;
                                        setTimeout(function()
                                        {
-                                               self.events.stop = false;
+                                               self.events.stopChanges = false;
                                        }, 1);
                                },
-                               init: function()
+                               dragover: function(e)
                                {
-                                       // drop
-                                       this.core.editor().on('dragover.redactor dragenter.redactor', function(e)
-                                       {
-                                               e.preventDefault();
-                                               e.stopPropagation();
-                                   });
+                                       e.preventDefault();
+                                       e.stopPropagation();
 
-                                       this.core.editor().on('drop.redactor', $.proxy(function(e)
+                                       if (e.target.tagName === 'IMG')
                                        {
-                                               e = e.originalEvent || e;
-
-                                               if (this.opts.type === 'inline' || this.opts.type === 'pre')
-                                               {
-                                                       e.preventDefault();
-                                                       return false;
-                                               }
-
-                                               if (window.FormData === undefined || !e.dataTransfer)
-                                               {
-                                                       return true;
-                                               }
-
-                                               if (e.dataTransfer.files.length === 0)
-                                               {
-                                                       return this.events.drop(e);
-                                               }
-                                               else
-                                               {
-                                                       this.events.dropUpload(e);
-                                               }
+                                               $(e.target).addClass('redactor-image-dragover');
+                                       }
 
-                                               this.core.callback('drop', e);
+                               },
+                               dragleave: function(e)
+                               {
+                                       // remove image dragover
+                                       this.core.editor().find('img').removeClass('redactor-image-dragover');
+                               },
+                               drop: function(e)
+                               {
+                                       e = e.originalEvent || e;
 
-                                       }, this));
+                                       // remove image dragover
+                                       this.core.editor().find('img').removeClass('redactor-image-dragover');
 
-                                       // click
-                                       this.core.editor().on('click.redactor', $.proxy(function(e)
+                                       if (this.opts.type === 'inline' || this.opts.type === 'pre')
                                        {
-                                               var event = this.core.getEvent();
-                                               var type = (event === 'click' || event === 'arrow') ? false : 'click';
-
-                                               this.core.addEvent(type);
-                                               this.utils.disableSelectAll();
-                                               this.core.callback('click', e);
+                                               e.preventDefault();
+                                               return false;
+                                       }
 
-                                       }, this));
+                                       if (window.FormData === undefined || !e.dataTransfer)
+                                       {
+                                               return true;
+                                       }
 
-                                       // paste
-                                       this.core.editor().on('paste.redactor', $.proxy(this.paste.init, this));
+                                       if (e.dataTransfer.files.length === 0)
+                                       {
+                                               return this.events.onDrop(e);
+                                       }
+                                       else
+                                       {
+                                               this.events.onDropUpload(e);
+                                       }
 
-                                       // keydown
-                                       this.core.editor().on('keydown.redactor', $.proxy(this.keydown.init, this));
+                                       this.core.callback('drop', e);
 
-                                       // keyup
-                                       this.core.editor().on('keyup.redactor', $.proxy(this.keyup.init, this));
+                               },
+                               click: function(e)
+                               {
+                                       var event = this.core.getEvent();
+                                       var type = (event === 'click' || event === 'arrow') ? false : 'click';
 
-                                       // change
-                                       this.events.changeHandler = $.proxy(function()
+                                       this.core.addEvent(type);
+                                       this.utils.disableSelectAll();
+                                       this.core.callback('click', e);
+                               },
+                               focus: function(e)
+                               {
+                                       if (this.rtePaste)
                                        {
-                                               if (this.events.stop)
-                                               {
-                                                       return;
-                                               }
+                                               return;
+                                       }
 
-                                               this.code.sync();
+                                       if (this.events.isCallback('focus'))
+                                       {
+                                               this.core.callback('focus', e);
+                                       }
 
-                                               // autosave
-                                               if (this.autosave.is())
-                                               {
-                                                       clearTimeout(this.autosaveTimeout);
-                                                       this.autosaveTimeout = setTimeout($.proxy(this.autosave.send, this), 300);
-                                               }
+                                       this.events.focused = true;
+                                       this.events.blured = false;
 
-                                       }, this);
+                                       // tab
+                                       if (this.selection.current() === false)
+                                       {
+                                               var sel = this.selection.get();
+                                               var range = this.selection.range(sel);
 
-                                       // observer
-                                       var self = this;
-                                       this.observer = new MutationObserver(function(mutations) {
-                                         mutations.forEach(function(mutation) {
+                                               range.setStart(this.core.editor()[0], 0);
+                                               range.setEnd(this.core.editor()[0], 0);
+                                               this.selection.update(sel, range);
+                                       }
 
-                                                       self.image.detectRemoved(self, mutation);
-                                                       self.events.changeHandler();
+                               },
+                               blur: function(e)
+                               {
+                                       if (this.start || this.rtePaste)
+                                       {
+                                               return;
+                                       }
 
-                                         });
-                                       });
+                                       if ($(e.target).closest('#' + this.core.id() + ', .redactor-toolbar, .redactor-dropdown, #redactor-modal-box').size() !== 0)
+                                       {
+                                               return;
+                                       }
 
-                                       // pass in the target node, as well as the observer options
-                                       this.observer.observe(this.core.editor()[0], {
-                                                subtree: true,
-                                                attributes: true,
-                                                childList: true,
-                                                characterData: true,
-                                                characterDataOldValue: true
-                                       });
+                                       if (!this.events.blured && this.events.isCallback('blur'))
+                                       {
+                                               this.core.callback('blur', e);
+                                       }
 
-                                       // focus
-                                       this.core.editor().on('focus.redactor', $.proxy(function(e)
+                                       this.events.focused = false;
+                                       this.events.blured = true;
+                               },
+                               touchImageEditing: function()
+                               {
+                                       var scrollTimer = -1;
+                                       this.events.imageEditing = false;
+                                       $(window).on('touchmove.redactor.' + this.uuid, $.proxy(function()
                                        {
-                                               if (this.rtePaste)
+                                               this.events.imageEditing = true;
+                                               if (scrollTimer !== -1)
                                                {
-                                                       return;
+                                                       clearTimeout(scrollTimer);
                                                }
 
-                                               if (this.events.isCallback('focus'))
+                                               scrollTimer = setTimeout($.proxy(function()
                                                {
-                                                       this.core.callback('focus', e);
-                                               }
+                                                       this.events.imageEditing = false;
 
-                                               this.events.focused = true;
-                                               this.events.blured = false;
+                                               }, this), 500);
 
-                                               // tab
-                                               if (this.selection.current() === false)
-                                               {
-                                                       var sel = this.selection.get();
-                                                       var range = this.selection.range(sel);
+                                       }, this));
+                               },
+                               init: function()
+                               {
+                                       this.core.editor().on('dragover.redactor dragenter.redactor', $.proxy(this.events.dragover, this));
+                                       this.core.editor().on('dragleave.redactor', $.proxy(this.events.dragleave, this));
+                                       this.core.editor().on('drop.redactor', $.proxy(this.events.drop, this));
+                                       this.core.editor().on('click.redactor', $.proxy(this.events.click, this));
+                                       this.core.editor().on('paste.redactor', $.proxy(this.paste.init, this));
+                                       this.core.editor().on('keydown.redactor', $.proxy(this.keydown.init, this));
+                                       this.core.editor().on('keyup.redactor', $.proxy(this.keyup.init, this));
+                                       this.core.editor().on('focus.redactor', $.proxy(this.events.focus, this));
 
-                                                       range.setStart(this.core.editor()[0], 0);
-                                                       range.setEnd(this.core.editor()[0], 0);
-                                                       this.selection.update(sel, range);
-                                               }
+                                       $(document).on('mousedown.redactor-blur.' + this.uuid, $.proxy(this.events.blur, this));
 
+                                       this.events.touchImageEditing();
 
-                                       }, this));
+                                       this.events.createObserver();
+                                       this.events.setupObserver();
 
+                               },
+                               createObserver: function()
+                               {
+                                       var self = this;
+                                       this.events.observer = new MutationObserver(function(mutations)
+                                       {
+                                               mutations.forEach($.proxy(self.events.iterateObserver, self));
+                                       });
 
-                                       // blur
-                                       $(document).on('mousedown.redactor-blur.' + this.uuid, $.proxy(function(e)
+                               },
+                               iterateObserver: function(mutation)
+                               {
+                                       var stop = false;
+
+                                       // observe
+                                       this.observe.load();
+
+                                       // target
+                                       if ((this.opts.type === 'textarea' || this.opts.type === 'div') && mutation.target === this.core.editor()[0])
                                        {
-                                               if (this.start || this.rtePaste)
-                                               {
-                                                       return;
-                                               }
+                                               stop = true;
+                                       }
 
-                                               if ($(e.target).closest('#' + this.core.id() + ', .redactor-toolbar, .redactor-dropdown, #redactor-modal-box, .redactor-data-cmd').size() !== 0)
-                                               {
-                                                       return;
-                                               }
+                                       if (!stop)
+                                       {
+                                               this.events.changeHandler();
+                                       }
+                               },
+                               setupObserver: function()
+                               {
+                                       this.events.observer.observe(this.core.editor()[0], {
+                                                attributes: true,
+                                                subtree: true,
+                                                childList: true,
+                                                characterData: true,
+                                                characterDataOldValue: true
+                                       });
+                               },
+                               changeHandler: function()
+                               {
+                                       if (this.events.stopChanges)
+                                       {
+                                               return;
+                                       }
 
-                                               this.utils.disableSelectAll();
-                                               if (!this.events.blured && this.events.isCallback('blur'))
-                                               {
-                                                       this.core.callback('blur', e);
-                                               }
+                                       this.code.sync();
 
-                                               this.events.focused = false;
-                                               this.events.blured = true;
+                                       // autosave
+                                       if (this.autosave.is())
+                                       {
+                                               clearTimeout(this.autosaveTimeout);
+                                               this.autosaveTimeout = setTimeout($.proxy(this.autosave.send, this), 300);
+                                       }
 
-                                       }, this));
                                },
-                               dropUpload: function(e)
+                               onDropUpload: function(e)
                                {
                                        e.preventDefault();
                                        e.stopPropagation();
 
-
-                                       if (!this.opts.dragImageUpload && !this.opts.dragFileUpload)
+                                       if ((!this.opts.dragImageUpload && !this.opts.dragFileUpload) || (this.opts.imageUpload === null && this.opts.fileUpload === null))
                                        {
                                                return;
                                        }
 
+                                       if (e.target.tagName === 'IMG')
+                                       {
+                                               this.events.dropImage = e.target;
+                                       }
+
                                        var files = e.dataTransfer.files;
                                        this.upload.directUpload(files[0], e);
                                },
-                               drop: function(e)
+                               onDrop: function(e)
                                {
                                        this.core.callback('drop', e);
                                },
                                isCallback: function(name)
                                {
                                        return (typeof this.opts.callbacks[name] !== 'undefined' && $.isFunction(this.opts.callbacks[name]));
+                               },
+
+                               // #backward
+                               stopDetect: function()
+                               {
+                                       this.events.stopDetectChanges();
+                               },
+                               startDetect: function()
+                               {
+                                       this.events.startDetectChanges();
                                }
+
                        };
                },
 
                file: function()
                {
                        return {
+                               is: function()
+                               {
+                                       return !(!this.opts.fileUpload || !this.opts.fileUpload && !this.opts.s3);
+                               },
                                show: function()
                                {
                                        // build modal
                                        // build upload
                                        this.upload.init('#redactor-modal-file-upload', this.opts.fileUpload, this.file.insert);
 
-                                       // get text
-                                       var text = this.selection.get().toString();
-
-                                       $('#redactor-filename').val(text);
+                                       // set selected text
+                                       $('#redactor-filename').val(this.selection.get().toString());
 
+                                       // show
                                        this.modal.show();
                                },
                                insert: function(json, direct, e)
                                                return;
                                        }
 
-                                       this.placeholder.remove();
+                                       this.file.release(e, direct);
 
-                                       var $link;
-                                       var text;
-                                       var $el = (this.utils.isElement(json)) ? $(json) : false;
+                                       // prepare
+                                       this.buffer.set();
+                                       this.air.collapsed();
 
-                                       // direct upload
-                                       if (direct)
-                                       {
-                                               text = json.filename;
+                                       // get
+                                       var text = this.file.text(json);
+                                       var $link = $('<a />').attr('href', json.url).text(text);
+                                       var id = (typeof json.id === 'undefined') ? '' : json.id;
+                                       var type = (typeof json.s3 === 'undefined') ? 'file' : 's3';
 
-                                               this.selection.removeMarkers();
-                                               this.insert.nodeToCaretPositionFromPoint(e, this.selection.marker());
-                                               this.selection.restore();
-                                       }
-                                       else
-                                       {
-                                               text = (typeof text === 'undefined' || text === '') ? json.filename : $('#redactor-filename').val();
-                                               this.modal.close();
-                                       }
+                                       // set id
+                                       $link.attr('data-' + type, id);
 
-                                       // buffer
-                                       this.buffer.set();
+                                       // insert
+                                       $link = $(this.insert.node($link));
 
-                                       this.air.collapsed();
+                                       // focus
+                                       this.caret.after($link);
 
-                                       if ($el !== false)
+                                       // callback
+                                       this.storage.add({ type: type, node: $link[0], url: $link[0].href, id: id });
+
+                                       if (direct !== null)
+                                       {
+                                               this.core.callback('fileUpload', $link, json);
+                                       }
+
+                               },
+                               release: function(e, direct)
+                               {
+                                       if (direct)
                                        {
-                                               $link = this.insert.node($el);
+                                               // drag and drop upload
+                                               this.marker.remove();
+                                               this.insert.nodeToPoint(e, this.marker.get());
+                                               this.selection.restore();
                                        }
                                        else
                                        {
-                                               $link = $('<a href="' + json.filelink + '">' + text + '</a>');
-                                               $link = this.insert.node($link);
+                                               // upload from modal
+                                               this.modal.close();
                                        }
+                               },
+                               text: function(json)
+                               {
+                                       var text = $('#redactor-filename').val();
 
-                                       this.caret.after($link);
-                                       this.core.callback('fileUpload', $link, json);
-
+                                       return (typeof text === 'undefined' || text === '') ? json.name : text;
                                }
                        };
                },
                                                return;
                                        }
 
-                                       var first = this.core.editor().children().first();
-
-                                       if (first.length === 0 && (first[0].length === 0 || first[0].tagName === 'BR' || first[0].nodeType === 3))
+                                       var $first = this.focus.first();
+                                       if ($first !== false)
                                        {
-                                               return;
+                                               this.caret.start($first);
                                        }
-
-                                       if (first[0].tagName === 'UL' || first[0].tagName === 'OL')
-                                       {
-                                               first = first.find('li').first();
-                                       }
-
-                                       this.caret.start(first);
                                },
                                end: function()
                                {
                                        this.core.editor().focus();
 
                                        var last = (this.opts.inline) ? this.core.editor() : this.focus.last();
-                                       var sel = this.selection.get();
-                                       var range = this.selection.range(sel);
-
                                        if (last.length === 0)
                                        {
                                                return;
                                        }
 
-                                       var lastNode = last[0].lastChild;
-                                       if (!this.browser.webkit() && typeof lastNode !== 'undefined' && this.utils.isInlineTag(lastNode.tagName))
+                                       // get inline last node
+                                       var lastNode = this.focus.lastChild(last);
+                                       if (!this.detect.isWebkit() && lastNode !== false)
                                        {
                                                this.caret.end(lastNode);
                                        }
                                        else
                                        {
-                                               range.selectNodeContents(last[0]);
-                                               range.collapse(false);
+                                               var sel = this.selection.get();
+                                               var range = this.selection.range(sel);
 
-                                               this.selection.update(sel, range);
+                                               if (range !== null)
+                                               {
+                                                       range.selectNodeContents(last[0]);
+                                                       range.collapse(false);
+
+                                                       this.selection.update(sel, range);
+                                               }
+                                               else
+                                               {
+                                                       this.caret.end(last);
+                                               }
+                                       }
+
+                               },
+                               first: function()
+                               {
+                                       var $first = this.core.editor().children().first();
+                                       if ($first.length === 0 && ($first[0].length === 0 || $first[0].tagName === 'BR' || $first[0].tagName === 'HR' || $first[0].nodeType === 3))
+                                       {
+                                               return false;
                                        }
+
+                                       if ($first[0].tagName === 'UL' || $first[0].tagName === 'OL')
+                                       {
+                                               return $first.find('li').first();
+                                       }
+
+                                       return $first;
+
                                },
                                last: function()
                                {
                                        return this.core.editor().children().last();
                                },
+                               lastChild: function(last)
+                               {
+                                       var lastNode = last[0].lastChild;
+
+                                       return (lastNode !== null && this.utils.isInlineTag(lastNode.tagName)) ? lastNode : false;
+                               },
                                is: function()
                                {
-                                       return this.core.editor()[0] === document.activeElement;
+                                       return (this.core.editor()[0] === document.activeElement);
                                }
                        };
                },
                image: function()
                {
                        return {
+                               is: function()
+                               {
+                                       return !(!this.opts.imageUpload || !this.opts.imageUpload && !this.opts.s3);
+                               },
                                show: function()
                                {
                                        // build modal
                                },
                                insert: function(json, direct, e)
                                {
+                                       var $img;
+
+
                                        // error callback
                                        if (typeof json.error !== 'undefined')
                                        {
                                                this.modal.close();
-                                               this.core.callback('imageUploadError', json);
+                                               this.events.dropImage = false;
+                                               this.core.callback('imageUploadError', json, e);
                                                return;
                                        }
 
-                                       this.placeholder.remove();
+                                       // change image
+                                       if (this.events.dropImage !== false)
+                                       {
+                                               $img = $(this.events.dropImage);
 
-                                       var $figure = $('<figure>');
+                                               this.core.callback('imageDelete', $img[0].src, $img);
 
-                                       var $img;
-                                       if (this.utils.isElement(json))
-                                       {
-                                               $img = $(json);
-                                       }
-                                       else
-                                       {
-                                               $img = $('<img>');
-                                               $img.attr('src', json.filelink);
+                                               $img.attr('src', json.url);
+
+                                               this.events.dropImage = false;
+                                               this.core.callback('imageUpload', $img, json);
+                                               return;
                                        }
 
+                                       this.placeholder.hide();
+                                       var $figure = $('<figure>');
+
+                                       $img = $('<img>');
+                                       $img.attr('src', json.url);
+
+                                       // set id
+                                       var id = (typeof json.id === 'undefined') ? '' : json.id;
+                                       var type = (typeof json.s3 === 'undefined') ? 'image' : 's3';
+                                       $img.attr('data-' + type, id);
+
                                        $figure.append($img);
 
                                        var pre = this.utils.isTag(this.selection.current(), 'pre');
 
                                        if (direct)
                                        {
-
                                                this.air.collapsed();
-                                               this.selection.removeMarkers();
-                                               var node = this.insert.nodeToCaretPositionFromPoint(e, this.selection.marker());
+                                               this.marker.remove();
+
+                                               var node = this.insert.nodeToPoint(e, this.marker.get());
                                                var $next = $(node).next();
 
                                                this.selection.restore();
                                                this.caret.after($figure);
                                        }
 
-                                       this.observe.load();
-                                       this.core.callback('imageUpload', $img, json);
+                                       this.events.dropImage = false;
+
+                                       this.storage.add({ type: type, node: $img[0], url: $img[0].src, id: id });
+
+                                       if (direct !== null)
+                                       {
+                                               this.core.callback('imageUpload', $img, json);
+                                       }
                                },
                                setEditable: function($image)
                                {
                                                e.preventDefault();
                                        });
 
-                                       $image.off('click.redactor touchstart.redactor').on('click.redactor touchstart.redactor', $.proxy(function()
+                                       $image.off('click.redactor touchstart.redactor').on('click.redactor touchstart.redactor', $.proxy(function(e)
                                        {
-                                               this.image.showEdit($image);
+                                               setTimeout($.proxy(function()
+                                               {
+                                                       this.image.showEdit($image);
+
+                                               }, this), 200);
 
                                        }, this));
                                },
                                showEdit: function($image)
                                {
+                                       if (this.events.imageEditing)
+                                       {
+                                               return;
+                                       }
+
                                        this.observe.image = $image;
 
                                        var $link = $image.closest('a', this.$editor[0]);
 
                                        this.modal.load('image-edit', this.lang.get('edit'), 705);
 
-                                       this.modal.createCancelButton();
-                                       this.image.buttonDelete = this.modal.createDeleteButton(this.lang.get('delete'));
-                                       this.image.buttonSave = this.modal.createActionButton(this.lang.get('save'));
+                                       this.image.buttonDelete = this.modal.getDeleteButton().text(this.lang.get('delete'));
+                                       this.image.buttonSave = this.modal.getActionButton().text(this.lang.get('save'));
 
                                        this.image.buttonDelete.on('click', $.proxy(this.image.remove, this));
                                        this.image.buttonSave.on('click', $.proxy(this.image.update, this));
 
+                                       if (this.opts.imageCaption === false)
+                                       {
+                                               $('#redactor-image-caption').val('').hide();
+                                       }
+                                       else
+                                       {
+                                               var $next = $image.next();
+                                               if ($next.length !== 0 && $next[0].tagName === 'FIGCAPTION')
+                                               {
+                                                       $('#redactor-image-caption').val($next.text()).show();
+                                               }
+                                       }
 
+                                       $('#redactor-image-preview').html($('<img src="' + $image.attr('src') + '" style="max-width: 100%;">'));
                                        $('#redactor-image-title').val($image.attr('alt'));
 
                                        var $redactorImageLink = $('#redactor-image-link');
                                        this.modal.show();
 
                                        // focus
-                                       $('#redactor-image-title').focus();
+                                       if (this.detect.isDesktop())
+                                       {
+                                               $('#redactor-image-title').focus();
+                                       }
 
                                },
                                update: function()
 
                                        }
 
+
+                                       var caption = $('#redactor-image-caption').val();
+
+                                       var $figcaption = $image.next();
+                                       if ($figcaption.length === 0 || $figcaption[0].tagName !== 'FIGCAPTION')
+                                       {
+                                               $figcaption = false;
+                                       }
+
+                                       if (caption !== '')
+                                       {
+                                               if ($figcaption === false)
+                                               {
+                                                       $figcaption = $('<figcaption />').text(caption);
+                                                       $image.after($figcaption);
+                                               }
+                                               else
+                                               {
+                                                       $figcaption.text(caption);
+                                               }
+                                       }
+                                       else if ($figcaption !== false)
+                                       {
+                                               $figcaption.remove();
+                                       }
+
+
                                        this.modal.close();
 
                                        // buffer
                                        this.buffer.set();
 
-                                       this.observe.images();
-
                                },
-                               detectRemoved: function(self, mutation)
+                               remove: function(e, $image, index)
                                {
-                                       if (self.events.stop)
+                                       $image = (typeof $image === 'undefined') ? $(this.observe.image) : $image;
+
+                                       // delete from modal
+                                       if (typeof e !== 'boolean')
                                        {
-                                               return;
+                                               this.buffer.set();
                                        }
 
-                                       var len = mutation.removedNodes.length;
-                                       for (var i = 0; i < len; i++)
-                                       {
-                                               var node = mutation.removedNodes[i];
-                                               if (node.nodeType === 1)
-                                               {
-                                                       var children = $(node).children('img');
-                                                       if (node.tagName !== 'IMG' && children.length !== 0)
-                                                       {
-                                                               var lenChildren = children.length;
-                                                               for (var z = 0; z < lenChildren; z++)
-                                                               {
-                                                                       self.image.remove(false, $(children[z]));
-                                                               }
-                                                       }
-                                                       else if (node.tagName === 'IMG' && mutation.nextSibling === null)
-                                                       {
-                                                               self.image.remove(true, $(node));
-                                                       }
-                                                       else if (node.tagName === 'IMG' && (typeof mutation.nextSibling !== null && mutation.nextSibling.id !== 'redactor-image-box'))
-                                                       {
-                                                               self.image.remove(true, $(node));
-                                                       }
-                                               }
-                                       }
-                               },
-                               remove: function(e, $image)
-                               {
-                                       $image = (typeof $image === 'undefined') ? $(this.observe.image) : $image;
+                                       this.events.stopDetectChanges();
 
                                        var $link = $image.closest('a', this.core.editor()[0]);
                                        var $figure = $image.closest('figure, p', this.core.editor()[0]);
 
                                        if (typeof e !== 'boolean')
                                        {
+
                                                this.modal.close();
                                        }
 
-                                       // delete callback
-                                       this.core.callback('imageDelete', $image[0].src, $image);
                                        this.utils.restoreScroll();
+                                       this.observe.image = false;
+                                       this.events.startDetectChanges();
+                                       this.placeholder.enable();
+                                       this.code.sync();
+
                                }
                        };
                },
                                                return;
                                        }
 
-                                       var $li = $(this.selection.current()).closest('li');
+                                       var $current = $(this.selection.current()).closest('li');
+                                       var $list = $current.closest('ul, ol');
+
+                                       var $li = $current.closest('li');
                                        var $prev = $li.prev();
                                        if ($prev.length === 0 || $prev[0].tagName !== 'LI')
                                        {
 
                                        this.buffer.set();
 
-                                       document.execCommand('indent');
 
-                                       // normalize
-                                       this.selection.save();
-                                       this.indent.normalize();
-                                       this.selection.restore();
+                                       if (this.utils.isCollapsed())
+                                       {
+                                               var listTag = $list[0].tagName;
+                                               var $newList = $('<' + listTag + ' />');
+
+                                               this.selection.save();
+
+                                               $newList.append($current);
+                                               $prev.append($newList);
+
+                                               this.selection.restore();
+                                       }
+                                       else
+                                       {
+                                               document.execCommand('indent');
+
+                                               // normalize
+                                               this.selection.save();
+                                               this.indent.removeEmpty();
+                                               this.indent.normalize();
+                                               this.selection.restore();
+                                       }
                                },
                                decrease: function()
                                {
                                                return;
                                        }
 
+                                       var $current = $(this.selection.current()).closest('li');
+                                       var $list = $current.closest('ul, ol');
+
                                        this.buffer.set();
 
                                        document.execCommand('outdent');
 
+
                                        var $item = $(this.selection.current()).closest('li', this.core.editor()[0]);
 
                                        if (this.utils.isCollapsed())
                                        {
-                                               var $li = $(this.selection.current()).closest('li');
-                                               if ($li.length !== 0 && $li.parent().length !== 0 && $li.parent()[0].tagName === 'LI')
-                                               {
-                                                       this.selection.save();
-                                                       $li.parent().after($li);
-                                                       this.selection.restore();
-                                               }
+                                               this.indent.repositionItem($item);
                                        }
 
+
                                        if ($item.length === 0)
                                        {
                                                document.execCommand('formatblock', false, 'p');
+                                               $item = $(this.selection.current());
+                                               var $next = $item.next();
+                                               if ($next.length !== 0 && $next[0].tagName === 'BR')
+                                               {
+                                                       $next.remove();
+                                               }
+                                       }
+
+                                       // normalize
+                                       this.selection.save();
+                                       this.indent.removeEmpty();
+                                       this.indent.normalize();
+                                       this.selection.restore();
+
+                               },
+                               repositionItem: function($item)
+                               {
+                                       var $prev = $item.prev();
+                                       if ($prev.length !== 0 && $prev[0].tagName !== 'LI')
+                                       {
+                                               this.selection.save();
+                                               var $li = $item.parents('li', this.core.editor()[0]);
+                                               $li.after($item);
+                                               this.selection.restore();
                                        }
                                },
                                normalize: function()
                                {
-                                       this.core.editor().find('li').each(function(i,s)
+                                       this.core.editor().find('li').each($.proxy(function(i,s)
                                        {
-                                               var $next = $(s).next();
+                                               var $el = $(s);
+
+                                               // remove style
+                                               $el.find(this.opts.inlineTags.join(',')).each(function()
+                                               {
+                                                       $(this).removeAttr('style');
+                                               });
+
+                                               var $parent = $el.parent();
+                                               if ($parent.length !== 0 && $parent[0].tagName === 'LI')
+                                               {
+                                                       $parent.after($el);
+                                                       return;
+                                               }
+
+                                               var $next = $el.next();
                                                if ($next.length !== 0 && ($next[0].tagName === 'UL' || $next[0].tagName === 'OL'))
                                                {
-                                                       $(s).append($next);
+                                                       $el.append($next);
                                                }
 
-                                       });
+                                       }, this));
+
+                               },
+                               removeEmpty: function($list)
+                               {
+                                       var $lists = this.core.editor().find('ul, ol');
+                                       var $items = this.core.editor().find('li');
+
+                                       $items.each($.proxy(function(i, s)
+                                       {
+                                               this.indent.removeItemEmpty(s);
+
+                                       }, this));
+
+                                       $lists.each($.proxy(function(i, s)
+                                       {
+                                               this.indent.removeItemEmpty(s);
+
+                                       }, this));
+
+                                       $items.each($.proxy(function(i, s)
+                                       {
+                                               this.indent.removeItemEmpty(s);
+
+                                       }, this));
+                               },
+                               removeItemEmpty: function(s)
+                               {
+                                       var html = s.innerHTML.replace(/[\t\s\n]/g, '');
+                                       html = html.replace(/<span><\/span>/g, '');
+
+                                       if (html === '')
+                                       {
+                                               $(s).remove();
+                                       }
                                }
                        };
                },
                                                return;
                                        }
 
-                                       // Stop formatting pre and headers
-                                       if (this.utils.isCurrentOrParent(['PRE', 'TR']) || this.utils.isCurrentOrParentHeader())
+                                       // Stop formatting pre
+                                       if (this.utils.isCurrentOrParent(['PRE']))
                                        {
                                                return;
                                        }
                                                }
                                        }
 
-                                       this.placeholder.remove();
+                                       this.placeholder.hide();
                                        this.buffer.set();
 
                                        return (this.utils.isCollapsed()) ? this.inline.formatCollapsed(tag, attr, value, type) : this.inline.formatUncollapsed(tag, attr, value, type);
                                                });
                                        }
 
-                                       // remove format in pre & headers
-                                       this.core.editor().find('pre, h1, h2, h3, h4, h5, h6').children(tag).replaceWith(function()
+                                       // remove format in pre
+                                       this.core.editor().find('pre').children(tag).replaceWith(function()
                                        {
                                                return $(this).contents();
                                        });
                        return {
                                set: function(html)
                                {
-                                       this.code.set(html);
-                               },
-                               text: function(text)
-                               {
-                                       this.placeholder.remove();
-
-                                       text = text.toString();
-                                       text = $.trim(text);
-
-                                       var tmp = document.createElement('div');
-                                       tmp.innerHTML = text;
-                                       text = tmp.textContent || tmp.innerText;
-
-                                       text = text.replace(/\n/g, ' ');
-
-                                       // select all
-                                       if (this.utils.isSelectAll())
-                                       {
-                                               var $node = $(this.opts.emptyHtml);
-                                               this.core.editor().html('').append($node);
-                                               $node.html(text);
-                                               this.caret.end($node);
-                                       }
-                                       else
-                                       {
-                                               // insert
-                                               var sel = this.selection.get();
-                                               var node = document.createTextNode(text);
-
-                                               if (sel.getRangeAt && sel.rangeCount)
-                                               {
-                                                       var range = sel.getRangeAt(0);
-                                                       range.deleteContents();
-                                                       range.insertNode(node);
-                                                       range.setStartAfter(node);
-                                                       range.collapse(true);
-
-                                                       this.selection.update(sel, range);
-                                               }
-                                       }
+                                       this.placeholder.hide();
 
-                                       this.utils.disableSelectAll();
-                                       this.linkify.format();
-                               },
-                               raw: function(html)
-                               {
-                                       this.insert.gap = true;
-                                       this.insert.html(html, false);
+                                       this.code.set(html);
+                                       this.focus.end();
 
+                                       this.placeholder.enable();
                                },
-                               html: function(html, clean)
+                               html: function(html, data)
                                {
+                                       this.placeholder.hide();
                                        this.core.editor().focus();
 
                                        var block = this.selection.block();
                                        var inline = this.selection.inline();
 
                                        // clean
-                                       if (clean !== false)
+                                       if (typeof data === 'undefined')
                                        {
-                                               html = this.clean.onPaste(html, true);
+                                               data = this.clean.getCurrentType(html, true);
+                                               html = this.clean.onPaste(html, data, true);
                                        }
 
                                        // delete selected content
 
                                        this.selection.update(sel, range);
 
-                                       // save selection
-                                       this.selection.save();
-
-                                       // inserted marker
-                                       var node = document.createElement('span');
-                                       node.id = 'redactor-insert-marker';
-                                       node = this.insert.node(node);
+                                       // insert list in list
+                                       if (data.lists)
+                                       {
+                                               var $list = $($.parseHTML(html));
+                                               if ($list.length !== 0 && ($list[0].tagName === 'UL' || $list[0].tagName === 'OL'))
+                                               {
+                                                       this.insert.appendLists(block, $list);
+                                                       return;
+                                               }
+                                       }
 
-                                       if (this.insert.gap && block)
+                                       if (data.blocks && block)
                                        {
                                                if (this.utils.isSelectAll())
                                                {
                                                }
                                                else
                                                {
-                                                       this.events.stopDetect();
-
-                                                       var tag = block.tagName.toLowerCase();
-                                                       if (tag !== 'p' || tag !== 'div')
+                                                       var breaked = this.utils.breakBlockTag();
+                                                       if (breaked === false)
                                                        {
-                                                               tag = 'p';
+                                                               this.insert.placeHtml(html);
                                                        }
-
-                                                       var inlineStart = '', inlineEnd = '';
-                                                       if (inline)
+                                                       else
                                                        {
-                                                               inlineStart = '</' + inline.tagName.toLowerCase() + '>';
-                                                               inlineEnd = '<' + inline.tagName.toLowerCase() + '>';
+                                                               html = $(html).append(this.marker.get());
+
+                                                               if (breaked.type === 'start')
+                                                               {
+                                                                       breaked.$block.before(html);
+                                                               }
+                                                               else
+                                                               {
+                                                                       breaked.$block.after(html);
+                                                               }
+
+                                                               this.selection.restore();
+                                                               this.core.editor().find('p').each(function()
+                                                               {
+                                                                       if ($.trim(this.innerHTML) === '')
+                                                                       {
+                                                                               $(this).remove();
+                                                                       }
+                                                               });
                                                        }
+                                               }
+                                       }
+                                       else
+                                       {
+                                               if (inline)
+                                               {
+                                                       // remove same tag inside
+                                                       var $div = $("<div/>").html($.parseHTML(html, document, true));
+                                                       $div.find(inline.tagName.toLowerCase()).each(function()
+                                                       {
+                                                               $(this).contents().unwrap();
+                                                       });
 
-                                                       var code = this.core.editor().html();
+                                                       html = $div.html();
+                                               }
+
+                                               if (this.utils.isSelectAll())
+                                               {
+                                                       var $node = $(this.opts.emptyHtml);
+                                                       this.core.editor().html('').append($node);
+                                                       $node.html(html);
+                                                       this.caret.end($node);
+                                               }
+                                               else
+                                               {
+                                                       this.insert.placeHtml(html);
+                                               }
+                                       }
+
+
+                                       this.utils.disableSelectAll();
+                                       this.linkify.format();
+
+                                       if (data.pre)
+                                       {
+                                               this.clean.cleanPre();
+                                       }
+
+                               },
+                               text: function(text)
+                               {
+                                       text = text.toString();
+                                       text = $.trim(text);
+
+                                       var tmp = document.createElement('div');
+                                       tmp.innerHTML = text;
+                                       text = tmp.textContent || tmp.innerText;
 
-                                                       code = code.replace(/<span(.*?[^>])id="redactor-insert-marker">​<\/span>/i, inlineStart + '</' + tag + '>' + html + '<' + tag + '>' + inlineEnd);
-                                                       this.core.editor().html(code);
+                                       if (typeof text === 'undefined')
+                                       {
+                                               return;
+                                       }
 
-                                                       this.selection.restore();
+                                       this.placeholder.hide();
 
-                                                       var current = this.selection.current();
-                                                       if (current && current.tagName === 'P' && current.innerHTML === '')
-                                                       {
-                                                               this.caret.before(current);
-                                                       }
+                                       // blocks
+                                       var blocks = this.selection.blocks();
 
-                                                       this.core.editor().find('p:empty').remove();
-                                                       this.events.startDetect();
-                                               }
+                                       // nl to spaces
+                                       text = text.replace(/\n/g, ' ');
 
+                                       // select all
+                                       if (this.utils.isSelectAll())
+                                       {
+                                               var $node = $(this.opts.emptyHtml);
+                                               this.core.editor().html('').append($node);
+                                               $node.html(text);
+                                               this.caret.end($node);
                                        }
                                        else
                                        {
-                                               if (inline)
-                                               {
-                                                       // remove same tag inside
-                                                       var $div = $("<div/>").html($.parseHTML(html, document, true));
+                                               // insert
+                                               var sel = this.selection.get();
+                                               var node = document.createTextNode(text);
 
-                                                       $div.find(inline.tagName.toLowerCase()).each(function()
-                                                       {
-                                                               $(this).contents().unwrap();
-                                                       });
+                                               if (sel.getRangeAt && sel.rangeCount)
+                                               {
+                                                       var range = sel.getRangeAt(0);
+                                                       range.deleteContents();
+                                                       range.insertNode(node);
+                                                       range.setStartAfter(node);
+                                                       range.collapse(true);
 
-                                                       html = $div.html();
+                                                       this.selection.update(sel, range);
                                                }
 
-                                               if (this.utils.isSelectAll())
-                                               {
-                                                       var $node = $(this.opts.emptyHtml);
-                                                       this.core.editor().html('').append($node);
-                                                       $node.html(html);
-                                                       this.caret.end($node);
-                                               }
-                                               else
+                                               // wrap node if selected two or more block tags
+                                               if (blocks.length > 1)
                                                {
-                                                       $(node).before(html);
-                                                       this.selection.restore();
+                                                       $(node).wrap('<p>');
                                                        this.caret.after(node);
-                                                       $(node).remove();
                                                }
-
-
                                        }
 
-
                                        this.utils.disableSelectAll();
                                        this.linkify.format();
+                                       this.clean.normalizeCurrentHeading();
+
+                               },
+                               raw: function(html)
+                               {
+                                       this.placeholder.hide();
+
+                                       var sel = this.selection.get();
+
+                                       var range = this.selection.range(sel);
+                                       range.deleteContents();
+
+                           var el = document.createElement("div");
+                           el.innerHTML = html;
+
+                           var frag = document.createDocumentFragment(), node, lastNode;
+                           while ((node = el.firstChild))
+                           {
+                               lastNode = frag.appendChild(node);
+                           }
 
+                           range.insertNode(frag);
+
+                                       if (lastNode)
+                                       {
+                                               range = range.cloneRange();
+                                               range.setStartAfter(lastNode);
+                                               range.collapse(true);
+                                               sel.removeAllRanges();
+                                               sel.addRange(range);
+                                       }
                                },
                                node: function(node, deleteContent)
                                {
+                                       this.placeholder.hide();
+
                                        if (typeof this.start !== 'undefined')
                                        {
                                                this.core.editor().focus();
                                        var block = this.selection.block();
                                        var gap = this.utils.isBlockTag(node.tagName);
 
-                                       if (gap && block)
+                                       if (this.utils.isSelectAll())
                                        {
-                                               this.events.stopDetect();
-
-                                               var inline = this.selection.inline();
-                                               var tag = block.tagName.toLowerCase();
-
-                                               if (tag !== 'p' || tag !== 'div')
+                                               if (gap)
                                                {
-                                                       tag = 'p';
+                                                       this.core.editor().html(node);
+                                               }
+                                               else
+                                               {
+                                                       this.core.editor().html($('<p>').html(node));
                                                }
 
-                                               var inlineStart = '', inlineEnd = '';
-                                               if (inline)
+                                               this.code.sync();
+                                       }
+                                       else if (gap && block)
+                                       {
+                                               var breaked = this.utils.breakBlockTag();
+                                               if (breaked === false)
                                                {
-                                                       inlineStart = '</' + inline.tagName.toLowerCase() + '>';
-                                                       inlineEnd = '<' + inline.tagName.toLowerCase() + '>';
+                                                       this.insert.placeNode(node, deleteContent);
                                                }
+                                               else
+                                               {
+                                                       if (breaked.type === 'start')
+                                                       {
+                                                               breaked.$block.before(node);
+                                                       }
+                                                       else
+                                                       {
+                                                               breaked.$block.after(node);
+                                                       }
 
-                                               // inserted marker
-                                               var marker = document.createElement('span');
-                                               marker.id = 'redactor-insert-marker';
+                                                       this.core.editor().find('p:empty').remove();
+                                               }
+                                       }
+                                       else
+                                       {
+                                               this.insert.placeNode(node, deleteContent);
+                                       }
 
-                                               this.insert.node(marker);
+                                       this.utils.disableSelectAll();
+                                       this.caret.end(node);
 
-                                               var code = this.core.editor().html();
-                                               code = code.replace(/<span(.*?[^>])id="redactor-insert-marker">​<\/span>/i, inlineStart + '</' + tag + '><span id="redactor-insert-marker">​</span><' + tag + '>' + inlineEnd);
-                                               this.core.editor().html(code);
+                                       return node;
 
-                                               var $marker = this.core.editor().find('#redactor-insert-marker');
+                               },
+                               appendLists: function(block, $list)
+                               {
+                                       var $block = $(block);
+                                       var last;
+                                       var isEmpty = this.utils.isEmpty(block.innerHTML);
 
-                                               $marker.replaceWith(node);
+                                       if (isEmpty || this.utils.isEndOfElement(block))
+                                       {
+                                               last = $block;
+                                               $list.find('li').each(function()
+                                               {
+                                                       last.after(this);
+                                                       last = $(this);
+                                               });
 
-                                               var current = this.selection.current();
-                                               if (current && current.tagName === 'P' && current.innerHTML === '')
+                                               if (isEmpty)
                                                {
-                                                       this.caret.before(current);
+                                                       $block.remove();
                                                }
-
-                                               this.core.editor().find('p:empty').remove();
-                                               this.events.startDetect();
+                                       }
+                                       else if (this.utils.isStartOfElement(block))
+                                       {
+                                               $list.find('li').each(function()
+                                               {
+                                                       $block.before(this);
+                                                       last = $(this);
+                                               });
                                        }
                                        else
                                        {
-                                               var sel = this.selection.get();
-                                               var range = this.selection.range(sel);
+                                       var endOfNode = this.selection.extractEndOfNode(block);
 
-                                               if (deleteContent !== false)
-                                               {
-                                                       range.deleteContents();
-                                               }
+                                       $block.after($('<li>').append(endOfNode));
+                                       $block.append($list);
+                                               last = $list;
+                                       }
 
-                                               range.insertNode(node);
-                                               range.collapse(false);
+                                       this.marker.remove();
 
-                                               this.selection.update(sel, range);
+                                       if (last)
+                                       {
+                                               this.caret.end(last);
                                        }
 
-                                       this.caret.end(node);
+                                       this.linkify.format();
+                               },
+                               placeHtml: function(html)
+                               {
+                                       var marker = document.createElement('span');
+                                       marker.id = 'redactor-insert-marker';
+                                       marker = this.insert.node(marker);
 
-                                       return node;
+                                       $(marker).before(html);
+                                       this.selection.restore();
+                                       this.caret.after(marker);
+                                       $(marker).remove();
+                               },
+                               placeNode: function(node, deleteContent)
+                               {
+                                       var sel = this.selection.get();
+                                       var range = this.selection.range(sel);
+
+                                       if (deleteContent !== false)
+                                       {
+                                               range.deleteContents();
+                                       }
+
+                                       range.insertNode(node);
+                                       range.collapse(false);
 
+                                       this.selection.update(sel, range);
                                },
-                               nodeToCaretPositionFromPoint: function(e, node)
+                               nodeToPoint: function(e, node)
                                {
+                                       this.placeholder.hide();
+
                                        node = node[0] || node;
 
+                                       if (this.utils.isEmpty())
+                                       {
+                                               node = (this.utils.isBlock(node)) ? node : $('<p />').append(node);
+
+                                               this.core.editor().html(node);
+
+                                               return node;
+                                       }
+
                                        var range;
                                        var x = e.clientX, y = e.clientY;
                                        if (document.caretPositionFromPoint)
                                        return node;
 
                                },
-                               marker: function(range, node, collapse)
-                               {
-                                       if (range === null)
-                                       {
-                                               return;
-                                       }
-
-                                       range = range.cloneRange();
-
-                                       try {
-                                               range.collapse(collapse);
-                                               range.insertNode(node);
-
-                                       }
-                                       catch (e)
-                                       {
-                                               this.focus.start();
-                                       }
 
+                               // #backward
+                               nodeToCaretPositionFromPoint: function(e, node)
+                               {
+                                       this.insert.nodeToPoint(e, node);
+                               },
+                               marker: function()
+                               {
+                                       this.marker.insert();
                                }
-
                        };
                },
 
                                        this.keydown.pre = this.utils.isTag(this.keydown.current, 'pre');
                                        this.keydown.blockquote = this.utils.isTag(this.keydown.current, 'blockquote');
                                        this.keydown.figcaption = this.utils.isTag(this.keydown.current, 'figcaption');
+                                       this.keydown.figure = this.utils.isTag(this.keydown.current, 'figure');
 
                                        // callback
                                        var keydownStop = this.core.callback('keydown', e);
                                        this.shortcuts.init(e, key);
 
                                        // buffer
-                                       if (this.utils.isDesktop())
+                                       this.keydown.checkEvents(arrow, key);
+                                       this.keydown.setupBuffer(e, key);
+
+                                       if (this.utils.isSelectAll() && ( key === this.keyCode.ENTER || key === this.keyCode.BACKSPACE || key === this.keyCode.DELETE))
                                        {
-                                               this.keydown.checkEvents(arrow, key);
-                                               this.keydown.setupBuffer(e, key);
+                                               e.preventDefault();
+
+                                               this.code.set(this.opts.emptyHtml);
+
+                                               return;
                                        }
 
                                        this.keydown.addArrowsEvent(arrow);
                                                this.keydown.onArrowUp();
                                        }
 
+
+                                       // replace to p before / after the table or into body
+                                       if ((this.opts.type === 'textarea' || this.opts.type === 'div') && this.keydown.current && this.keydown.current.nodeType === 3 && $(this.keydown.parent).hasClass('redactor-in'))
+                                       {
+                                               this.keydown.wrapToParagraph();
+                                       }
+
+                                       // on Shift+Space or Ctrl+Space
+                                       if (key === this.keyCode.SPACE && (e.ctrlKey || e.shiftKey))
+                                       {
+                                               e.preventDefault();
+
+                                               return this.keydown.onShiftSpace();
+                                       }
+
+                                       // on Shift+Enter or Ctrl+Enter
+                                       if (key === this.keyCode.ENTER && (e.ctrlKey || e.shiftKey))
+                                       {
+                                               e.preventDefault();
+
+                                               return this.keydown.onShiftEnter(e);
+                                       }
+
                                        // on enter
                                        if (key === this.keyCode.ENTER && !e.shiftKey && !e.ctrlKey && !e.metaKey)
                                        {
-                                               var stop = this.core.callback('enter', e);
-                                               if (stop === false)
+                                               return this.keydown.onEnter(e);
+                                       }
+
+                                       // tab or cmd + [
+                                       if (key === this.keyCode.TAB || e.metaKey && key === 221 || e.metaKey && key === 219)
+                                       {
+                                               return this.keydown.onTab(e, key);
+                                       }
+
+                                       // backspace & delete
+                                       if (key === this.keyCode.BACKSPACE || key === this.keyCode.DELETE)
+                                       {
+                                               this.keydown.onBackspaceAndDeleteBefore();
+                                       }
+
+
+                                       if (key === this.keyCode.DELETE)
+                                       {
+                                               var $next = $(this.keydown.block).next();
+
+                                               // delete figure
+                                               if (this.utils.isEndOfElement(this.keydown.block) && $next.length !== 0 && $next[0].tagName === 'FIGURE')
                                                {
-                                                       e.preventDefault();
+                                                       $next.remove();
                                                        return false;
                                                }
 
-                                               // blockquote exit
-                                               if (this.keydown.blockquote && this.keydown.exitFromBlockquote(e) === true)
+                                               // append list (safari bug)
+                                               var tagLi = (this.keydown.block && this.keydown.block.tagName === 'LI') ? this.keydown.block : false;
+                                               if (tagLi)
                                                {
-                                                       return false;
+                                                       var $list = $(this.keydown.block).parents('ul, ol').last();
+                                                       var $nextList = $list.next();
+
+                                                       if (this.utils.isRedactorParent($list) && this.utils.isEndOfElement($list) && $nextList.length !== 0
+                                                               && ($nextList[0].tagName === 'UL' || $nextList[0].tagName === 'OL'))
+                                                       {
+                                                               e.preventDefault();
+
+                                                               $list.append($nextList.contents());
+                                                               $nextList.remove();
+
+                                                               return false;
+                                                       }
                                                }
 
-                                               // pre
-                                               if (this.keydown.pre)
+                                               // append pre
+                                               if (this.utils.isEndOfElement(this.keydown.block) && $next.length !== 0 && $next[0].tagName === 'PRE')
                                                {
-                                                       return this.keydown.insertNewLine(e);
+                                                       $(this.keydown.block).append($next.text());
+                                                       $next.remove();
+                                                       return false;
                                                }
-                                               // blockquote & figcaption
-                                               else if (this.keydown.blockquote || this.keydown.figcaption)
+
+                                       }
+
+                                       // image delete
+                                       if (key === this.keyCode.DELETE && $('#redactor-image-box').length !== 0)
+                                       {
+                                               this.image.remove();
+                                       }
+
+                                       // backspace
+                                       if (key === this.keyCode.BACKSPACE)
+                                       {
+
+                                               if (this.detect.isFirefox())
                                                {
-                                                       return this.keydown.insertBreakLine(e);
+                                                       this.line.removeOnBackspace(e);
                                                }
-                                               // paragraphs
-                                               else if (this.keydown.block)
+
+                                               // backspace as outdent
+                                               var block = this.selection.block();
+                                               if (block && block.tagName === 'LI' && this.utils.isCollapsed() && this.utils.isStartOfElement())
                                                {
-                                                       setTimeout($.proxy(this.keydown.replaceDivToParagraph, this), 1);
+                                                       this.indent.decrease();
+                                                       e.preventDefault();
+                                                       return;
+                                               }
 
-                                                       // empty list exit
-                                                       if (this.keydown.block.tagName === 'LI')
-                                                       {
-                                                               var current = this.selection.current();
-                                                               var $parent = $(current).closest('li', this.$editor[0]);
-                                                               var $list = $parent.closest('ul,ol', this.$editor[0]);
+                                               this.keydown.removeInvisibleSpace();
+                                               this.keydown.removeEmptyListInTable(e);
 
-                                                               if ($parent.length !== 0 && this.utils.isEmpty($parent.html()) && $list.next().length === 0 && this.utils.isEmpty($list.find("li").last().html()))
-                                                               {
-                                                                       $list.find("li").last().remove();
+                                       }
 
-                                                                       var node = $(this.opts.emptyHtml);
-                                                                       $list.after(node);
-                                                                       this.caret.start(node);
+                                       if (key === this.keyCode.BACKSPACE || key === this.keyCode.DELETE)
+                                       {
+                                               this.keydown.onBackspaceAndDeleteAfter(e);
+                                       }
 
-                                                                       return false;
-                                                               }
-                                                       }
+                               },
+                               onShiftSpace: function()
+                               {
+                                       this.buffer.set();
+                                       this.insert.raw('&nbsp;');
 
-                                               }
-                                               // outside
-                                               else if (!this.keydown.block)
-                                               {
-                                                       return this.keydown.insertParagraph(e);
-                                               }
+                                       return false;
+                               },
+                               onShiftEnter: function(e)
+                               {
+                                       this.buffer.set();
+
+                                       return (this.keydown.pre) ? this.keydown.insertNewLine(e) : this.insert.raw('<br>');
+                               },
+                               onBackspaceAndDeleteBefore: function()
+                               {
+                                       this.utils.saveScroll();
+                               },
+                               onBackspaceAndDeleteAfter: function(e)
+                               {
+                                       // remove style tag
+                                       setTimeout($.proxy(function()
+                                       {
+                                               this.code.syncFire = false;
+                                               this.keydown.removeEmptyLists();
 
-                                       }
+                                               this.core.editor().find('*[style]').not('#redactor-image-box, #redactor-image-editter').removeAttr('style');
 
-                                       // tab or cmd + [
-                                       if (key === this.keyCode.TAB || e.metaKey && key === 221 || e.metaKey && key === 219)
+                                               this.keydown.formatEmpty(e);
+                                               this.code.syncFire = true;
+
+                                       }, this), 1);
+                               },
+                               onEnter: function(e)
+                               {
+                                       var stop = this.core.callback('enter', e);
+                                       if (stop === false)
                                        {
-                                               return this.keydown.onTab(e, key);
+                                               e.preventDefault();
+                                               return false;
                                        }
 
-                                       // on Shift+Enter or Ctrl+Enter
-                                       if (key === this.keyCode.ENTER && (e.ctrlKey || e.shiftKey))
+                                       // blockquote exit
+                                       if (this.keydown.blockquote && this.keydown.exitFromBlockquote(e) === true)
                                        {
-                                               return this.keydown.insertBreakLine(e);
+                                               return false;
                                        }
 
-                                       // backspace & delete
-                                       if (key === this.keyCode.BACKSPACE || key === this.keyCode.DELETE)
+                                       // pre
+                                       if (this.keydown.pre)
                                        {
-                                               this.utils.saveScroll();
+                                               return this.keydown.insertNewLine(e);
                                        }
-
-                                       // delete
-                                       if (key === this.keyCode.DELETE && $('#redactor-image-box').length !== 0)
+                                       // blockquote & figcaption
+                                       else if (this.keydown.blockquote || this.keydown.figcaption)
                                        {
-                                               this.image.remove();
+                                               return this.keydown.insertBreakLine(e);
                                        }
-
-                                       // backspace
-                                       if (key === this.keyCode.BACKSPACE)
+                                       // figure
+                                       else if (this.keydown.figure)
                                        {
+                                               setTimeout($.proxy(function()
+                                               {
+                                                       this.keydown.replaceToParagraph('FIGURE');
 
-                                               // backspace as outdent
-                                               var block = this.selection.block();
-                                               if (block && block.tagName === 'LI' && this.utils.isCollapsed() && this.utils.isStartOfElement())
+                                               }, this), 1);
+                                       }
+                                       // paragraphs
+                                       else if (this.keydown.block)
+                                       {
+                                               setTimeout($.proxy(function()
                                                {
-                                                       this.indent.decrease();
-                                                       e.preventDefault();
-                                                       return;
-                                               }
+                                                       this.keydown.replaceToParagraph('DIV');
 
-                                               // remove hr in FF
-                                               if (this.browser.ff())
+                                               }, this), 1);
+
+                                               // empty list exit
+                                               if (this.keydown.block.tagName === 'LI')
                                                {
-                                                       var prev = this.selection.prev();
-                                                       var prev2 = $(prev).prev()[0];
+                                                       var current = this.selection.current();
+                                                       var $parent = $(current).closest('li', this.$editor[0]);
+                                                       var $list = $parent.parents('ul,ol', this.$editor[0]).last();
 
-                                                       if (prev && prev.tagName === 'HR')
+                                                       if ($parent.length !== 0 && this.utils.isEmpty($parent.html()) && $list.next().length === 0 && this.utils.isEmpty($list.find("li").last().html()))
                                                        {
-                                                               $(prev).remove();
-                                                       }
+                                                               $list.find("li").last().remove();
 
-                                                       if (prev2 && prev2.tagName === 'HR')
-                                                       {
-                                                               $(prev2).remove();
+                                                               var node = $(this.opts.emptyHtml);
+                                                               $list.after(node);
+                                                               this.caret.start(node);
+
+                                                               return false;
                                                        }
                                                }
 
-                                               this.keydown.removeInvisibleSpace();
-                                               this.keydown.removeEmptyListInTable(e);
-
-                                               // remove style tag
-                                               setTimeout($.proxy(function()
-                                               {
-                                                       this.code.syncFire = false;
-                                                       this.keydown.removeEmptyLists();
+                                       }
+                                       // outside
+                                       else if (!this.keydown.block)
+                                       {
+                                               return this.keydown.insertParagraph(e);
+                                       }
 
-                                                       this.core.editor().find('*[style]').not('#redactor-image-box, #redactor-image-editter').removeAttr('style');
 
-                                                       this.keydown.formatEmpty(e);
-                                                       this.code.syncFire = true;
+                                       // remove inline tags in new-empty paragraph
+                                       setTimeout($.proxy(function()
+                                       {
+                                               var inline = this.selection.inline();
+                                               if (inline && this.utils.isEmpty(inline.innerHTML))
+                                               {
+                                                       var parent = this.selection.block();
+                                                       $(inline).remove();
+                                                       this.caret.start(parent);
+                                               }
 
-                                               }, this), 1);
-                                       }
+                                       }, this), 1);
 
                                },
                                checkEvents: function(arrow, key)
                                                this.buffer.undo();
                                                return;
                                        }
-                                       // undo
+                                       // redo
                                        else if (this.keydown.ctrl && key === 90 && e.shiftKey && !e.altKey && this.opts.rebuffer.length !== 0)
                                        {
                                                e.preventDefault();
 
                                                $last.prev().filter('br').remove();
                                                $last.filter('br').remove();
-
+                                               $(this.keydown.blockquote).children().last().filter('br').remove();
+                                               $(this.keydown.blockquote).children().last().filter('span').remove();
 
                                                var node = $(this.opts.emptyHtml);
                                                $(this.keydown.blockquote).after(node);
                                },
                                insertAfterLastElement: function(element)
                                {
-                                       if (!this.utils.isEndOfElement())
+                                       if (!this.utils.isEndOfElement(element))
                                        {
                                                return;
                                        }
 
-                                       if (this.$editor.contents().last()[0] !== element)
+                                       var last = this.core.editor().contents().last();
+                                       var $next = $(this.keydown.block).next();
+                                       if ($next.length !== 0)
                                        {
                                                return;
                                        }
-
-                                       var node = $(this.opts.emptyHtml);
-                                       $(element).after(node);
-                                       this.caret.start(node);
+                                       else if (last.length === 0 && last[0] !== element)
+                                       {
+                                               this.caret.start(last);
+                                               return;
+                                       }
+                                       else
+                                       {
+                                               var node = $(this.opts.emptyHtml);
+                                               $(element).after(node);
+                                               this.caret.start(node);
+                                       }
 
                                },
                                insertBeforeFirstElement: function(element)
                                                return;
                                        }
 
-                                       if (this.$editor.contents().length > 1 && this.$editor.contents().first()[0] !== element)
+                                       if (this.core.editor().contents().length > 1 && this.core.editor().contents().first()[0] !== element)
                                        {
                                                return;
                                        }
 
                                        return false;
                                },
+                               insertParagraph: function(e)
+                               {
+                                       e.preventDefault();
+
+                                       var p = document.createElement('p');
+                                       p.innerHTML = this.opts.invisibleSpace;
+
+                                       var sel = this.selection.get();
+                                       var range = this.selection.range(sel);
+
+                                       range.deleteContents();
+                                       range.insertNode(p);
+
+                                       this.caret.start(p);
+
+                                       return false;
+                               },
                                insertBreakLine: function(e)
                                {
                                        return this.keydown.insertBreakLineProcessing(e);
                                        return false;
 
                                },
-                               replaceDivToParagraph: function()
+                               wrapToParagraph: function()
+                               {
+                                       var $current = $(this.keydown.current);
+                                       var     node = $('<p>').append($current.clone());
+                                       $current.replaceWith(node);
+
+
+                                       var next = $(node).next();
+                                       if (typeof(next[0]) !== 'undefined' && next[0].tagName === 'BR')
+                                       {
+                                               next.remove();
+                                       }
+
+                                       this.caret.end(node);
+
+                               },
+                               replaceToParagraph: function(tag)
                                {
                                        var blockElem = this.selection.block();
                                        var blockHtml = blockElem.innerHTML.replace(/<br\s?\/?>/gi, '');
-                                       if (blockElem.tagName === 'DIV' && this.utils.isEmpty(blockHtml) && !$(blockElem).hasClass('redactor-in'))
+                                       if (blockElem.tagName === tag && this.utils.isEmpty(blockHtml) && !$(blockElem).hasClass('redactor-in'))
                                        {
                                                var p = document.createElement('p');
                                                $(blockElem).replaceWith(p);
 
                                                return false;
                                        }
-                                       else if (this.opts.cleanStyleOnEnter && blockElem.tagName === 'P')
+                                       else if (blockElem.tagName === 'P')
                                        {
                                                $(blockElem).removeAttr('class').removeAttr('style');
                                        }
 
                                        if (this.opts.type === 'inline' || this.opts.type === 'pre')
                                        {
-                                               this.core.editor().html(this.selection.markerHtml());
+                                               this.core.editor().html(this.marker.html());
                                                this.selection.restore();
                                        }
                                        else
                                        }
 
                                        var key = e.which;
+                                       this.keyup.block = this.selection.block();
+                                       this.keyup.current = this.selection.current();
+                                       this.keyup.parent = this.selection.parent();
 
                                        // callback
                                        var stop = this.core.callback('keyup', e);
                                                return false;
                                        }
 
+                                       // replace figure to paragraph
+                                       if (key === this.keyCode.BACKSPACE || key === this.keyCode.DELETE)
+                                       {
+                                               if (this.utils.isSelectAll())
+                                               {
+                                                       this.focus.start();
+
+                                                       return;
+                                               }
+
+                                               // if paragraph does contain only image replace to figure
+                                               if (this.keyup.block && this.keyup.block.tagName === 'P')
+                                               {
+                                                       var isContainImage = $(this.keyup.block).find('img').length;
+                                                       var text = $(this.keyup.block).text().replace(/\u200B/g, '');
+                                                       if (text === '' && isContainImage !== 0)
+                                                       {
+                                                               this.utils.replaceToTag(this.keyup.block, 'figure');
+                                                       }
+                                               }
+
+                                               // if figure does not contain image replace to paragraph
+                                               if (this.keyup.block && this.keyup.block.tagName === 'FIGURE' && $(this.keyup.block).find('img').length === 0)
+                                               {
+                                                       this.selection.save();
+                                                       this.utils.replaceToTag(this.keyup.block, 'p');
+                                                       this.selection.restore();
+                                               }
+                                       }
+
                                        // linkify
                                        if (this.linkify.isKey(key))
                                        {
                                insert: function()
                                {
                                        this.buffer.set();
-                                       this.insert.html('<hr>');
+
+                                       // insert
+                                       this.insert.html(this.line.getLineHtml());
+
+                                       // find
+                                       var $hr = this.core.editor().find('#redactor-hr-tmp-id');
+                                       $hr.removeAttr('id');
+
+                                       this.core.callback('insertedLine', $hr);
+
+                                       return $hr;
+                               },
+                               getLineHtml: function()
+                               {
+                                       var html = '<hr id="redactor-hr-tmp-id" />';
+                                       if (!this.detect.isFirefox() && this.utils.isEmpty())
+                                       {
+                                               html += '<p>' + this.opts.emptyHtml + '</p>';
+                                       }
+
+                                       return html;
+                               },
+                               // ff only
+                               removeOnBackspace: function(e)
+                               {
+                                       if (!this.utils.isCollapsed())
+                                       {
+                                               return;
+                                       }
+
+                                       var $block = $(this.selection.block());
+                                       if ($block.length === 0 || !this.utils.isStartOfElement($block))
+                                       {
+                                               return;
+                                       }
+
+                                       // if hr is previous element
+                                       var $prev = $block.prev();
+                                       if ($prev && $prev[0].tagName === 'HR')
+                                       {
+                                               e.preventDefault();
+                                               $prev.remove();
+                                       }
                                }
                        };
                },
                link: function()
                {
                        return {
-                               show: function(e)
+
+                               // public
+                               get: function()
+                               {
+                                       return $(this.selection.inlines('a'));
+                               },
+                               is: function()
+                               {
+                                       var nodes = this.selection.nodes() ;
+                                       var $link = $(this.selection.current()).closest('a', this.core.editor()[0]);
+
+                                       return ($link.length === 0 || nodes.length > 1) ? false : $link;
+                               },
+                               unlink: function(e)
                                {
+                                       // if call from clickable element
                                        if (typeof e !== 'undefined' && e.preventDefault)
                                        {
                                                e.preventDefault();
                                        }
 
-                                       // hide link's tooltip
-                                       $('.redactor-link-tooltip').remove();
+                                       // buffer
+                                       this.buffer.set();
 
-                                       var isLink = (this.observe.isCurrent('a') && this.utils.isRedactorParent(this.selection.current));
-                                       var langVarModal = (isLink) ? 'link-edit' : 'link-insert';
-                                       var langVarBtn = (isLink) ? 'save' : 'insert';
+                                       var links = this.selection.inlines('a');
+                                       if (links.length === 0)
+                                       {
+                                               return;
+                                       }
 
-                                       // build modal
-                                       this.modal.load('link', this.lang.get(langVarModal), 600);
-                                       this.modal.createCancelButton();
+                                       var $links = this.link.replaceLinksToText(links);
 
-                                       // btn insert
-                                       this.link.buttonInsert = this.modal.createActionButton(this.lang.get(langVarBtn));
+                                       this.observe.closeAllTooltip();
+                                       this.core.callback('deletedLink', $links);
 
-                                       // get link
-                                       this.link.getData();
-                                       this.link.cleanUrl();
+                               },
+                               insert: function(link, cleaned)
+                               {
+                                       var $el = this.link.is();
 
-                                       // set modal values
-                                       if (this.link.target === '_blank')
+                                       if (cleaned !== true)
                                        {
-                                               $('#redactor-link-blank').prop('checked', true);
+                                               link = this.link.buildLinkFromObject($el, link);
+                                               if (link === false)
+                                               {
+                                                       return false;
+                                               }
                                        }
 
-                                       this.link.$inputUrl = $('#redactor-link-url');
-                                       this.link.$inputText = $('#redactor-link-url-text');
+                                       // buffer
+                                       this.buffer.set();
 
-                                       this.link.$inputText.val(this.link.text);
-                                       this.link.$inputUrl.val(this.link.url);
+                                       if ($el === false)
+                                       {
+                                               // insert
+                                               $el = $('<a />');
+                                               $el = this.link.update($el, link);
+                                               $el = $(this.insert.node($el));
 
-                                       // insert event
-                                       this.link.buttonInsert.on('click', $.proxy(this.link.insert, this));
+                                               var $parent = $el.parent();
+                                               if (this.utils.isRedactorParent($parent) === false)
+                                               {
+                                                       $el.wrap('<p>');
+                                               }
 
-                                       // show modal
-                                       this.modal.show();
+                                               // remove unlink wrapper
+                                               if ($parent.hasClass('redactor-unlink'))
+                                               {
+                                                       $parent.replaceWith(function(){
+                                                               return $(this).contents();
+                                                       });
+                                               }
 
-                                       // focus
-                                       this.link.$inputUrl.focus();
+                                               this.caret.after($el);
+                                               this.core.callback('insertedLink', $el);
+                                       }
+                                       else
+                                       {
+                                               // update
+                                               $el = this.link.update($el, link);
+                                               this.caret.after($el);
+                                       }
 
                                },
-                               getData: function()
+                               update: function($el, link)
                                {
-                                       this.link.$node = false;
-                                       this.link.url = '';
-                                       this.link.target = '';
+                                       $el.text(link.text);
+                                       $el.attr('href', link.url);
 
-                                       var $el = $(this.selection.current()).closest('a', this.core.editor()[0]);
-                                       if ($el.length !== 0 && $el[0].tagName === 'A')
-                                       {
-                                               this.link.$node = $el;
+                                       this.link.target($el, link.target);
 
-                                               this.link.url = $el.attr('href');
-                                               this.link.text = $el.text();
-                                               this.link.target = $el.attr('target');
-                                       }
-                                       else
-                                       {
-                                               this.link.text = this.selection.get().toString();
-                                       }
+                                       return $el;
 
                                },
-                               cleanUrl: function()
+                               target: function($el, target)
                                {
-                                       if (typeof this.link.url === 'undefined')
+                                       return (target) ? $el.attr('target', target) : $el.removeAttr('target');
+                               },
+                               show: function(e)
+                               {
+                                       // if call from clickable element
+                                       if (typeof e !== 'undefined' && e.preventDefault)
                                        {
-                                               return;
+                                               e.preventDefault();
                                        }
 
-                                       var thref = self.location.href.replace(/\/$/i, '');
+                                       // close tooltip
+                                       this.observe.closeAllTooltip();
+
+                                       // is link
+                                       var $el = this.link.is();
+
+                                       // build modal
+                                       this.link.buildModal($el);
+
+                                       // build link
+                                       var link = this.link.buildLinkFromElement($el);
+
+                                       // if link cut & paste inside editor browser added self host to a link
+                                       link.url = this.link.removeSelfHostFromUrl(link.url);
+
+                                       // set modal values
+                                       this.link.setModalValues(link);
 
-                                       this.link.url = this.link.url.replace(thref, '');
-                                       this.link.url = this.link.url.replace(/^\/#/, '#');
-                                       this.link.url = this.link.url.replace('mailto:', '');
+                                       // show modal
+                                       this.modal.show();
 
-                                       // remove host from href
-                                       if (!this.opts.linkProtocol)
+                                       // focus
+                                       if (this.detect.isDesktop())
                                        {
-                                               var re = new RegExp('^(http|ftp|https)://' + self.location.host, 'i');
-                                               this.link.url = this.link.url.replace(re, '');
+                                               $('#redactor-link-url').focus();
                                        }
+                               },
 
+                               // private
+                               setModalValues: function(link)
+                               {
+                                       $('#redactor-link-blank').prop('checked', link.target);
+                                       $('#redactor-link-url').val(link.url);
+                                       $('#redactor-link-url-text').val(link.text);
                                },
-                               insert: function()
+                               buildModal: function($el)
+                               {
+                                       this.modal.load('link', this.lang.get(($el === false) ? 'link-insert' : 'link-edit'), 600);
+
+                                       // button insert
+                                       var $btn = this.modal.getActionButton();
+                                       $btn.text(this.lang.get(($el === false) ? 'insert' : 'save')).on('click', $.proxy(this.link.callback, this));
+
+                               },
+                               callback: function()
                                {
-                                       this.placeholder.remove();
+                                       // build link
+                                       var link = this.link.buildLinkFromModal();
+                                       if (link === false)
+                                       {
+                                               return false;
+                                       }
+
+                                       // close
+                                       this.modal.close();
 
-                                       var target = '';
-                                       var link = $.trim(this.link.$inputUrl.val());
-                                       var text = $.trim(this.link.$inputText.val().replace(/(<([^>]+)>)/gi, ''));
+                                       // insert or update
+                                       this.link.insert(link, true);
+                               },
+                               cleanUrl: function(url)
+                               {
+                                       return (typeof url === 'undefined') ? '' : $.trim(url.replace(/[^\W\w\D\d+&@#/%?=~_|!:,.;\(\)]/gi, ''));
+                               },
+                               cleanText: function(text)
+                               {
+                                       return (typeof text === 'undefined') ? '' :$.trim(text.replace(/(<([^>]+)>)/gi, ''));
+                               },
+                               getText: function(link)
+                               {
+                                       return (link.text === '' && link.url !== '') ? this.link.truncateUrl(link.url.replace(/<|>/g, '')) : link.text;
+                               },
+                               isUrl: function(url)
+                               {
+                                       var pattern = '((xn--)?[\\W\\w\\D\\d]+(-[\\W\\w\\D\\d]+)*\\.)+[\\W\\w]{2,}';
+                                       var re1 = new RegExp('^(http|ftp|https)://' + pattern, 'i');
+                                       var re2 = new RegExp('^' + pattern, 'i');
+                                       var re3 = new RegExp('\.(html|php)$', 'i');
+                                       var re4 = new RegExp('^/', 'i');
 
-                                       // empty text
-                                       if (text === '' && link !== '')
+                                       // ad protocol
+                                       if (url.search(re1) === -1 && url.search(re2) !== -1)
                                        {
-                                               text = link.replace(/<|>/g, '');
+                                               url = 'http://' + url;
                                        }
 
-                                       // empty link
-                                       if (link === '' || (text === '' && link === ''))
+                                       if (url.search(re1) !== -1 || url.search(re3) !== -1 || url.search(re4) !== -1)
                                        {
-                                               return;
+                                               return url;
                                        }
 
+                                       return false;
+                               },
+                               isMailto: function(url)
+                               {
+                                       return (url.search('@') !== -1 && /(http|ftp|https):\/\//i.test(url) === false);
+                               },
+                               isEmpty: function(link)
+                               {
+                                       return (link.url === '' || (link.text === '' && link.url === ''));
+                               },
+                               truncateUrl: function(url)
+                               {
+                                       return (url.length > this.opts.linkSize) ? url.substring(0, this.opts.linkSize) + '...' : url;
+                               },
+                               parse: function(link)
+                               {
                                        // mailto
-                                       if (link.search('@') !== -1 && /(http|ftp|https):\/\//i.test(link) === false)
+                                       if (this.link.isMailto(link.url))
                                        {
-                                               link = link.replace('mailto:', '');
-                                               link = 'mailto:' + link;
+                                               link.url = 'mailto:' + link.url.replace('mailto:', '');
                                        }
-                                       // url, not anchor
-                                       else if (link.search('#') !== 0)
+                                       // url
+                                       else if (link.url.search('#') !== 0)
                                        {
-                                               if ($('#redactor-link-blank').prop('checked'))
-                                               {
-                                                       target = '_blank';
-                                               }
-
-                                               // test url (add protocol)
-                                               var pattern = '((xn--)?[a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}';
-                                               var re = new RegExp('^(http|ftp|https)://' + pattern, 'i');
-                                               var re2 = new RegExp('^' + pattern, 'i');
-                                               var re3 = new RegExp('\.(html|php)$', 'i');
-                                               if (link.search(re) === -1 && link.search(re3) === -1 && link.search(re2) === 0 && this.opts.linkProtocol)
-                                               {
-                                                       link = this.opts.linkProtocol + '://' + link;
-                                               }
+                                               link.url = this.link.isUrl(link.url);
                                        }
 
-                                       // close modal
-                                       this.modal.close();
-                                       this.buffer.set();
+                                       // empty url or text or isn't url
+                                       return (this.link.isEmpty(link) || link.url === false) ? false : link;
 
-                                       // set link
-                                       if (this.link.$node)
-                                       {
-                                               this.link.$node.attr('href', link);
-                                               this.link.$node.text(text);
+                               },
+                               buildLinkFromModal: function()
+                               {
+                                       var link = {};
 
-                                               if (target !== '')
-                                               {
-                                                       this.link.$node.attr('target', target);
-                                               }
-                                               else
-                                               {
-                                                       this.link.$node.removeAttr('target');
-                                               }
+                                       // url
+                                       link.url = this.link.cleanUrl($('#redactor-link-url').val());
 
-                                               this.selection.node(this.link.$node);
-                                       }
-                                       else
-                                       {
-                                               // create link
-                                               var $a = $('<a href="' + link + '">').text(text);
+                                       // text
+                                       link.text = this.link.cleanText($('#redactor-link-url-text').val());
+                                       link.text = this.link.getText(link);
 
-                                               // set target
-                                               if (target !== '')
-                                               {
-                                                       $a.attr('target', target);
-                                               }
+                                       // target
+                                       link.target = ($('#redactor-link-blank').prop('checked')) ? true : false;
+
+                                       // parse
+                                       return this.link.parse(link);
+
+                               },
+                               buildLinkFromObject: function($el, link)
+                               {
+                                       // url
+                                       link.url = this.link.cleanUrl(link.url);
+
+                                       // text
+                                       link.text = (typeof link.text === 'undefined' && this.selection.is()) ? this.selection.text() : this.link.cleanText(link.text);
+                                       link.text = this.link.getText(link);
 
-                                               $a = $(this.insert.node($a));
-                                               this.caret.after($a);
+                                       // target
+                                       link.target = ($el === false) ? link.target : this.link.buildTarget($el);
 
-                                               this.core.callback('insertedLink', $a);
-                                       }
+                                       // parse
+                                       return this.link.parse(link);
 
-                                       this.observe.links();
                                },
-                               unlink: function(e)
+                               buildLinkFromElement: function($el)
                                {
-                                       if (typeof e !== 'undefined' && e.preventDefault)
-                                       {
-                                               e.preventDefault();
-                                       }
+                                       var link = {
+                                               url: '',
+                                               text: (this.selection.is()) ? this.selection.text() : '',
+                                               target: false
+                                       };
 
-                                       var inlines = this.selection.inlines();
-                                       if (!inlines)
+                                       if ($el !== false)
                                        {
-                                               return;
+                                               link.url = $el.attr('href');
+                                               link.text = $el.text();
+                                               link.target = this.link.buildTarget($el);
                                        }
 
-                                       var len = inlines.length;
-                                       var links = [];
-                                       for (var i = 0; i < len; i++)
+                                       return link;
+                               },
+                               buildTarget: function($el)
+                               {
+                                       return (typeof $el.attr('target') !== 'undefined' && $el.attr('target') === '_blank') ? true : false;
+                               },
+                               removeSelfHostFromUrl: function(url)
+                               {
+                                       var href = self.location.href.replace('#', '').replace(/\/$/i, '');
+                                       return url.replace(/^\/\#/, '#').replace(href, '').replace('mailto:', '');
+                               },
+                               replaceLinksToText: function(links)
+                               {
+                                       var $first;
+                                       var $links = $.each(links, function(i,s)
                                        {
-                                               if (inlines[i].tagName === 'A')
+                                               var $el = $(s);
+                                               var $unlinked = $('<span class="redactor-unlink" />').append($el.contents());
+                                               $el.replaceWith($unlinked);
+
+                                               if (i === 0)
                                                {
-                                                       links.push(inlines[i]);
+                                                       $first = $unlinked;
                                                }
 
-                                               var $node = $(inlines[i]).closest('a', this.core.editor()[0]);
-                                               $node.replaceWith($node.contents());
-                                       }
-
-                                       // hide link's tooltip
-                                       $('.redactor-link-tooltip').remove();
+                                               return $el;
+                                       });
 
-                                       this.core.callback('deletedLink', links);
+                                       // set caret after unlinked node
+                                       if (links.length === 1 && this.selection.isCollapsed())
+                                       {
+                                               this.caret.after($first);
+                                       }
 
+                                       return $links;
                                }
                        };
                },
                                {
                                        return key === this.keyCode.ENTER || key === this.keyCode.SPACE;
                                },
+                               isLink: function(node)
+                               {
+                                       return (node.nodeValue.match(this.opts.regexps.linkyoutube) || node.nodeValue.match(this.opts.regexps.linkvimeo) || node.nodeValue.match(this.opts.regexps.linkimage) || node.nodeValue.match(this.opts.regexps.url));
+                               },
+                               isFiltered: function(i, node)
+                               {
+                                       return node.nodeType === 3 && $.trim(node.nodeValue) !== "" && !$(node).parent().is("pre") && (this.linkify.isLink(node));
+                               },
+                               handler: function(i, node)
+                               {
+                                       var $el = $(node);
+                                       var text = $el.text();
+                                       var html = text;
+
+                                       if (html.match(this.opts.regexps.linkyoutube) || html.match(this.opts.regexps.linkvimeo))
+                                       {
+                                               html = this.linkify.convertVideoLinks(html);
+                                       }
+                                       else if (html.match(this.opts.regexps.linkimage))
+                                       {
+                                               html = this.linkify.convertImages(html);
+                                       }
+                                       else
+                                       {
+                                               html = this.linkify.convertLinks(html);
+                                       }
+
+                                       $el.before(text.replace(text, html)).remove();
+                               },
                                format: function()
                                {
                                        if (!this.opts.linkify || this.utils.isCurrentOrParent('pre'))
                                                return;
                                        }
 
-                                       var linkify = this.linkify;
-                                       var opts = this.opts.regexps;
-
-                                       this.core.editor().find(":not(iframe,img,a,pre)").addBack().contents()
-                                               .filter(function()
-                                               {
-                                                       return this.nodeType === 3 && $.trim(this.nodeValue) !== "" && !$(this).parent().is("pre") && (this.nodeValue.match(opts.linkyoutube) || this.nodeValue.match(opts.linkvimeo) || this.nodeValue.match(opts.linkimage) || this.nodeValue.match(opts.url));
-                                               }).each(function()
-                                               {
-                                                       var text = $(this).text();
-                                                       var html = text;
-
-                                                       if (html.match(opts.linkyoutube) || html.match(opts.linkvimeo))
-                                                       {
-                                                               html = linkify.convertVideoLinks(html);
-                                                       }
-                                                       else if (html.match(opts.linkimage))
-                                                       {
-                                                               html = linkify.convertImages(html);
-                                                       }
-                                                       else
-                                                       {
-                                                               html = linkify.convertLinks(html);
-                                                       }
-
-                                                       $(this).before(text.replace(text, html)).remove();
-                                               });
-
+                                       this.core.editor().find(":not(iframe,img,a,pre,.redactor-unlink)").addBack().contents().filter($.proxy(this.linkify.isFiltered, this)).each($.proxy(this.linkify.handler, this));
 
-                                       var objects = this.core.editor().find('.redactor-linkify-object').each($.proxy(function(i,s)
+                                       // collect
+                                       var $objects = this.core.editor().find('.redactor-linkify-object').each($.proxy(function(i,s)
                                        {
                                                var $el = $(s);
                                                $el.removeClass('redactor-linkify-object');
                                                        $el.removeAttr('class');
                                                }
 
-                                               // img figure
-                                               if (s.tagName === 'IMG')
+                                               if (s.tagName === 'DIV') // video container
+                                               {
+                                                       this.linkify.breakBlockTag($el, 'video');
+                                               }
+                                               else if (s.tagName === 'IMG') // image
+                                               {
+                                                       this.linkify.breakBlockTag($el, 'image');
+                                               }
+                                               else if (s.tagName === 'A')
                                                {
-                                                       this.events.stopDetect();
+                                                       this.core.callback('insertedLink', $el);
+                                               }
 
-                                                       var block = this.selection.block();
-                                                       var inline = this.selection.inline();
-                                                       var tag = block.tagName.toLowerCase();
-                                                       var html = this.utils.getOuterHtml(s);
+                                               return $el;
 
-                                                       // add marker
-                                                       $el.attr('data-replaced', i);
+                                       }, this));
 
-                                                       var inlineStart = '', inlineEnd = '';
-                                                       if (inline)
-                                                       {
-                                                               inlineStart = '</' + inline.tagName.toLowerCase() + '>';
-                                                               inlineEnd = '<' + inline.tagName.toLowerCase() + '>';
-                                                       }
+                                       // callback
+                                       setTimeout($.proxy(function()
+                                       {
+                                               this.code.sync();
+                                               this.core.callback('linkify', $objects);
 
-                                                       var code = this.core.editor().html();
-                                                       var re = new RegExp(this.utils.getOuterHtml(s), 'i');
-                                                       code = code.replace(re, inlineStart + '</' + tag + '><figure id="redactor-inserted-figure-' + i + '">' + html + '</figure><' + tag + '>' + inlineEnd);
-                                                       this.core.editor().html(code);
 
-                                                       var $figure = $('#redactor-inserted-figure-' + i).removeAttr('id');
-                                                       this.caret.after($figure);
+                                       }, this), 100);
 
-                                                       this.events.startDetect();
-                                               }
+                               },
+                               breakBlockTag: function($el, type)
+                               {
+                                       var breaked = this.utils.breakBlockTag();
+                                       if (breaked === false)
+                                       {
+                                               return;
+                                       }
 
-                                               return $el[0];
+                                       var $newBlock = $el;
+                                       if (type === 'image')
+                                       {
+                                               $newBlock = $('<figure />').append($el);
+                                       }
 
-                                       }, this));
+                                       if (breaked.type === 'start')
+                                       {
+                                               breaked.$block.before($newBlock);
+                                       }
+                                       else
+                                       {
+                                               breaked.$block.after($newBlock);
+                                       }
 
-                                       // callback
-                                       setTimeout($.proxy(function()
+
+                                       if (type === 'image')
                                        {
-                                               this.observe.load();
-                                               this.core.callback('linkify', objects);
-                                       }, this), 100);
+                                               this.caret.after($newBlock);
+                                       }
 
                                },
                                convertVideoLinks: function(html)
                                {
-                                       var iframeStart = '<iframe class="redactor-linkify-object" width="500" height="281" src="';
-                                       var iframeEnd = '" frameborder="0" allowfullscreen></iframe>';
+                                       var iframeStart = '<div class="' + this.opts.videoContainerClass + ' redactor-linkify-object"><iframe class="redactor-linkify-object" width="500" height="281" src="';
+                                       var iframeEnd = '" frameborder="0" allowfullscreen></iframe></div>';
 
                                        if (html.match(this.opts.regexps.linkyoutube))
                                        {
 
                                        for (var i = 0; i < length; i++)
                                        {
-                                               var href = matches[i],
-                                                       text = href,
-                                                       linkProtocol = this.opts.linkProtocol + '://';
-
-                                               if (href.match(/(https?|ftp):\/\//i) !== null)
-                                               {
-                                                       linkProtocol = "";
-                                               }
+                                               var href = matches[i], text = href;
+                                               var linkProtocol = (href.match(/(https?|ftp):\/\//i) !== null) ? '' : 'http://';
 
                                                if (text.length > this.opts.linkSize)
                                                {
                                        }
 
                                        var tag = (cmd === 'orderedlist') ? 'OL' : 'UL';
-                                       var $list = $(this.selection.current()).parents('ul, ol').first();
+                                       var $list = $(this.selection.current()).parentsUntil('.redactor-in', 'ul, ol').first();
+
 
-                                       this.placeholder.remove();
+                                       this.placeholder.hide();
                                        this.buffer.set();
 
-                                       if ($list.length !== 0 && $list[0].tagName === tag)
+                                       if ($list.length !== 0 && $list[0].tagName === tag && this.utils.isRedactorParent($list))
                                        {
                                                this.selection.save();
 
                                                return;
                                        }
 
+                                       this.selection.save();
                                        document.execCommand('insert' + cmd);
+                                       this.selection.restore();
 
                                        var $insertedList = this.list.get();
                                        if (!$insertedList)
                        };
                },
 
+               // =marker
+               marker: function()
+               {
+                       return {
+
+                               // public
+                               get: function(num)
+                               {
+                                       num = (typeof num === 'undefined') ? 1 : num;
+
+                                       var marker = document.createElement('span');
+
+                                       marker.id = 'selection-marker-' + num;
+                                       marker.className = 'redactor-selection-marker';
+                                       marker.innerHTML = this.opts.invisibleSpace;
+
+                                       return marker;
+                               },
+                               html: function(num)
+                               {
+                                       return this.utils.getOuterHtml(this.marker.get(num));
+                               },
+                               find: function(num)
+                               {
+                                       num = (typeof num === 'undefined') ? 1 : num;
+
+                                       return this.core.editor().find('span#selection-marker-' + num);
+                               },
+                               insert: function()
+                               {
+                                       var sel = this.selection.get();
+                                       var range = this.selection.range(sel);
+
+                                       this.marker.insertNode(range, this.marker.get(1), true);
+                                       if (range && range.collapsed === false)
+                                       {
+                                               this.marker.insertNode(range, this.marker.get(2), false);
+                                       }
+                               },
+                               remove: function()
+                               {
+                                       this.core.editor().find('.redactor-selection-marker').each(this.marker.iterateRemove);
+                               },
+
+                               // private
+                               insertNode: function(range, node, collapse)
+                               {
+                                       var parent = this.selection.parent();
+                                       if (range === null || $(parent).closest('.redactor-in').length === 0)
+                                       {
+                                               return;
+                                       }
+
+                                       range = range.cloneRange();
+
+                                       try {
+                                               range.collapse(collapse);
+                                               range.insertNode(node);
+
+                                       }
+                                       catch (e)
+                                       {
+                                               this.focus.start();
+                                       }
+                               },
+                               iterateRemove: function(i, el)
+                               {
+                                       var $el = $(el);
+                                       var text = $el.text().replace(/\u200B/g, '');
+
+                                       return (text === '') ? $el.remove() : $el.replaceWith(function() { return $(this).contents(); });
+                               }
+                       };
+               },
+
                // =modal
                modal: function()
                {
                                {
                                        this.opts.modal = {
                                                'image-edit': String()
-                                               + '<div class="modal-section" id="redactor-modal-image-edit">'
-                                                       + '<label>' + this.lang.get('title') + '</label>'
-                                                       + '<input type="text" id="redactor-image-title" />'
-                                                       + '<label class="redactor-image-link-option">' + this.lang.get('link') + '</label>'
-                                                       + '<input type="text" id="redactor-image-link" class="redactor-image-link-option" aria-label="' + this.lang.get('link') + '" />'
-                                                       + '<label class="redactor-image-link-option"><input type="checkbox" id="redactor-image-link-blank" aria-label="' + this.lang.get('link-in-new-tab') + '"> ' + this.lang.get('link-in-new-tab') + '</label>'
+                                               + '<div class="redactor-modal-tab redactor-group" data-title="General">'
+                                                       + '<div id="redactor-image-preview" class="redactor-modal-tab-side">'
+                                                       + '</div>'
+                                                       + '<div class="redactor-modal-tab-area">'
+                                                               + '<section>'
+                                                                       + '<label>' + this.lang.get('title') + '</label>'
+                                                                       + '<input type="text" id="redactor-image-title" />'
+                                                               + '</section>'
+                                                               + '<section>'
+                                                                       + '<label>' + this.lang.get('caption') + '</label>'
+                                                                       + '<input type="text" id="redactor-image-caption" aria-label="' + this.lang.get('caption') + '" />'
+                                                               + '</section>'
+                                                               + '<section>'
+                                                                       + '<label>' + this.lang.get('link') + '</label>'
+                                                                       + '<input type="text" id="redactor-image-link" aria-label="' + this.lang.get('link') + '" />'
+                                                               + '</section>'
+                                                               + '<section>'
+                                                                       + '<label class="checkbox"><input type="checkbox" id="redactor-image-link-blank" aria-label="' + this.lang.get('link-in-new-tab') + '"> ' + this.lang.get('link-in-new-tab') + '</label>'
+                                                               + '</section>'
+                                                               + '<section>'
+                                                                       + '<button id="redactor-modal-button-action">Insert</button>'
+                                                                       + '<button id="redactor-modal-button-cancel">Cancel</button>'
+                                                                       + '<button id="redactor-modal-button-delete" class="redactor-modal-button-offset">Delete</button>'
+                                                               + '</section>'
+                                                       + '</div>'
                                                + '</div>',
 
                                                'image': String()
-                                               + '<div class="modal-section" id="redactor-modal-image-insert">'
-                                                       + '<div id="redactor-modal-image-droparea"></div>'
+                                               + '<div class="redactor-modal-tab" data-title="Upload">'
+                                                       + '<section>'
+                                                               + '<div id="redactor-modal-image-droparea"></div>'
+                                                       + '</section>'
                                                + '</div>',
 
                                                'file': String()
-                                               + '<div class="modal-section" id="redactor-modal-file-insert">'
-                                                       + '<div id="redactor-modal-file-upload-box">'
+                                               + '<div class="redactor-modal-tab" data-title="Upload">'
+                                                       + '<section>'
                                                                + '<label>' + this.lang.get('filename') + ' <span class="desc">(' + this.lang.get('optional') + ')</span></label>'
                                                                + '<input type="text" id="redactor-filename" aria-label="' + this.lang.get('filename') + '" /><br><br>'
+                                                       + '</section>'
+                                                       + '<section>'
                                                                + '<div id="redactor-modal-file-upload"></div>'
-                                                       + '</div>'
+                                                       + '</section>'
                                                + '</div>',
 
                                                'link': String()
-                                               + '<div class="modal-section" id="redactor-modal-link-insert">'
-                                                       + '<label>URL</label>'
-                                                       + '<input type="url" id="redactor-link-url" aria-label="URL" />'
-                                                       + '<label>' + this.lang.get('text') + '</label>'
-                                                       + '<input type="text" id="redactor-link-url-text" aria-label="' + this.lang.get('text') + '" />'
-                                                       + '<label><input type="checkbox" id="redactor-link-blank"> ' + this.lang.get('link-in-new-tab') + '</label>'
+                                               + '<div class="redactor-modal-tab" data-title="General">'
+                                                       + '<section>'
+                                                               + '<label>URL</label>'
+                                                               + '<input type="url" id="redactor-link-url" aria-label="URL" />'
+                                                       + '</section>'
+                                                       + '<section>'
+                                                               + '<label>' + this.lang.get('text') + '</label>'
+                                                               + '<input type="text" id="redactor-link-url-text" aria-label="' + this.lang.get('text') + '" />'
+                                                       + '</section>'
+                                                       + '<section>'
+                                                               + '<label class="checkbox"><input type="checkbox" id="redactor-link-blank"> ' + this.lang.get('link-in-new-tab') + '</label>'
+                                                       + '</section>'
+                                                       + '<section>'
+                                                               + '<button id="redactor-modal-button-action">Insert</button>'
+                                                               + '<button id="redactor-modal-button-cancel">Cancel</button>'
+                                                       + '</section>'
                                                + '</div>'
                                        };
 
-
                                        $.extend(this.opts, this.opts.modal);
 
                                },
                                {
                                        this.modal.callbacks[name] = callback;
                                },
-                               createTabber: function($modal)
-                               {
-                                       this.modal.$tabber = $('<div>').attr('id', 'redactor-modal-tabber');
-
-                                       $modal.prepend(this.modal.$tabber);
-                               },
-                               addTab: function(id, name, active)
-                               {
-                                       var $tab = $('<a href="#" rel="tab' + id + '">').text(name);
-                                       if (active)
-                                       {
-                                               $tab.addClass('active');
-                                       }
-
-                                       var self = this;
-                                       $tab.on('click', function(e)
-                                       {
-                                               e.preventDefault();
-                                               $('.redactor-tab').hide();
-                                               $('.redactor-' + $(this).attr('rel')).show();
-
-                                               self.modal.$tabber.find('a').removeClass('active');
-                                               $(this).addClass('active');
-
-                                       });
-
-                                       this.modal.$tabber.append($tab);
-                               },
                                addTemplate: function(name, template)
                                {
                                        this.opts.modal[name] = template;
                                },
                                getModal: function()
                                {
-                                       return this.$modalBody.find('.modal-section');
+                                       return this.$modalBody;
+                               },
+                               getActionButton: function()
+                               {
+                                       return this.$modalBody.find('#redactor-modal-button-action');
+                               },
+                               getCancelButton: function()
+                               {
+                                       return this.$modalBody.find('#redactor-modal-button-cancel');
+                               },
+                               getDeleteButton: function()
+                               {
+                                       return this.$modalBody.find('#redactor-modal-button-delete');
                                },
                                load: function(templateName, title, width)
                                {
+                                       if (typeof this.$modalBox !== 'undefined' && this.$modalBox.hasClass('open'))
+                                       {
+                                               return;
+                                       }
+
                                        this.modal.templateName = templateName;
                                        this.modal.width = width;
 
                                },
                                show: function()
                                {
-                                       this.selection.save();
 
-                                       if (this.utils.isMobile())
+                                       if (!this.detect.isDesktop())
                                        {
-                                               this.modal.showOnMobile();
+                                               document.activeElement.blur();
                                        }
-                                       else
+
+                                       this.selection.save();
+                                       this.modal.buildTabber();
+
+                                       if (this.detect.isMobile())
                                        {
-                                               this.modal.showOnDesktop();
+                                               this.modal.width = '96%';
                                        }
 
-                                       this.$modalOverlay.show();
-                                       this.$modalBox.fadeIn(150);
+                                       // resize
+                                       setTimeout($.proxy(this.modal.buildWidth, this), 0);
+                                       $(window).on('resize.redactor-modal', $.proxy(this.modal.buildWidth, this));
 
-                                       this.$modal.attr('tabindex', '-1');
-                                       this.$modal.focus();
 
-                                       this.modal.setButtonsWidth();
+                                       this.$modalOverlay.redactorAnimation('fadeIn', {
+                                               duration: 0.25
+                                       });
 
-                                       // resize
-                                       if (!this.utils.isMobile())
-                                       {
-                                               setTimeout($.proxy(this.modal.showOnDesktop, this), 0);
-                                               $(window).on('resize.redactor-modal', $.proxy(this.modal.resize, this));
-                                       }
+                                       this.$modalBox.addClass('open').show();
+                                       this.$modal.redactorAnimation('fadeIn', {
+                                                       timing: 'cubic-bezier(0.175, 0.885, 0.320, 1.105)'
+                                               },
+                                               $.proxy(function()
+                                               {
 
-                                       // modal shown callback
-                                       this.core.callback('modalOpened', this.modal.templateName, this.$modal);
+                                                       this.utils.saveScroll();
+                                                       this.utils.disableBodyScroll();
 
-                                       // fix bootstrap modal focus
-                                       $(document).off('focusin.modal');
+                                                       // modal shown callback
+                                                       this.core.callback('modalOpened', this.modal.templateName, this.$modal);
+
+                                                       // fix bootstrap modal focus
+                                                       $(document).off('focusin.modal');
+
+                                                       // enter
+                                                       var $elements = this.$modal.find('input[type=text],input[type=url],input[type=email]');
+                                                       $elements.on('keydown.redactor-modal', $.proxy(this.modal.setEnter, this));
+
+                                               }, this)
+                                       );
 
-                                       // enter
-                                       this.$modal.find('input[type=text],input[type=url],input[type=email]').on('keydown.redactor-modal', $.proxy(this.modal.setEnter, this));
                                },
-                               showOnDesktop: function()
+                               buildWidth: function()
                                {
-                                       var height = this.$modal.outerHeight();
                                        var windowHeight = $(window).height();
                                        var windowWidth = $(window).width();
 
-                                       if (this.modal.width > windowWidth)
-                                       {
-                                               this.$modal.css({
-                                                       width: '96%',
-                                                       marginTop: (windowHeight/2 - height/2) + 'px'
-                                               });
+                                       var number = (typeof this.modal.width === 'number');
 
-                                               this.utils.saveScroll();
-                                               return;
+                                       if (!number && this.modal.width.match(/%$/))
+                                       {
+                                               this.$modal.css({ 'width': this.modal.width, 'margin-bottom': '16px' });
                                        }
-
-                                       if (height > windowHeight)
+                                       else if (parseInt(this.modal.width) > windowWidth)
                                        {
-                                               this.$modal.css({
-                                                       width: this.modal.width + 'px',
-                                                       marginTop: '20px'
-                                               });
+                                               this.$modal.css({ 'width': '96%', 'margin-bottom': '2%' });
                                        }
                                        else
                                        {
-                                               this.$modal.css({
-                                                       width: this.modal.width + 'px',
-                                                       marginTop: (windowHeight/2 - height/2) + 'px'
-                                               });
+                                               if (number)
+                                               {
+                                                       this.modal.width += 'px';
+                                               }
+
+                                               this.$modal.css({ 'width': this.modal.width, 'margin-bottom': '16px' });
                                        }
 
-                                       this.utils.saveScroll();
-                                       this.utils.disableBodyScroll();
+                                       // margin top
+                                       var height = this.$modal.outerHeight();
+                                       var top = (windowHeight/2 - height/2) + 'px';
 
-                               },
-                               showOnMobile: function()
-                               {
-                                       this.$modal.css({
-                                               width: '96%',
-                                               marginTop: '2%'
-                                       });
+                                       if (this.detect.isMobile())
+                                       {
+                                               top = '2%';
+                                       }
+                                       else if (height > windowHeight)
+                                       {
+                                               top = '16px';
 
+                                       }
 
-                                       this.utils.saveScroll();
+                                       this.$modal.css('margin-top', top);
                                },
-                               resize: function()
+                               buildTabber: function()
                                {
-                                       if (this.utils.isMobile())
+                                       this.modal.tabs = this.$modal.find('.redactor-modal-tab');
+
+                                       if (this.modal.tabs.length < 2)
                                        {
-                                               this.modal.showOnMobile();
+                                               return;
                                        }
-                                       else
+
+                                       this.modal.$tabsBox = $('<div id="redactor-modal-tabber" />');
+                                       $.each(this.modal.tabs, $.proxy(function(i,s)
                                        {
-                                               this.modal.showOnDesktop();
-                                       }
+                                               var a = $('<a href="#" rel="' + i + '" />').text($(s).attr('data-title'));
+
+                                               a.on('click', $.proxy(this.modal.showTab, this));
+
+                                               if (i === 0)
+                                               {
+                                                       a.addClass('active');
+                                               }
+
+                                               this.modal.$tabsBox.append(a);
+
+                                       }, this));
+
+                                       this.$modalBody.prepend(this.modal.$tabsBox);
+
+                               },
+                               showTab: function(e)
+                               {
+                                       e.preventDefault();
+
+                                       var $el = $(e.target);
+                                       var index = $el.attr('rel');
+
+                                       this.modal.tabs.hide();
+                                       this.modal.tabs.eq(index).show();
+
+                                       $('#redactor-modal-tabber').find('a').removeClass('active');
+                                       $el.addClass('active');
+
+                                       return false;
+
                                },
                                setTitle: function(title)
                                {
                                setContent: function()
                                {
                                        this.$modalBody.html(this.modal.getTemplate(this.modal.templateName));
+
+                                       this.modal.getCancelButton().on('mousedown', $.proxy(this.modal.close, this));
                                },
                                setDraggable: function()
                                {
                                        this.$modal.draggable({ handle: this.$modalHeader });
                                        this.$modalHeader.css('cursor', 'move');
                                },
-                               setEnter: function(e)
-                               {
-                                       if (e.which !== 13)
-                                       {
-                                               return;
-                                       }
-
-                                       e.preventDefault();
-                                       this.$modal.find('button.redactor-modal-action-btn').click();
-                               },
-                               createCancelButton: function()
-                               {
-                                       var button = $('<button>').addClass('redactor-modal-btn redactor-modal-close-btn').html(this.lang.get('cancel'));
-                                       button.on('click', $.proxy(this.modal.close, this));
-
-                                       this.$modalFooter.append(button);
-                               },
-                               createDeleteButton: function(label)
-                               {
-                                       return this.modal.createButton(label, 'delete');
-                               },
-                               createActionButton: function(label)
-                               {
-                                       return this.modal.createButton(label, 'action');
-                               },
-                               createButton: function(label, className)
-                               {
-                                       var button = $('<button>').addClass('redactor-modal-btn').addClass('redactor-modal-' + className + '-btn').html(label);
-                                       this.$modalFooter.append(button);
-
-                                       return button;
-                               },
-                               setButtonsWidth: function()
+                               setEnter: function(e)
                                {
-                                       var buttons = this.$modalFooter.find('button');
-                                       var buttonsSize = buttons.length;
-                                       if (buttonsSize === 0)
+                                       if (e.which !== 13)
                                        {
                                                return;
                                        }
 
-                                       buttons.css('width', (100/buttonsSize) + '%');
+                                       e.preventDefault();
+                                       this.modal.getActionButton().click();
                                },
                                build: function()
                                {
 
                                        this.$modalBox = $('<div id="redactor-modal-box"/>').hide();
                                        this.$modal = $('<div id="redactor-modal" role="dialog" />');
-                                       this.$modalHeader = $('<header id="redactor-modal-header" tabindex="1" />');
-                                       this.$modalClose = $('<button type="button" id="redactor-modal-close" tabindex="3" aria-label="' + this.lang.get('close') + '" />').html('&times;');
+                                       this.$modalHeader = $('<div id="redactor-modal-header" />');
+                                       this.$modalClose = $('<button type="button" id="redactor-modal-close" aria-label="' + this.lang.get('close') + '" />').html('&times;');
                                        this.$modalBody = $('<div id="redactor-modal-body" />');
-                                       this.$modalFooter = $('<footer />');
 
                                        this.$modal.append(this.$modalHeader);
                                        this.$modal.append(this.$modalBody);
-                                       this.$modal.append(this.$modalFooter);
                                        this.$modal.append(this.$modalClose);
                                        this.$modalBox.append(this.$modal);
                                        this.$modalBox.appendTo(document.body);
+
                                },
                                buildOverlay: function()
                                {
                                },
                                enableEvents: function()
                                {
-                                       this.$modalClose.on('click.redactor-modal', $.proxy(this.modal.close, this));
+                                       this.$modalClose.on('mousedown.redactor-modal', $.proxy(this.modal.close, this));
                                        $(document).on('keyup.redactor-modal', $.proxy(this.modal.closeHandler, this));
-                                       this.$editor.on('keyup.redactor-modal', $.proxy(this.modal.closeHandler, this));
+                                       this.core.editor().on('keyup.redactor-modal', $.proxy(this.modal.closeHandler, this));
                                        this.$modalBox.on('click.redactor-modal', $.proxy(this.modal.close, this));
                                },
                                disableEvents: function()
                                {
-                                       this.$modalClose.off('click.redactor-modal');
+                                       this.$modalClose.off('mousedown.redactor-modal');
                                        $(document).off('keyup.redactor-modal');
-                                       this.$editor.off('keyup.redactor-modal');
-                                       this.$modalBox.off('click.redactor-modal');
+                                       this.core.editor().off('keyup.redactor-modal');
+                                       this.$modalBox.off('click§.redactor-modal');
                                        $(window).off('resize.redactor-modal');
                                },
                                closeHandler: function(e)
                                {
                                        if (e)
                                        {
-                                               if (!$(e.target).hasClass('redactor-modal-close-btn') && e.target !== this.$modalClose[0] && e.target !== this.$modalBox[0])
+                                               if ($(e.target).attr('id') !== 'redactor-modal-button-cancel' && e.target !== this.$modalClose[0] && e.target !== this.$modalBox[0])
                                                {
                                                        return;
                                                }
                                        this.utils.enableBodyScroll();
                                        this.utils.restoreScroll();
 
-                                       this.$modalOverlay.fadeOut(500, $.proxy(function()
+                                       this.$modalOverlay.redactorAnimation('fadeOut', { duration: 0.4 }, $.proxy(function()
                                        {
                                                this.$modalOverlay.remove();
 
                                        }, this));
 
-                                       this.$modalBox.fadeOut(300, $.proxy(function()
+                                       this.$modal.redactorAnimation('fadeOut', {
+
+                                               duration: 0.3,
+                                               timing: 'cubic-bezier(0.175, 0.885, 0.320, 1.175)'
+
+                                       }, $.proxy(function()
                                        {
-                                               this.$modalBox.remove();
+                                               if (typeof this.$modalBox !== 'undefined')
+                                               {
+                                                       this.$modalBox.remove();
+                                                       this.$modalBox = undefined;
+                                               }
 
                                                $(document.body).css('overflow', this.modal.bodyOveflow);
                                                this.core.callback('modalClosed', this.modal.templateName);
 
                                        }, this));
 
-
                                }
                        };
                },
                                                return;
                                        }
 
-                                       // ie pre & code
-                                       if (this.browser.ie())
-                                       {
-                                               var self = this;
-                                               this.core.editor().find('pre, code').on('mouseover',function()
-                                               {
-                                                       self.events.stopDetect();
-                                                       self.core.editor().attr('contenteditable', false);
-                                                       $(this).attr('contenteditable', true);
-                                                       self.events.startDetect();
-
-                                               }).on('mouseout',function()
-                                               {
-                                                       self.events.stopDetect();
-                                                       self.core.editor().attr('contenteditable', true);
-                                                       $(this).removeAttr('contenteditable');
-                                                       self.events.startDetect();
-
-                                               });
-                                       }
-
-                                       this.observe.images();
                                        this.observe.links();
+                                       this.observe.images();
+
                                },
                                isCurrent: function($el, $current)
                                {
 
                                        return $current.is($el) || $current.parents($el).length > 0;
                                },
+                               toolbar: function()
+                               {
+                                       this.observe.buttons();
+                                       this.observe.dropdowns();
+                               },
+                               buttons: function(e, btnName)
+                               {
+                                       var current = this.selection.current();
+                                       var parent = this.selection.parent();
+
+                                       if (e !== false)
+                                       {
+                                               this.button.setInactiveAll();
+                                       }
+                                       else
+                                       {
+                                               this.button.setInactiveAll(btnName);
+                                       }
+
+                                       if (e === false && btnName !== 'html')
+                                       {
+                                               if ($.inArray(btnName, this.opts.activeButtons) !== -1)
+                                               {
+                                                       this.button.toggleActive(btnName);
+                                               }
+
+                                               return;
+                                       }
+
+                                       if (!this.utils.isRedactorParent(current))
+                                       {
+                                               return;
+                                       }
+
+                                       // disable line
+                                       if (this.utils.isCurrentOrParentHeader() || this.utils.isCurrentOrParent(['table', 'pre', 'blockquote', 'li']))
+                                       {
+                                               this.button.disable('horizontalrule');
+                                       }
+                                       else
+                                       {
+                                               this.button.enable('horizontalrule');
+                                       }
+
+
+                                       $.each(this.opts.activeButtonsStates, $.proxy(function(key, value)
+                                       {
+                                               var parentEl = $(parent).closest(key, this.$editor[0]);
+                                               var currentEl = $(current).closest(key, this.$editor[0]);
+
+                                               if (parentEl.length !== 0 && !this.utils.isRedactorParent(parentEl))
+                                               {
+                                                       return;
+                                               }
+
+                                               if (!this.utils.isRedactorParent(currentEl))
+                                               {
+                                                       return;
+                                               }
+
+                                               if (parentEl.length !== 0 || currentEl.closest(key, this.$editor[0]).length !== 0)
+                                               {
+                                                       this.button.setActive(value);
+                                               }
+
+                                       }, this));
+
+                               },
                                dropdowns: function()
                                {
                                        var $current = $(this.selection.current());
 
                                        if (typeof addProperties.title !== 'undefined')
                                        {
-                                               $item.text(addProperties.title);
+                                               $item.find('span').text(addProperties.title);
                                        }
                                },
                                setDropdownAttr: function($item, properties, isDelete)
                                },
                                images: function()
                                {
+
                                        this.core.editor().find('img').each($.proxy(function(i, img)
                                        {
                                                var $img = $(img);
                                                // IE fix (when we clicked on an image and then press backspace IE does goes to image's url)
                                                $img.closest('a', this.$editor[0]).on('click', function(e) { e.preventDefault(); });
 
-                                               if (this.browser.ie())
-                                               {
-                                                       $img.attr('unselectable', 'on');
-                                               }
-
                                                this.image.setEditable($img);
 
+
                                        }, this));
 
+
                                },
                                links: function()
                                {
                                        $('.redactor-link-tooltip').remove();
                                        $('body').append(tooltip);
                                },
+                               closeAllTooltip: function()
+                               {
+                                       $('.redactor-link-tooltip').remove();
+                               },
                                closeTooltip: function(e)
                                {
                                        e = e.originalEvent || e;
                                                return;
                                        }
 
-                                       $('.redactor-link-tooltip').remove();
+                                       this.observe.closeAllTooltip();
                                }
 
                        };
                },
 
+               // =offset
+               offset: function()
+               {
+                       return {
+                               get: function(node)
+                               {
+                                       var cloned = this.offset.clone(node);
+                                       if (cloned === false)
+                                       {
+                                               return 0;
+                                       }
+
+                                       var div = document.createElement('div');
+                                       div.appendChild(cloned.cloneContents());
+                                       div.innerHTML = div.innerHTML.replace(/<img(.*?[^>])>$/gi, 'i');
+
+                               var text = $.trim($(div).text()).replace(/[\t\n\r\n]/g, '').replace(/\u200B/g, '');
+
+                                       return text.length;
+
+                               },
+                               clone: function(node)
+                               {
+                                       var sel = this.selection.get();
+                                       var range = this.selection.range(sel);
+
+                                       if (range === null && typeof node === 'undefined')
+                                       {
+                                               return false;
+                                       }
+
+                                       node = (typeof node === 'undefined') ? this.$editor : node;
+                                       if (node === false)
+                                       {
+                                               return false;
+                                       }
+
+                                       node = node[0] || node;
+
+                                       var cloned = range.cloneRange();
+                                       cloned.selectNodeContents(node);
+                                       cloned.setEnd(range.endContainer, range.endOffset);
+
+                                       return cloned;
+                               },
+                               set: function(start, end)
+                               {
+                                       end = (typeof end === 'undefined') ? start : end;
+
+                                       if (!this.focus.is())
+                                       {
+                                               this.focus.start();
+                                       }
+
+                                       var sel = this.selection.get();
+                                       var range = this.selection.range(sel);
+                                       var node, offset = 0;
+                                       var walker = document.createTreeWalker(this.$editor[0], NodeFilter.SHOW_TEXT, null, null);
+
+                                       while ((node = walker.nextNode()) !== null)
+                                       {
+                                               offset += node.nodeValue.length;
+                                               if (offset > start)
+                                               {
+                                                       range.setStart(node, node.nodeValue.length + start - offset);
+                                                       start = Infinity;
+                                               }
+
+                                               if (offset >= end)
+                                               {
+                                                       range.setEnd(node, node.nodeValue.length + end - offset);
+                                                       break;
+                                               }
+                                       }
+
+                                       range.collapse(false);
+                                       this.selection.update(sel, range);
+                               }
+                       };
+               },
+
                // =paragraphize
                paragraphize: function()
                {
                                        this.paragraphize.safes = [];
                                        this.paragraphize.z = 0;
 
+                                       // before
                                        html = html.replace(/(<br\s?\/?>){1,}\n?<\/blockquote>/gi, '</blockquote>');
+                                       html = html.replace(/<\/pre>/gi, "</pre>\n\n");
 
                                        html = this.paragraphize.getSafes(html);
                                        html = this.paragraphize.convert(html);
                                        html = this.paragraphize.clear(html);
                                        html = this.paragraphize.restoreSafes(html);
 
+                                       // after
                                        html = html.replace(new RegExp('<br\\s?/?>\n?<(' + this.opts.paragraphizeBlocks.join('|') + ')(.*?[^>])>', 'gi'), '<p><br /></p>\n<$1$2>');
 
                                        return $.trim(html);
 
                                        html = '<p>' + html + '</p>';
 
-
                                        html = html.replace("<p></p>", "");
                                        html = html.replace("\r\n\r\n", "");
                                        html = html.replace(/<\/p><p>/g, "</p>\r\n\r\n<p>");
-                                       html = html.replace(new RegExp("<p><br />", "g"), "<p>");
-                                       html = html.replace(new RegExp("<p><br>", "g"), "<p>");
-                                       html = html.replace(new RegExp("<br></p>", "g"), "</p>");
+                                       html = html.replace(new RegExp("<br\\s?/?></p>", "g"), "</p>");
+                                       html = html.replace(new RegExp("<p><br\\s?/?>", "g"), "<p>");
+                                       html = html.replace(new RegExp("<p><br\\s?/?>", "g"), "<p>");
+                                       html = html.replace(new RegExp("<br\\s?/?></p>", "g"), "</p>");
                                        html = html.replace(/<p>&nbsp;<\/p>/gi, "");
+                                       html = html.replace(/<p>\s?<br>&nbsp;<\/p>/gi, '');
+                                       html = html.replace(/<p>\s?<br>/gi, '<p>');
 
                                        return html;
                                },
                                init: function(e)
                                {
                                        this.rtePaste = true;
+                                       var pre = (this.opts.type === 'pre' || this.utils.isCurrentOrParent('pre'));
 
-                                       e.preventDefault();
+                                       // clipboard event
+                                       if (!this.paste.pre && this.opts.clipboardImageUpload && this.opts.imageUpload && this.paste.detectClipboardUpload(e))
+                                       {
+                                               if (this.detect.isIe())
+                                               {
+                                                       setTimeout($.proxy(this.paste.clipboardUpload, this), 100);
+                                               }
+
+                                               return;
+                                       }
 
-                                       var data = ((e.originalEvent || e).clipboardData || window.clipboardData);
+                                       this.utils.saveScroll();
+                                       this.selection.save();
+                                       this.paste.createPasteBox(pre);
 
-                                       // get text
-                                       var html = data.getData('text/html') || data.getData('text');
-                                       var pre = false;
-                                       if (this.opts.type !== 'pre' && !this.utils.isCurrentOrParent('pre'))
+                                       $(window).on('scroll.redactor-freeze', $.proxy(function()
                                        {
-                                               // save links
-                                               html = html.replace(/<a(.*?)href="(.*?)"(.*?[^>])>(.*?)<\/a>/gi, '###a href="$2"###$4###/a###');
+                                               $(window).scrollTop(this.saveBodyScroll);
 
-                                               html = html.replace(/<!--[\s\S]*?-->/gi, '');
-                                               html = html.replace(/<style[\s\S]*?style>/gi, '');
-                                               html = html.replace(/<br\s?\/?>|<\/p>|<\/div>|<\/li>|<\/td>/gi, '\n');
-                                               html = html.replace(/<\/H[1-6]>/gi, '\n\n');
+                                       }, this));
 
-                                               var tmp = document.createElement('div');
-                                               tmp.innerHTML = html;
-                                               html = $.trim(tmp.textContent || tmp.innerText);
-                                       }
-                                       else
+                                       setTimeout($.proxy(function()
                                        {
-                                               pre = true;
+                                               var html = this.paste.getPasteBoxCode(pre);
+
+                                               // buffer
+                                               this.buffer.set();
+                                               this.selection.restore();
+                                               this.utils.restoreScroll();
+
+                                               // paste info
+                                               var data = this.clean.getCurrentType(html);
+
+                                               // clean
+                                               html = this.clean.onPaste(html, data);
+
+                                               // callback
+                                               var returned = this.core.callback('paste', html);
+                                               html = (typeof returned === 'undefined') ? html : returned;
 
-                                               // pre clean
-                                               html = html.replace(/^<meta charset='(.*?)'>/i, '');
+                                               this.paste.insert(html, data);
+                                               this.rtePaste = false;
 
-                                               if (html.match(/^<pre style="(.*?)">/i))
+                                               // clean pre breaklines
+                                               if (pre)
                                                {
-                                                       html = html.replace(/^<pre style="(.*?)">/i, '');
-                                                       html = html.replace(/<\/pre>$/i, '');
+                                                       this.clean.cleanPre();
                                                }
 
-                                       }
-
-                                       // clean
-                                       html = this.clean.onPaste(html);
+                                               $(window).off('scroll.redactor-freeze');
 
-                                       // revert links
-                                       html = html.replace(/###a href="(.*?)"###(.*?)###\/a###/gi, '<a href="$1">$2</a>');
+                                       }, this), 1);
 
-                                       // callback
-                                       var returned = this.core.callback('paste', html);
-                                       html = (typeof returned === 'undefined') ? html : returned;
+                               },
+                               getPasteBoxCode: function(pre)
+                               {
+                                       var html = (pre) ? this.$pasteBox.val() : this.$pasteBox.html();
+                                       this.$pasteBox.remove();
 
-                                       // buffer
-                                       this.buffer.set();
+                                       return html;
+                               },
+                               createPasteBox: function(pre)
+                               {
+                                       var css = { position: 'fixed', width: 0, top: 0, left: '-9999px' };
 
-                                       // insert
-                                       if (this.paste.text)
+                                       this.$pasteBox = (pre) ? $('<textarea>').val('').css(css) : $('<div>').html('').attr('contenteditable', 'true').css(css);
+                                       this.paste.appendPasteBox();
+                                       this.$pasteBox[0].focus();
+                               },
+                               appendPasteBox: function()
+                               {
+                                       if (this.detect.isIe())
                                        {
-                                               this.insert.text(html);
+                                               this.core.box().append(this.$pasteBox);
                                        }
                                        else
                                        {
-                                               this.insert.raw(html);
+                                               // bootstrap modal
+                                               var $visibleModals = $('.modal-body:visible');
+                                               if ($visibleModals.length > 0)
+                                               {
+                                                       $visibleModals.append(this.$pasteBox);
+                                               }
+                                               else
+                                               {
+                                                       $('body').append(this.$pasteBox);
+                                               }
                                        }
+                               },
+                               detectClipboardUpload: function(e)
+                               {
+                                       e = e.originalEvent || e;
+
+                                       var clipboard = e.clipboardData;
 
-                                       this.rtePaste = false;
+                                       if (this.detect.isIe())
+                                       {
+                                               return true;
+                                       }
 
-                                       // clean pre empty paragraph at the end
-                                       if (pre)
+                                       if (this.detect.isFirefox())
                                        {
-                                               var block = $(this.selection.block()).closest('pre', this.core.editor()[0]);
-                                               $(block).find('p').remove();
+                                               return false;
                                        }
 
-                               }
-                       };
-               },
+                                       // prevent safari fake url
+                                       var types = clipboard.types;
+                                       if (types.indexOf('public.tiff') !== -1)
+                                       {
+                                               e.preventDefault();
+                                               return false;
+                                       }
 
-               // =placeholder
-               placeholder: function()
-               {
-                       return {
-                               enable: function()
+
+                                       if (!clipboard.items || !clipboard.items.length)
+                                       {
+                                               return;
+                                       }
+
+                                       var file = clipboard.items[0].getAsFile();
+                                       if (file === null)
+                                       {
+                                               return false;
+                                       }
+
+                                       var reader = new FileReader();
+                                       reader.readAsDataURL(file);
+                                       reader.onload = $.proxy(this.paste.insertFromClipboard, this);
+
+                                       return true;
+                               },
+                               clipboardUpload: function()
+                               {
+                                       var imgs = this.$editor.find('img');
+                                       $.each(imgs, $.proxy(function(i,s)
+                                       {
+                                               if (s.src.search(/^data\:image/i) === -1)
+                                               {
+                                                       return;
+                                               }
+
+                                               var formData = !!window.FormData ? new FormData() : null;
+                                               if (!window.FormData)
+                                               {
+                                                       return;
+                                               }
+
+                                               this.buffer.set();
+
+                                               this.upload.direct = true;
+                                               this.upload.type = 'image';
+                                               this.upload.url = this.opts.imageUpload;
+                                               this.upload.callback = $.proxy(function(data)
+                                               {
+                                                       if (this.detect.isIe())
+                                                       {
+                                                               $(s).wrap($('<figure />'));
+                                                       }
+                                                       else
+                                                       {
+                                                               var $parent = $(s).parent();
+                                                               this.utils.replaceToTag($parent, 'figure');
+                                                       }
+
+
+                                                       s.src = data.filelink;
+                                                       this.core.callback('imageUpload', $(s), data);
+
+                                               }, this);
+
+                                               var blob = this.utils.dataURItoBlob(s.src);
+
+
+                                               formData.append('clipboard', 1);
+                                               formData.append(this.opts.imageUploadParam, blob);
+
+                                               this.progress.show();
+                                               this.upload.send(formData, false);
+                                               this.code.sync();
+
+                                       }, this));
+                               },
+                               insertFromClipboard: function(e)
                                {
-                                       if (!this.placeholder.is())
+                                       var formData = !!window.FormData ? new FormData() : null;
+                                       if (!window.FormData)
                                        {
                                                return;
                                        }
 
-                                       var position = this.core.editor().css('position');
-                                       var arr = ['absolute', 'fixed', 'relative'];
-                                       if ($.inArray(arr, position) === -1)
+                                       this.buffer.set();
+
+                                       this.upload.direct = true;
+                                       this.upload.type = 'image';
+                                       this.upload.url = this.opts.imageUpload;
+                                       this.upload.callback = this.image.insert;
+
+                                       var blob = this.utils.dataURItoBlob(e.target.result);
+
+                                       formData.append('clipboard', 1);
+                                       formData.append(this.opts.imageUploadParam, blob);
+
+                                       this.progress.show();
+                                       this.upload.send(formData, e);
+                               },
+                               insert: function(html, data)
+                               {
+                                       if (data.pre)
+                                       {
+                                               this.insert.raw(html);
+                                       }
+                                       else if (data.text)
+                                       {
+                                               this.insert.text(html);
+                                       }
+                                       else
+                                       {
+                                               this.insert.html(html, data);
+                                       }
+
+                                       // Firefox Clipboard Observe
+                                       if (this.detect.isFirefox() && this.opts.clipboardImageUpload)
                                        {
-                                               this.core.editor().addClass('redactor-relative');
+                                               setTimeout($.proxy(this.paste.clipboardUpload, this), 100);
                                        }
 
-                                       var top = this.core.editor().css('padding-top');
-                                       var left = this.core.editor().css('padding-left');
-                                       $('<style class="redactor-style-tag">#' + this.core.id() + '.redactor-placeholder::after{ top: ' + top + '; left: ' + left + '; }</style>').appendTo('head');
+                               }
+                       };
+               },
 
-                                       this.core.editor().attr('placeholder', this.$element.attr('placeholder'));
+               // =placeholder
+               placeholder: function()
+               {
+                       return {
 
-                                       this.placeholder.toggle();
-                                       this.core.editor().on('keydown.redactor-placeholder', $.proxy(this.placeholder.toggle, this));
-                               },
-                               toggle: function()
+                               // public
+                               enable: function()
                                {
                                        setTimeout($.proxy(function()
                                        {
-                                               var func = this.utils.isEmpty() ? 'addClass' : 'removeClass';
-                                               this.core.editor()[func]('redactor-placeholder');
+                                               return (this.placeholder.isEditorEmpty()) ? this.placeholder.show() : this.placeholder.hide();
 
                                        }, this), 5);
                                },
-                               remove: function()
+                               show: function()
+                               {
+                                       this.core.editor().addClass('redactor-placeholder');
+                               },
+                               update: function(text)
+                               {
+                                       this.opts.placeholder = text;
+                                       this.core.editor().attr('placeholder', text);
+                               },
+                               hide: function()
                                {
                                        this.core.editor().removeClass('redactor-placeholder');
                                },
                                is: function()
                                {
-                                       if (this.opts.placeholder)
+                                       return this.core.editor().hasClass('redactor-placeholder');
+                               },
+
+
+                               // private
+                               init: function()
+                               {
+                                       if (!this.placeholder.enabled())
                                        {
-                                               return this.$element.attr('placeholder', this.opts.placeholder);
+                                               return;
                                        }
-                                       else
+
+                                       if (!this.utils.isEditorRelative())
                                        {
-                                               return !(typeof this.$element.attr('placeholder') === 'undefined' || this.$element.attr('placeholder') === '');
+                                               this.utils.setEditorRelative();
                                        }
+
+                                       this.placeholder.build();
+                                       this.placeholder.buildPosition();
+                                       this.placeholder.enable();
+                                       this.placeholder.enableEvents();
+
+                               },
+                               enabled: function()
+                               {
+                                       return (this.opts.placeholder) ? this.core.element().attr('placeholder', this.opts.placeholder) : this.placeholder.isAttr();
+                               },
+                               enableEvents: function()
+                               {
+                                       this.core.editor().on('keydown.redactor-placeholder.' + this.uuid, $.proxy(this.placeholder.enable, this));
+                               },
+                               disableEvents: function()
+                               {
+                                       this.core.editor().off('.redactor-placeholder.' + this.uuid);
+                               },
+                               build: function()
+                               {
+                                       this.core.editor().attr('placeholder', this.core.element().attr('placeholder'));
+                               },
+                               buildPosition: function()
+                               {
+                                       var $style = $('<style />');
+                                       $style.addClass('redactor-placeholder-style-tag');
+                                       $style.html('#' + this.core.id() + '.redactor-placeholder::after ' + this.placeholder.getPosition());
+
+                                       $('head').append($style);
+                               },
+                               getPosition: function()
+                               {
+                                       return '{ top: ' + this.core.editor().css('padding-top') + '; left: ' + this.core.editor().css('padding-left') + '; }';
+                               },
+                               isEditorEmpty: function()
+                               {
+                                       var html = $.trim(this.core.editor().html()).replace(/[\t\n]/g, '');
+                                       var states = ['', '<p>​</p>', '<p>​<br></p>'];
+
+                                       return ($.inArray(html, states) !== -1);
+                               },
+                               isAttr: function()
+                               {
+                                       return (typeof this.core.element().attr('placeholder') !== 'undefined' && this.core.element().attr('placeholder') !== '');
+                               },
+                               destroy: function()
+                               {
+                                       this.core.editor().removeAttr('placeholder');
+
+                                       this.placeholder.hide();
+                                       this.placeholder.disableEvents();
+
+                                       $('.redactor-placeholder-style-tag').remove();
                                }
                        };
                },
                progress: function()
                {
                        return {
+                               $box: null,
+                               $bar: null,
+                               target: document.body,  // or id selector
+
+                               // public
                                show: function()
                                {
-                                       $(document.body).append($('<div id="redactor-progress"><span></span></div>'));
-                                       $('#redactor-progress').fadeIn();
+                                       if (!this.progress.is())
+                                       {
+                                               this.progress.build();
+                                               this.progress.$box.redactorAnimation('fadeIn');
+                                       }
+                                       else
+                                       {
+                                               this.progress.$box.show();
+                                       }
                                },
                                hide: function()
                                {
-                                       $('#redactor-progress').fadeOut(1500, function()
+                                       if (this.progress.is())
                                        {
-                                               $(this).remove();
-                                       });
-                               }
+                                               this.progress.$box.redactorAnimation('fadeOut', { duration: 0.35 }, $.proxy(this.progress.destroy, this));
+                                       }
+                               },
+                               update: function(value)
+                               {
+                                       this.progress.show();
+                                       this.progress.$bar.css('width', value + '%');
+                               },
+                               is: function()
+                               {
+                                       return (this.progress.$box === null) ? false : true;
+                               },
+
+                               // private
+                               build: function()
+                               {
+                                       this.progress.$bar = $('<span />');
+                                       this.progress.$box = $('<div id="redactor-progress" />');
 
+                                       this.progress.$box.append(this.progress.$bar);
+                                       $(this.progress.target).append(this.progress.$box);
+                               },
+                               destroy: function()
+                               {
+                                       if (this.progress.is())
+                                       {
+                                               this.progress.$box.remove();
+                                       }
+
+                                       this.progress.$box = null;
+                                       this.progress.$bar = null;
+                               }
                        };
                },
 
 
                                        return null;
                                },
+                               is: function()
+                               {
+                                       return (this.selection.isCollapsed()) ? false : true;
+                               },
+                               isRedactor: function()
+                               {
+                                       var range = this.selection.range();
+
+                                       if (range !== null)
+                                       {
+                                               var el = range.startContainer.parentNode;
+
+                                               if ($(el).hasClass('redactor-in') || $(el).parents('.redactor-in').length !== 0)
+                                               {
+                                                       return true;
+                                               }
+                                       }
+
+                                       return false;
+                               },
+                               isCollapsed: function()
+                               {
+                                       var sel = this.selection.get();
+
+                                       return (sel === null) ? false : sel.isCollapsed;
+                               },
                                update: function(sel, range)
                                {
                                        if (range === null)
 
                                        return (current === null) ? false : this.selection.current().nextSibling;
                                },
-                               blocks: function()
+                               blocks: function(tag)
                                {
                                        var blocks = [];
-                                       var nodes = this.selection.nodes();
+                                       var nodes = this.selection.nodes(tag);
 
                                        $.each(nodes, $.proxy(function(i,node)
                                        {
 
                                        }, this));
 
-                                       return (blocks.length === 0) ? [this.selection.block()] : blocks;
+                                       var block = this.selection.block();
+                                       if (blocks.length === 0 && block === false)
+                                       {
+                                               return [];
+                                       }
+                                       else if (blocks.length === 0 && block !== false)
+                                       {
+                                               return [block];
+                                       }
+                                       else
+                                       {
+                                               return blocks;
+                                       }
+
                                },
-                               inlines: function()
+                               inlines: function(tag)
                                {
                                        var inlines = [];
-                                       var nodes = this.selection.nodes();
+                                       var nodes = this.selection.nodes(tag);
 
                                        $.each(nodes, $.proxy(function(i,node)
                                        {
 
                                        }, this));
 
-                                       return (inlines.length === 0) ? [this.selection.inline()] : inlines;
+                                       var inline = this.selection.inline();
+                                       if (inlines.length === 0 && inline === false)
+                                       {
+                                               return [];
+                                       }
+                                       else if (inlines.length === 0 && inline !== false)
+                                       {
+                                               return [inline];
+                                       }
+                                       else
+                                       {
+                                               return inlines;
+                                       }
                                },
-                               nodes: function()
+                               nodes: function(tag)
                                {
+                                       var filter = (typeof tag === 'undefined') ? [] : (($.isArray(tag)) ? tag : [tag]);
+
                                        var sel = this.selection.get();
                                        var range = this.selection.range(sel);
                                        if (this.utils.isCollapsed())
                                                var resultNodes = [];
                                                $.each(nodes, function(i,s)
                                                {
-                                                       if (!$(s).hasClass('redactor-script-tag, redactor-selection-marker'))
+                                                       var tagName = (s.nodeType !== 1) ? false : s.tagName.toLowerCase();
+                                                       if ($(s).hasClass('redactor-script-tag, redactor-selection-marker'))
+                                                       {
+                                                               return;
+                                                       }
+                                                       else if (tagName && filter.length !== 0 && $.inArray(tagName, filter) === -1)
+                                                       {
+                                                               return;
+                                                       }
+                                                       else
                                                        {
                                                                resultNodes.push(s);
                                                        }
                                                });
 
-                                               return (resultNodes.length === 0) ? [false] : resultNodes;
+                                               return (resultNodes.length === 0) ? [] : resultNodes;
                                        }
 
                                },
                                },
                                save: function()
                                {
-                                       var sel = this.selection.get();
-                                       var range = this.selection.range(sel);
-                                       var node1 = this.selection.marker(1);
-
-                                       this.insert.marker(range, node1, true);
-                                       if (range && range.collapsed === false)
-                                       {
-                                               var node2 = this.selection.marker(2);
-                                               this.insert.marker(range, node2, false);
-                                       }
-
+                                       this.marker.insert();
                                        this.savedSel = this.core.editor().html();
                                },
                                restore: function(removeMarkers)
                                {
-                                       var node1 = this.core.editor().find('span#selection-marker-1');
-                                       var node2 = this.core.editor().find('span#selection-marker-2');
+                                       var node1 = this.marker.find(1);
+                                       var node2 = this.marker.find(2);
 
-                                       if (this.browser.ff())
+                                       if (this.detect.isFirefox())
                                        {
                                                this.core.editor().focus();
                                        }
 
                                        if (removeMarkers !== false)
                                        {
-                                               this.selection.removeMarkers();
+                                               this.marker.remove();
                                                this.savedSel = false;
                                        }
 
                                },
-                               removeMarkers: function()
-                               {
-                                       this.core.editor().find('.redactor-selection-marker').each(function(i,s)
-                                       {
-                                               var text = $(s).text().replace(/\u200B/g, '');
-                                               if (text === '')
-                                               {
-                                                       $(s).remove();
-                                               }
-                                               else
-                                               {
-                                                       $(s).replaceWith(function() { return $(this).contents(); });
-                                               }
-                                       });
-                               },
-                               marker: function(num)
-                               {
-                                       if (typeof num === 'undefined')
-                                       {
-                                               num = 1;
-                                       }
-
-                                       return $('<span id="selection-marker-' + num + '" class="redactor-selection-marker"  data-verified="redactor">' + this.opts.invisibleSpace + '</span>')[0];
-                               },
-                               markerHtml: function(num)
-                               {
-                                       return this.utils.getOuterHtml(this.selection.marker(num));
-                               },
                                node: function(node)
                                {
-                                       $(node).prepend(this.selection.marker(1));
-                                       $(node).append(this.selection.marker(2));
+                                       $(node).prepend(this.marker.get(1));
+                                       $(node).append(this.marker.get(2));
 
                                        this.selection.restore();
                                },
                                        }
 
                                        return html;
+                               },
+                               extractEndOfNode: function(node)
+                               {
+                                       var sel = this.selection.get();
+                                       var range = this.selection.range(sel);
+
+                               var clonedRange = range.cloneRange();
+                               clonedRange.selectNodeContents(node);
+                               clonedRange.setStart(range.endContainer, range.endOffset);
+
+                               return clonedRange.extractContents();
+                               },
+
+                               // #backward
+                               removeMarkers: function()
+                               {
+                                       this.marker.remove();
+                               },
+                               marker: function(num)
+                               {
+                                       return this.marker.get(num);
+                               },
+                               markerHtml: function(num)
+                               {
+                                       return this.marker.html(num);
                                }
 
                        };
                shortcuts: function()
                {
                        return {
+                               // based on https://github.com/jeresig/jquery.hotkeys
+                               hotkeysSpecialKeys: {
+                                       8: "backspace", 9: "tab", 10: "return", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
+                                       20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
+                                       37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del", 59: ";", 61: "=",
+                                       96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
+                                       104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
+                                       112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
+                                       120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 173: "-", 186: ";", 187: "=",
+                                       188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'"
+                               },
+                               hotkeysShiftNums: {
+                                       "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
+                                       "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
+                                       ".": ">",  "/": "?",  "\\": "|"
+                               },
                                init: function(e, key)
                                {
-                                       // disable browser's hot keys for bold and italic
-                                       if (!this.opts.shortcuts)
+                                       // disable browser's hot keys for bold and italic if shortcuts off
+                                       if (this.opts.shortcuts === false)
                                        {
                                                if ((e.ctrlKey || e.metaKey) && (key === 66 || key === 73))
                                                {
 
                                                return false;
                                        }
-
-
-                                       $.each(this.opts.shortcuts, $.proxy(function(str, command)
+                                       else
                                        {
-                                               var keys = str.split(',');
-                                               var len = keys.length;
-                                               var handler = $.proxy(function()
+                                               // build
+                                               $.each(this.opts.shortcuts, $.proxy(function(str, command)
                                                {
-                                                       var func;
-                                                       if (command.func.search(/\./) !== '-1')
-                                                       {
-                                                               func = command.func.split('.');
-                                                               if (typeof this[func[0]] !== 'undefined')
-                                                               {
-                                                                       this[func[0]][func[1]].apply(this, command.params);
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               this[command.func].apply(this, command.params);
-                                                       }
+                                                       this.shortcuts.build(e, str, command);
 
-                                               }, this);
+                                               }, this));
+                                       }
+                               },
+                               build: function(e, str, command)
+                               {
+                                       var handler = $.proxy(function()
+                                       {
+                                               this.shortcuts.buildHandler(command);
 
-                                               for (var i = 0; i < len; i++)
-                                               {
-                                                       if (typeof keys[i] === 'string')
-                                                       {
-                                                               this.shortcuts.handler(e, $.trim(keys[i]), handler);
-                                                       }
+                                       }, this);
 
+                                       var keys = str.split(',');
+                                       var len = keys.length;
+                                       for (var i = 0; i < len; i++)
+                                       {
+                                               if (typeof keys[i] === 'string')
+                                               {
+                                                       this.shortcuts.handler(e, $.trim(keys[i]), handler);
                                                }
+                                       }
 
-                                       }, this));
                                },
-                               handler: function(e, keys, origHandler)
+                               buildHandler: function(command)
                                {
-                                       // based on https://github.com/jeresig/jquery.hotkeys
-                                       var hotkeysSpecialKeys =
-                                       {
-                                               8: "backspace", 9: "tab", 10: "return", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
-                                               20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
-                                               37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del", 59: ";", 61: "=",
-                                               96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
-                                               104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
-                                               112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
-                                               120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 173: "-", 186: ";", 187: "=",
-                                               188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'"
-                                       };
-
-
-                                       var hotkeysShiftNums =
+                                       var func;
+                                       if (command.func.search(/\./) !== '-1')
                                        {
-                                               "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
-                                               "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
-                                               ".": ">",  "/": "?",  "\\": "|"
-                                       };
-
+                                               func = command.func.split('.');
+                                               if (typeof this[func[0]] !== 'undefined')
+                                               {
+                                                       this[func[0]][func[1]].apply(this, command.params);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               this[command.func].apply(this, command.params);
+                                       }
+                               },
+                               handler: function(e, keys, origHandler)
+                               {
                                        keys = keys.toLowerCase().split(" ");
-                                       var special = hotkeysSpecialKeys[e.keyCode],
-                                               character = String.fromCharCode( e.which ).toLowerCase(),
-                                               modif = "", possible = {};
+
+                                       var special = this.shortcuts.hotkeysSpecialKeys[e.keyCode];
+                                       var character = String.fromCharCode(e.which).toLowerCase();
+                                       var modif = "", possible = {};
 
                                        $.each([ "alt", "ctrl", "meta", "shift"], function(index, specialKey)
                                        {
                                        if (character)
                                        {
                                                possible[modif + character] = true;
-                                               possible[modif + hotkeysShiftNums[character]] = true;
+                                               possible[modif + this.shortcuts.hotkeysShiftNums[character]] = true;
 
                                                // "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
                                                if (modif === "shift+")
                                                {
-                                                       possible[hotkeysShiftNums[character]] = true;
+                                                       possible[this.shortcuts.hotkeysShiftNums[character]] = true;
                                                }
                                        }
 
-                                       for (var i = 0, len = keys.length; i < len; i++)
+                                       var len = keys.length;
+                                       for (var i = 0; i < len; i++)
                                        {
                                                if (possible[keys[i]])
                                                {
                        };
                },
 
-               // =toolbar
-               toolbar: function()
+               // =storage
+               storage: function()
                {
                        return {
-                               custom: function()
+                               data: [],
+                               add: function(data)
+                               {
+                                       // type, node, url, id
+                                       data.status = true;
+                                       data.url = decodeURI(this.link.removeSelfHostFromUrl(data.url));
+
+                                       this.storage.data[data.url] = data;
+                               },
+                               status: function(url, status)
+                               {
+                                       this.storage.data[decodeURI(url)].status = status;
+                               },
+                               observe: function()
                                {
-                                       $(document).find('[data-cmd]').each($.proxy(function(i,s)
+                                       var _this = this;
+
+                                       var $images = this.core.editor().find('[data-image]');
+                                       $images.each(function(i, s)
                                        {
-                                               var $el = $(s);
-                                               var func = $el.data('cmd');
-                                               var args = $el.data('args');
+                                               _this.storage.add({ type: 'image', node: s, url: s.src, id: $(s).attr('data-image') });
+                                       });
 
-                                               $el.addClass('redactor-data-cmd');
-                                               $el.on('click.redactor-data-cmd', $.proxy(function(e)
-                                               {
-                                                       e.preventDefault();
+                                       var $files = this.core.editor().find('[data-file]');
+                                       $files.each(function(i, s)
+                                       {
+                                               _this.storage.add({ type: 'file', node: s, url: s.href, id: $(s).attr('data-file') });
+                                       });
 
-                                                       if (func === 'func')
-                                                       {
-                                                               var fn = window[args];
-                                                               if (typeof fn === 'function')
-                                                               {
-                                                                       fn.call(this, $el, e);
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               var cmd = func.split('.');
-                                                               if (typeof this[cmd[0]] !== 'undefined')
-                                                               {
-                                                                       if (!$.isArray(args))
-                                                                       {
-                                                                               args = (args) ? args.split('|') : undefined;
-                                                                       }
+                                       var $s3 = this.core.editor().find('[data-s3]');
+                                       $s3.each(function(i, s)
+                                       {
+                                               var url = (s.tagName === 'IMG') ? s.src : s.href;
+                                               _this.storage.add({ type: 's3', node: s, url: url, id: $(s).attr('data-s3') });
+                                       });
 
-                                                                       this[cmd[0]][cmd[1]].apply(this, args);
-                                                               }
+                               },
+                               changes: function()
+                               {
+                                       for (var key in this.storage.data)
+                                       {
+                                               var data = this.storage.data[key];
+                                               var attr = (data.node.tagName === 'IMG') ? 'src' : 'href';
+                                               var $el = this.core.editor().find('[data-' + data.type + '][' + attr + '="' + data.url + '"]');
 
-                                                       }
+                                               if ($el.length === 0)
+                                               {
+                                                       this.storage.status(data.url, false);
+                                               }
+                                               else
+                                               {
+                                                       this.storage.status(data.url, true);
+                                               }
+                                       }
 
-                                               }, this));
 
+                                       return this.storage.data;
+                               }
+
+                       };
+               },
 
-                                       }, this));
-                               },
+               // =toolbar
+               toolbar: function()
+               {
+                       return {
                                build: function()
                                {
                                        this.button.hideButtons();
 
                                        this.$toolbar = this.toolbar.createContainer();
 
-                                       this.toolbar.setOverflow();
                                        this.toolbar.append();
                                        this.button.$toolbar = this.$toolbar;
                                        this.button.setFormatting();
                                        this.button.load(this.$toolbar);
                                        this.toolbar.setFixed();
+
                                },
                                createContainer: function()
                                {
 
                                        }
                                },
-                               setOverflow: function()
-                               {
-                                       if (this.utils.isMobile() || this.opts.toolbarOverflow)
-                                       {
-                                               this.$toolbar.addClass('redactor-toolbar-overflow');
-                                       }
-                               },
                                setFixed: function()
                                {
-                                       if (!this.utils.isDesktop() || !this.opts.toolbarFixed || this.opts.toolbarExternal)
+                                       if (!this.opts.toolbarFixed || this.opts.toolbarExternal)
                                        {
                                                return;
                                        }
 
                                        setTimeout($.proxy(function()
                                        {
-                                               this.toolbar.observeScroll();
-                                               $(this.opts.toolbarFixedTarget).on('scroll.redactor.' + this.uuid, $.proxy(this.toolbar.observeScroll, this));
+                                               this.toolbar.observeScroll(false);
+                                               if (this.detect.isDesktop())
+                                               {
+                                                       $(this.opts.toolbarFixedTarget).on('scroll.redactor.' + this.uuid, $.proxy(this.toolbar.observeScroll, this));
+                                               }
+                                               else
+                                               {
+                                                       var self = this;
+                                                       $(this.opts.toolbarFixedTarget).on('scroll.redactor.' + this.uuid, function()
+                                                       {
+                                                               self.core.toolbar().hide();
+                                                               clearTimeout($.data(this, "scrollCheck" ) );
+                                                               $.data( this, "scrollCheck", setTimeout(function()
+                                                               {
+                                                                       self.core.toolbar().show();
+                                                                       self.toolbar.observeScroll();
+                                                               }, 250) );
 
-                                       }, this), late);
+                                                       });
+                                               }
 
+                                       }, this), late);
 
                                },
                                getBoxTop: function()
                                {
                                        return (this.opts.toolbarFixedTarget === document) ? this.core.box().offset().top : this.toolbarOffsetTop;
                                },
-                               observeScroll: function()
+                               observeScroll: function(start)
                                {
+                                       // tolerance 0 if redactor in the hidden layer
+                                       var tolerance = 0;
+
+                                       if (start !== false)
+                                       {
+                                               tolerance = (this.opts.toolbarFixedTarget === document) ? 20 : 0;
+                                       }
 
-                                       var tolerance = (this.opts.toolbarFixedTarget === document) ? 20 : 0;
                                        var scrollTop = $(this.opts.toolbarFixedTarget).scrollTop();
                                        var boxTop = this.toolbar.getBoxTop();
 
+
                                        if ((scrollTop + this.opts.toolbarFixedTopOffset + tolerance) > boxTop)
                                        {
                                                this.toolbar.observeScrollEnable(scrollTop, boxTop);
 
                                        var end = boxTop + this.core.box().outerHeight() - 32;
                                        var width = this.core.box().innerWidth();
-                                       var position = 'fixed';
-                                       var top = this.opts.toolbarFixedTopOffset;
-                                       var left = this.core.box().offset().left;
+
+                                       var position = (this.detect.isDesktop()) ? 'fixed' : 'absolute';
+                                       var top = (this.detect.isDesktop()) ? this.opts.toolbarFixedTopOffset : ($(this.opts.toolbarFixedTarget).scrollTop() - boxTop);
+                                       var left = (this.detect.isDesktop()) ? this.core.box().offset().left : 0;
 
                                        if (this.opts.toolbarFixedTarget !== document)
                                        {
                                                 position = 'absolute';
-                                                top = this.opts.toolbarFixedTopOffset + $(this.opts.toolbarFixedTarget).scrollTop() - boxTop - 1;
+                                                top = this.opts.toolbarFixedTopOffset + $(this.opts.toolbarFixedTarget).scrollTop() - boxTop;
                                                 left = 0;
                                        }
 
                                        this.$toolbar.addClass('toolbar-fixed-box');
+
                                        this.$toolbar.css({
                                                position: position,
                                                width: width,
                                                left: left
                                        });
 
+
                                        if (scrollTop > end)
                                        {
                                                $('.redactor-dropdown-' + this.uuid + ':visible').hide();
                                        this.$toolbar.css({
                                                position: 'relative',
                                                width: 'auto',
-                                               top: '-1px',
+                                               top: 0,
                                                left: 0,
                                                visibility: 'visible'
                                        });
                                },
                                setDropdownsFixed: function()
                                {
-                                       var position = (this.opts.toolbarFixedTarget === document) ? 'fixed' : 'absolute';
+                                       var position = (this.opts.toolbarFixedTarget === document && this.detect.isDesktop()) ? 'fixed' : 'absolute';
                                        this.toolbar.setDropdownPosition(position);
                                },
                                unsetDropdownsFixed: function()
                                        e = e.originalEvent || e;
                                        var files = e.dataTransfer.files;
 
-                                       this.upload.traverseFile(files[0], e);
+                                       if (this.opts.multipleImageUpload)
+                                       {
+                                               var len = files.length;
+                                               for (var i = 0; i < len; i++)
+                                               {
+                                                       this.upload.traverseFile(files[i], e);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               this.upload.traverseFile(files[0], e);
+                                       }
                                },
                                traverseFile: function(file, e)
                                {
                                        if (this.opts.s3)
                                        {
                                                this.upload.setConfig(file);
-                                               this.uploads3.send(file);
+                                               this.uploads3.send(file, e);
                                                return;
                                        }
 
                                getType: function(file)
                                {
                                        this.upload.type = (this.opts.imageTypes.indexOf(file.type) === -1) ? 'file' : 'image';
+
+                                       if (this.opts.imageUpload === null && this.opts.fileUpload !== null)
+                                       {
+                                               this.upload.type = 'file';
+                                       }
                                },
                                getHiddenFields: function(obj, fd)
                                {
                                        // append hidden fields
                                        if (this.upload.type === 'image')
                                        {
-                                               formData = this.upload.getHiddenFields(this.opts.uploadImageFields, formData);
+                                               formData = this.utils.appendFields(this.opts.imageUploadFields, formData);
+                                               formData = this.utils.appendForms(this.opts.imageUploadForms, formData);
                                                formData = this.upload.getHiddenFields(this.upload.imageFields, formData);
                                        }
                                        else
                                        {
-                                               formData = this.upload.getHiddenFields(this.opts.uploadFileFields, formData);
+                                               formData = this.utils.appendFields(this.opts.fileUploadFields, formData);
+                                               formData = this.utils.appendForms(this.opts.fileUploadForms, formData);
                                                formData = this.upload.getHiddenFields(this.upload.fileFields, formData);
                                        }
 
                                            }
                                        }, this);
 
-
-                                       /*
-                                       xhr.upload.onprogress = $.proxy(function(e)
-                                       {
-                                               if (e.lengthComputable)
-                                               {
-                                                       var complete = (e.loaded / e.total * 100 | 0);
-                                                       //progress.value = progress.innerHTML = complete;
-                                               }
-
-                                       }, this);
-                                       */
-
-
                                        xhr.send(formData);
                                },
                                onDrag: function(e)
                uploads3: function()
                {
                        return {
-                               send: function(file)
+                               send: function(file, e)
                                {
                                        this.uploads3.executeOnSignedUrl(file, $.proxy(function(signedURL)
                                        {
-                                               this.uploads3.sendToS3(file, signedURL);
+                                               this.uploads3.sendToS3(file, signedURL, e);
                                        }, this));
                                },
                                executeOnSignedUrl: function(file, callback)
                                {
                                        var xhr = new XMLHttpRequest();
-                                       var mark = (this.opts.s3.search(/\?/) !== '-1') ? '?' : '&';
-
+                                       var mark = (this.opts.s3.search(/\?/) === -1) ? '?' : '&';
 
                                        xhr.open('GET', this.opts.s3 + mark + 'name=' + file.name + '&type=' + file.type, true);
 
-                                       // Hack to pass bytes through unprocessed.
+                                       // hack to pass bytes through unprocessed.
                                        if (xhr.overrideMimeType)
                                        {
                                                xhr.overrideMimeType('text/plain; charset=x-user-defined');
                                                        that.progress.show();
                                                        callback(decodeURIComponent(this.responseText));
                                                }
-                                               else if (this.readyState === 4 && this.status !== 200)
-                                               {
-                                                       //setProgress(0, 'Could not contact signing script. Status = ' + this.status);
-                                               }
                                        };
 
                                        xhr.send();
 
                                        return xhr;
                                },
-                               sendToS3: function(file, url)
+                               sendToS3: function(file, url, e)
                                {
                                        var xhr = this.uploads3.createCORSRequest('PUT', url);
                                        if (!xhr)
                                        {
-                                               //setProgress(0, 'CORS not supported');
                                                return;
                                        }
 
                                        xhr.onload = $.proxy(function()
                                        {
+                                               var json;
+
+                                               this.progress.hide();
+
                                                if (xhr.status !== 200)
                                                {
-                                                       //setProgress(0, 'Upload error: ' + xhr.status);
+                                                       // error
+                                                       json = { error: true };
+                                                       this.upload.callback(json, this.upload.direct, xhr);
+
                                                        return;
                                                }
 
-                                               //setProgress(100, 'Upload completed.');
-
-                                               this.progress.hide();
-
                                                var s3file = url.split('?');
 
                                                if (!s3file[0])
                                                        this.upload.$droparea.removeClass('drag-drop');
                                                }
 
-                                               var json = { filelink: s3file[0] };
+                                               json = { url: s3file[0], id: s3file[0], s3: true };
                                                if (this.upload.type === 'file')
                                                {
                                                        var arr = s3file[0].split('/');
-                                                       json.filename = arr[arr.length-1];
+                                                       json.name = arr[arr.length-1];
                                                }
 
-                                               this.upload.callback(json, this.upload.direct, false);
+                                               this.upload.callback(json, this.upload.direct, e);
 
 
                                        }, this);
                                                return (typeof obj === "object") && (obj.nodeType === 1) && (typeof obj.style === "object") && (typeof obj.ownerDocument === "object");
                                        }
                                },
-                               isMobile: function()
+                               strpos: function(haystack, needle, offset)
                                {
-                                       return /(iPhone|iPod|BlackBerry|Android)/.test(navigator.userAgent);
+                                       var i = haystack.indexOf(needle, offset);
+                                       return i >= 0 ? i : false;
                                },
-                               isDesktop: function()
+                               dataURItoBlob: function(dataURI)
                                {
-                                       return !/(iPhone|iPod|iPad|BlackBerry|Android)/.test(navigator.userAgent);
+                                       var byteString;
+                                       if (dataURI.split(',')[0].indexOf('base64') >= 0)
+                                       {
+                                               byteString = atob(dataURI.split(',')[1]);
+                                       }
+                                       else
+                                       {
+                                               byteString = unescape(dataURI.split(',')[1]);
+                                       }
+
+                                       var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
+
+                                       var ia = new Uint8Array(byteString.length);
+                                       for (var i = 0; i < byteString.length; i++)
+                                       {
+                                               ia[i] = byteString.charCodeAt(i);
+                                       }
+
+                                       return new Blob([ia], { type:mimeString });
                                },
                                getOuterHtml: function(el)
                                {
                                        return $('<div>').append($(el).eq(0).clone()).html();
                                },
+                               cloneAttributes: function(from, to)
+                               {
+                                       from = from[0] || from;
+                                       to = $(to);
+
+                                       var attrs = from.attributes;
+                                       var len = attrs.length;
+                                       while (len--)
+                                       {
+                                           var attr = attrs[len];
+                                           to.attr(attr.name, attr.value);
+                                       }
+
+                                       return to;
+                               },
+                               breakBlockTag: function()
+                               {
+                                       var block = this.selection.block();
+
+                                       if (this.utils.isStartOfElement(block))
+                                       {
+                                               return { $block: $(block), $next: $(block).next(), type: 'start' };
+                                       }
+                                       else if (this.utils.isEndOfElement(block))
+                                       {
+                                               return { $block: $(block), $next: $(block).next(), type: 'end' };
+                                       }
+                                       else
+                                       {
+                                               var tag = block.tagName.toLowerCase();
+                                               if (tag === 'pre' || tag === 'li' || tag === 'td' || tag === 'th')
+                                               {
+                                                       return false;
+                                               }
+
+                                               var endOfNode = this.selection.extractEndOfNode(block);
+                                               var $nextPart = $('<' + tag + ' />').append(endOfNode);
+
+                                               $nextPart = this.utils.cloneAttributes(block, $nextPart);
+                                               $(block).after($nextPart);
+
+                                               return { $block: $(block), $next: $nextPart, type: 'break' };
+                                       }
+                               },
                                // tag detection
                                inBlocks: function(tags)
                                {
                                        var contains = false;
                                        for (var i = 0; i < len; i++)
                                        {
-                                               var tag = blocks[i].tagName.toLowerCase();
-
-                                               if ($.inArray(tag, tags) !== -1)
+                                               if (blocks[i] !== false)
                                                {
-                                                       contains = true;
+                                                       var tag = blocks[i].tagName.toLowerCase();
+
+                                                       if ($.inArray(tag, tags) !== -1)
+                                                       {
+                                                               contains = true;
+                                                       }
                                                }
                                        }
 
                                },
                                isBlock: function(block)
                                {
+                                       if (block === null)
+                                       {
+                                               return false;
+                                       }
+
                                        block = block[0] || block;
 
                                        return block && this.utils.isBlockTag(block.tagName);
 
                                        return parent && parent.tagName === tagName ? parent : current && current.tagName === tagName ? current : false;
                                },
+                               isEditorRelative: function()
+                               {
+                                       var position = this.core.editor().css('position');
+                                       var arr = ['absolute', 'fixed', 'relative'];
+
+                                       return ($.inArray(arr, position) !== -1);
+                               },
+                               setEditorRelative: function()
+                               {
+                                       this.core.editor().addClass('redactor-relative');
+                               },
                                // scroll
                                freezeScroll: function()
                                {
 
                                        $(document).scrollTop(this.tmpScrollTop);
                                },
-                               //collapsed
-                               isCollapsed: function()
-                               {
-                                       return this.selection.get().isCollapsed;
-                               },
                                isStartOfElement: function(element)
                                {
                                        if (typeof element === 'undefined')
                                                }
                                        }
 
-                                       return (this.caret.offset(element) === 0) ? true : false;
+                                       return (this.offset.get(element) === 0) ? true : false;
                                },
                                isEndOfElement: function(element)
                                {
                                                }
                                        }
 
-                                       var text = $.trim($(element).text()).replace(/\t\n\r\n/g, '').replace(/\u200B/g, '');
+                                       var text = $.trim($(element).text()).replace(/[\t\n\r\n]/g, '').replace(/\u200B/g, '');
+                                       var offset = this.offset.get(element);
 
-                                       return (this.caret.offset(element) === text.length) ? true : false;
+                                       return (offset === text.length) ? true : false;
                                },
                                removeEmptyAttr: function(el, attr)
                                {
                                },
                                disableBodyScroll: function()
                                {
-
                                        var $body = $('html');
                                        var windowWidth = window.innerWidth;
                                        if (!windowWidth)
                                {
                                        $('html').css({ 'overflow': '', 'padding-right': '' });
                                        $('body').remove('redactor-scrollbar-measure');
+                               },
+                               appendFields: function(appendFields, data)
+                               {
+                                       if (!appendFields)
+                                       {
+                                               return data;
+                                       }
+
+                                       var $fields = $(appendFields);
+
+                                       if ($fields.length === 0)
+                                       {
+                                               return data;
+                                       }
+                                       else
+                                       {
+                                               var str = '';
+                                               $fields.each(function()
+                                               {
+                                                       data.append($(this).attr('name'), $(this).val());
+                                               });
+
+                                               return data;
+                                       }
+                               },
+                               appendForms: function(appendForms, data)
+                               {
+                                       if (!appendForms)
+                                       {
+                                               return data;
+                                       }
+
+                                       var $forms = $(appendForms);
+                                       if ($forms.length === 0)
+                                       {
+                                               return data;
+                                       }
+                                       else
+                                       {
+                                               var formData = $forms.serializeArray();
+
+                                               $.each(formData, function(z,f)
+                                               {
+                                                       data.append(f.name, f.value);
+                                               });
+
+                                               return data;
+                                       }
+                               },
+
+                               // #backward
+                               isCollapsed: function()
+                               {
+                                       return this.selection.isCollapsed();
+                               },
+                               isMobile: function()
+                               {
+                                       return this.detect.isMobile();
+                               },
+                               isDesktop: function()
+                               {
+                                       return this.detect.isDesktop();
+                               },
+                               isPad: function()
+                               {
+                                       return this.detect.isIpad();
+                               }
+
+                       };
+               },
+
+               // #backward
+               browser: function()
+               {
+                       return {
+                               webkit: function()
+                               {
+                                       return this.detect.isWebkit();
+                               },
+                               ff: function()
+                               {
+                                       return this.detect.isFirefox();
+                               },
+                               ie: function()
+                               {
+                                       return this.detect.isIe();
                                }
                        };
                }
        Redactor.prototype.init.prototype = Redactor.prototype;
 
 })(jQuery);
+
+(function($)
+{
+       $.fn.redactorAnimation = function(animation, options, callback)
+       {
+               return this.each(function()
+               {
+                       new redactorAnimation(this, animation, options, callback);
+               });
+       };
+
+       function redactorAnimation(element, animation, options, callback)
+       {
+               // default
+               var opts = {
+                       duration: 0.5,
+                       iterate: 1,
+                       delay: 0,
+                       prefix: 'redactor-',
+                       timing: 'linear'
+               };
+
+               this.animation = animation;
+               this.slide = (this.animation === 'slideDown' || this.animation === 'slideUp');
+               this.$element = $(element);
+               this.prefixes = ['', '-moz-', '-o-animation-', '-webkit-'];
+               this.queue = [];
+
+               // options or callback
+               if (typeof options === 'function')
+               {
+                       callback = options;
+                       this.opts = opts;
+               }
+               else
+               {
+                       this.opts = $.extend(opts, options);
+               }
+
+               // slide
+               if (this.slide)
+               {
+                       this.$element.height(this.$element.height());
+               }
+
+               // init
+               this.init(callback);
+
+       }
+
+       redactorAnimation.prototype = {
+
+               init: function(callback)
+               {
+                       this.queue.push(this.animation);
+
+                       this.clean();
+
+                       if (this.animation === 'show')
+                       {
+                               this.opts.timing = 'linear';
+                               this.$element.removeClass('hide').show();
+
+                               if (typeof callback === 'function')
+                               {
+                                       callback(this);
+                               }
+                       }
+                       else if (this.animation === 'hide')
+                       {
+                               this.opts.timing = 'linear';
+                               this.$element.hide();
+
+                               if (typeof callback === 'function')
+                               {
+                                       callback(this);
+                               }
+                       }
+                       else
+                       {
+                               this.animate(callback);
+                       }
+
+               },
+               animate: function(callback)
+               {
+                       this.$element.addClass('animated').css('display', '').removeClass('hide');
+                       this.$element.addClass(this.opts.prefix + this.queue[0]);
+
+                       this.set(this.opts.duration + 's', this.opts.delay + 's', this.opts.iterate, this.opts.timing);
+
+                       var _callback = (this.queue.length > 1) ? null : callback;
+                       this.complete('AnimationEnd', $.proxy(function()
+                       {
+                               if (this.$element.hasClass(this.opts.prefix + this.queue[0]))
+                               {
+                                       this.clean();
+                                       this.queue.shift();
+
+                                       if (this.queue.length)
+                                       {
+                                               this.animate(callback);
+                                       }
+                               }
+
+                       }, this), _callback);
+               },
+               set: function(duration, delay, iterate, timing)
+               {
+                       var len = this.prefixes.length;
+
+                       while (len--)
+                       {
+                               this.$element.css(this.prefixes[len] + 'animation-duration', duration);
+                               this.$element.css(this.prefixes[len] + 'animation-delay', delay);
+                               this.$element.css(this.prefixes[len] + 'animation-iteration-count', iterate);
+                               this.$element.css(this.prefixes[len] + 'animation-timing-function', timing);
+                       }
+
+               },
+               clean: function()
+               {
+                       this.$element.removeClass('animated');
+                       this.$element.removeClass(this.opts.prefix + this.queue[0]);
+
+                       this.set('', '', '', '');
+
+               },
+               complete: function(type, make, callback)
+               {
+                       this.$element.one(type.toLowerCase() + ' webkit' + type + ' o' + type + ' MS' + type, $.proxy(function()
+                       {
+                               if (typeof make === 'function')
+                               {
+                                       make();
+                               }
+
+                               if (typeof callback === 'function')
+                               {
+                                       callback(this);
+                               }
+
+                               // hide
+                               var effects = ['fadeOut', 'slideUp', 'zoomOut', 'slideOutUp', 'slideOutRight', 'slideOutLeft'];
+                               if ($.inArray(this.animation, effects) !== -1)
+                               {
+                                       this.$element.css('display', 'none');
+                               }
+
+                               // slide
+                               if (this.slide)
+                               {
+                                       this.$element.css('height', '');
+                               }
+
+                       }, this));
+
+               }
+       };
+
+})(jQuery);
\ No newline at end of file
index 9f23514f5e50d19cb7f35e686ce06a0d7f0dfadc..757c561613641c9ed892441c11f897cafd15c516 100644 (file)
@@ -1,7 +1,7 @@
 /*
        Redactor II
-       Version 1.0.1
-       Updated: October 13, 2015
+       Version 1.2.0
+       Updated: December 16, 2015
 
        http://imperavi.com/redactor/
 
@@ -10,4 +10,4 @@
 
        Usage: $('#content').redactor();
 */
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(f($){\'ga gb\';if(!b7.4G.7z){b7.4G.7z=f(b8){j fn=c;q f(){q fn.4H(b8)}}}j 1T=0;$.fn.C=f(2Z){j 2J=[];j 2h=7A.4G.b9.4a(ba,1);if(15 2Z===\'93\'){c.1E(f(){j 5d=$.1C(c,\'C\');j 1g;if(2Z.3p(/\\./)!==\'-1\'){1g=2Z.4n(\'.\');if(15 5d[1g[0]]!==\'1e\'){1g=5d[1g[0]][1g[1]]}}R{1g=5d[2Z]}if(15 5d!==\'1e\'&&$.5G(1g)){j 7B=1g.4H(5d,2h);if(7B!==1e&&7B!==5d){2J.2S(7B)}}R{$.6I(\'gc gd 7C "\'+2Z+\'" 2K 3f\')}})}R{c.1E(f(){$.1C(c,\'C\',{});$.1C(c,\'C\',3f(c,2Z))})}if(2J.1f===0){q c}R if(2J.1f===1){q 2J[0]}R{q 2J}};f 3f(el,2Z){q 1N 3f.4G.2L(el,2Z)}$.3f=3f;$.3f.ge=\'1.0.1\';$.3f.94=[\'1J\',\'2A\',\'T\',\'4o\',\'2e\',\'1Z\',\'14\',\'1K\',\'2n\',\'1F\',\'G\',\'1d\',\'1P\',\'1O\',\'2k\',\'1h\',\'3x\',\'N\',\'1y\',\'1t\',\'3T\',\'1v\',\'6J\',\'K\',\'2M\',\'2D\',\'V\',\'1Q\',\'3l\',\'4b\',\'2t\',\'4p\',\'J\',\'4I\',\'1m\',\'1o\',\'5H\',\'1b\'];$.3f.bb={};$.3f.E={1v:\'en\',95:\'gf\',2k:L,bc:L,bd:L,5I:L,4J:L,9a:L,9b:L,9c:L,5J:L,4c:{},2t:L,2M:1j,5K:1j,9d:L,6K:4,7D:L,bf:1j,2A:L,9e:L,7E:L,5e:2B,bg:\'1O\',7F:1j,5f:2B,bh:\'1O\',7G:1j,5L:L,bi:1j,4d:\'6L\',bj:L,9f:50,1m:1j,bk:1j,3M:1i,5g:0,7H:L,bl:L,bm:L,1J:L,9g:[\'p\',\'2o\',\'1G\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\'],9h:L,3y:[\'28\',\'4K\',\'4L\',\'5h\',\'7I\',\'1h\',\'1O\',\'K\',\'7J\'],9i:[],9j:[],3t:1j,4I:{\'3j+5i+m, 4q+5i+m\':{1g:\'N.9k\'},\'3j+b, 4q+b\':{1g:\'N.28\',4M:[\'4K\']},\'3j+i, 4q+i\':{1g:\'N.28\',4M:[\'4L\']},\'3j+h, 4q+h\':{1g:\'N.28\',4M:[\'bn\']},\'3j+l, 4q+l\':{1g:\'N.28\',4M:[\'bo\']},\'3j+k, 4q+k\':{1g:\'K.2w\'},\'3j+5i+7\':{1g:\'2D.3G\',4M:[\'6M\']},\'3j+5i+8\':{1g:\'2D.3G\',4M:[\'7K\']}},bp:L,4N:{en:{"28":"gg","1h":"gh","1O":"gj","K":"gk","4K":"gl","4L":"gm","5h":"gn","5M":"go","4K-4O":"B","4L-4O":"I","5h-4O":"S","5M-4O":"U","7I":"gp","K-1y":"bq K","K-2N":"bs K","K-in-1N-3N":"gq K in 1N 3N","5j":"gr","9l":"gs","3m":"gu","1y":"bq","3k":"gv","5N":"gw","1p":"gx","2N":"bs","1z":"gy","bt":"gz 1p","9m":"gA","1F":"gB","bu":"5O 1","bv":"5O 2","bw":"5O 3","bx":"5O 4","by":"5O 5","bz":"5O 6","4r":"gC","9n":"9n","7K":"gD bA","6M":"gE bA","7L":"gF","3x":"gG","7J":"gH","1o-1U":"gI 1O gJ gK ","bB-bC-1U":"gL 1p O"}},12:\'3a\',N:L,2e:[],6N:[],6O:[\'a\',\'2f\',\'7M\',\'6P\',\'b\',\'u\',\'em\',\'i\',\'1F\',\'4s\',\'gM\',\'gN\',\'gO\',\'bD\',\'bE\',\'9o\',\'j\',\'gP\',\'gQ\'],9p:[\'1G\',\'4e\',\'4P\',\'1R\',\'p\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'dl\',\'dt\',\'dd\',\'1A\',\'3U\',\'2o\',\'gR\',\'4Q\',\'2x\',\'bF\',\'3V\',\'7N\',\'9q\',\'bG\',\'bH\',\'5k\'],3l:1j,9r:[\'bI\',\'1A\',\'1G\',\'5l\',\'4e\',\'4P\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'dl\',\'2o\',\'4Q\',\'bF\',\'3V\',\'7N\',\'9q\',\'bG\',\'bH\',\'3g\',\'3h\',\'3t\',\'5k\',\'bJ\',\'3b\',\'3a\',\'14\',\'7O\',\'gS\',\'gT\',\'gU\',\'hr\',\'gV\',\'gW\',\'gX\',\'gY\',\'2x\',\'gZ\',\'h0\',\'h7\',\'p\'],3W:\'<p>&#7P;</p>\',bK:\'&#7P;\',bL:[\'1h/bM\',\'1h/h8\',\'1h/bN\'],4R:6Q.4R.2O(),1Q:{6R:[]},4S:{6S:/4t?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:h9\\.be\\/|bO\\.7Q\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w.\\-]*(?:[\'"][^<>]*>|<\\/a>))[?=&+%\\w.-]*/ig,6T:/4t?:\\/\\/(5P\\.)?bP.7Q\\/(\\d+)($|\\/)/,7R:/((4t?|5P)[^\\s]+\\.)(ha?g|bM|bN)(\\?[^\\s-]+)?/ig,29:/(4t?:\\/\\/(?:5P\\.|(?!5P))[^\\s\\.]+\\.[^\\s]{2,}|5P\\.[^\\s]+\\.[^\\s]{2,})/ig}};3f.fn=$.3f.4G={2C:{5Q:8,5R:46,bQ:38,bR:40,4T:13,bS:32,6U:27,9s:9,bT:17,bU:91,bV:16,bW:18,hb:39,hc:37,bX:91},2L:f(el,2Z){c.$1w=$(el);c.1T=1T++;c.bY(2Z);c.bZ();if(c.E.bd&&!c.$1w.2T(\'C-1H-3z-2N\')){q c.c0(2Z)}R if(c.$1w.2T(\'C-1H-3z-2N\')){c.$1w.2u(\'C-1H-3z-2N\')}c.c1=1N 2a(\'^(\'+c.E.9p.3X(\'|\').7S()+\')$\',\'i\');c.c2=1N 2a(\'^(\'+c.E.6O.3X(\'|\').7S()+\')$\',\'i\');c.E.7F=(c.E.5e===2B)?L:c.E.7F;c.E.7G=(c.E.5f===2B)?L:c.E.7G;c.9g={};c.1v.3c();$.5m(c.E.4I,c.E.bp);c.G.1s(\'2b\');c.G.1s(\'c3\');c.2b=1j;c.1Z.2b()},c0:f(2Z){c.$1w.1D(\'1H.C-1H-3z-2N\',$.1k(f(){c.5S(2Z)},c));c.$1w.21(\'C-1H-3z-2N\');q},5S:f(2Z){$.5m(2Z.4c,{c3:f(){c.1y.F(c.J.23(),L)},5S:f(){c.J.2P();c.7T=c.1F.1c();$(c.E.9t).2w().1D(\'1H.C-1H-3z-2N\',$.1k(f(e){e.26();c.G.7U();c.1P.5T=L;c.$1w.o(c.7T);c.G.1s(\'9l\',c.7T);c.1P.5T=1j;c.7T=\'\';$(c.E.9t).2E();$(c.E.9u).2E();c.$1w.1D(\'1H.C-1H-3z-2N\',$.1k(f(){c.5S(2Z)},c));c.$1w.21(\'C-1H-3z-2N\')},c));$(c.E.9u).2w().1D(\'1H.C-1H-3z-2N\',$.1k(f(e){e.26();c.G.7U();c.G.1s(\'3k\',c.1F.1c());$(c.E.9t).2E();$(c.E.9u).2E();c.$1w.1D(\'1H.C-1H-3z-2N\',$.1k(f(){c.5S(2Z)},c));c.$1w.21(\'C-1H-3z-2N\')},c))}});c.$1w.C(2Z);c.$1w.2g(\'1H.C-1H-3z-2N\')},bY:f(2Z){c.E=$.5m({},$.5m(1j,{},$.3f.E),$.5m(1j,{},$.3f.bb),c.$1w.1C(),2Z)},9v:f(3g){q hd.he(3g).7V(f(7W){q 15 3g[7W]===\'f\'})},bZ:f(){j 2p=$.3f.94.1f;2K(j i=0;i<2p;i++){c.c4($.3f.94[i])}},c4:f(5n){if(15 c[5n]===\'1e\'){q}c[5n]=c[5n]();j 4U=c.9v(c[5n]);j 2p=4U.1f;2K(j z=0;z<2p;z++){c[5n][4U[z]]=c[5n][4U[z]].7z(c)}},1J:f(){q{4V:L,5U:f(){if(c.E.1J){c.J.1c().9w()}},hf:f(){if(c.E.1J){c.J.1c().c5()}},1Z:f(){if(c.1b.4W()){q}c.14.9x();c.14.9y();if(c.E.3y.1f===0){q}c.$1J=c.1J.7X();c.1J.1I();c.14.$1m=c.$1J;c.14.9z();c.14.3c(c.$1J);c.G.O().1D(\'c6.C\',c,$.1k(f(e){if(c.J.1p()!==\'\'){c.1J.2w(e)}},c))},1I:f(){c.$1J.7Y(\'2Q\')},7X:f(){q $(\'<4e>\').21(\'C-1J\').Q({\'id\':\'C-1J-\'+c.1T,\'5o\':\'1m\'}).2E()},2w:f(e){c.J.3A();c.J.3k();c.J.2P(L);$(\'.C-1J\').2E();j 9B=0;j 2F=c.$1J.7Z();if($(2G).2F()<(e.9C+2F)){9B=6V}c.$1J.2q({2y:(e.9C-9B)+\'3O\',2i:(e.c7+10+$(1i).3B())+\'3O\'}).2w();c.1J.4V=1j;c.1J.c8()},c8:f(){$(1i).1D(\'6W.C-1J.\'+c.1T,$.1k(f(e){j 1d=$(e.1V).2r(\'.C-1d\').1f;if($(e.1V).2r(c.$1J).1f===0&&1d===0){j 2E=c.1J.2E(e);if(2E!==L){c.J.3A()}}},c)).1D(\'1t.C-1J.\'+c.1T,$.1k(f(e){j 1a=e.5p;if($(e.1V).2r(\'#C-V\').1f!==0){q}if(1a===c.2C.6U){c.J.1c().9w();c.J.3A()}R if(1a===c.2C.5Q||1a===c.2C.5R){j 1q=c.J.1c();j Y=c.J.Y(1q);Y.5V();c.J.3A()}R if(1a===c.2C.4T){c.J.1c().c5();c.J.3A()}if(c.1J.4V){c.1J.2E(e)}R{c.J.1c().9w();c.J.3A()}},c))},hg:f(){$(1i).1D(\'hh.C-1J.\'+c.1T,$.1k(f(e){if($(e.1V).2r(c.$1J).1f===0){c.1J.2E(e)}},c))},2E:f(e){j 3j=e.5W||e.4X||(e.4Y&&e.9D);if(3j){q L}c.14.c9();c.$1J.80(5X);c.1J.4V=L;$(1i).2g(\'6W.C-1J.\'+c.1T)}}},2A:f(){q{4V:L,o:L,2L:f(){if(!c.E.2A){q}c.2A.4V=1j;c.2A.1M=(c.E.9e)?c.E.9e:c.$3a.Q(\'1M\')},is:f(){q c.2A.4V},4u:f(){if(!c.E.2A){q}c.2A.5Y=c.1F.1c();if(c.2A.o===c.2A.5Y){q}j 1C={};1C.1M=c.2A.1M;1C[c.2A.1M]=c.2A.5Y;1C=c.2A.5q(1C);j ca=$.hi({29:c.E.2A,12:\'hj\',1C:1C});ca.hk(c.2A.cb)},5q:f(1C){if(c.E.7E===L||15 c.E.7E!==\'3g\'){q 1C}$.1E(c.E.7E,$.1k(f(k,v){if(v!==2B&&v.4Z().5r(\'#\')===0){v=$(v).2J()}1C[k]=v},c));q 1C},cb:f(1C){j 2s;5Z{2s=$.cc(1C)}60(e){2s=1C}j cd=(15 2s.6I===\'1e\')?\'2A\':\'hl\';c.G.1s(cd,c.2A.1M,2s);c.2A.o=c.2A.5Y},hm:f(){c.2A.4V=L;ce(c.81)}}},T:f(){q{28:f(1l,Q,1u,12){1l=(1l===\'9m\')?\'2o\':1l;c.T.25=[\'p\',\'2o\',\'1G\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'1A\'];if($.3P(1l,c.T.25)===-1){q}c.2t.1x();c.2e.2H();q(c.1b.5s())?c.T.82(1l,Q,1u,12):c.T.83(1l,Q,1u,12)},82:f(1l,Q,1u,12){c.J.3k();j T=c.J.T();j 3H=T.1n.2O();if($.3P(3H,c.T.25)===-1){c.J.2P();q}if(3H===1l){1l=\'p\'}j 3I=c.1b.51(T,1l);if(15 Q===\'3g\'){12=1u;2K(j 1a in Q){3I=c.T.4f(3I,1a,Q[1a],12)}}R{3I=c.T.4f(3I,Q,1u,12)}c.J.2P();c.T.9E(3I);q 3I},83:f(1l,Q,1u,12){c.J.3k();j 3I=[];j 2U=c.J.2U();j 2p=2U.1f;2K(j i=0;i<2p;i++){j 3H=2U[i].1n.2O();if($.3P(3H,c.T.25)!==-1){j T=c.1b.51(2U[i],1l);if(15 Q===\'3g\'){12=1u;2K(j 1a in Q){T=c.T.4f(T,1a,Q[1a],12)}}R{T=c.T.4f(T,Q,1u,12)}3I.2S(T);c.T.9E(T)}}c.J.2P();q 3I},9E:f(F){F=F[0]||F;j 25=c.E.6O;j 2U=[\'6X\',\'cf\',\'cg\',\'ch\',\'ci\',\'cj\',\'ck\'];if($.3P(F.1n,2U)===-1){q}if(F.1n!==\'6X\'){j 6Y=25.5r(\'a\');25.cl(6Y,1)}$(F).1B(25.3X(\',\')).6Z(\'.C-J-23\').2V().84()},4f:f(T,Q,1u,12){if(15 Q===\'1e\'){q T}j 1g=(15 12===\'1e\')?\'M\':12;if(Q===\'1W\'){T=c.T[1g+\'cm\'](1u,T)}R{if(1g===\'1x\'){T=c.T[1g+\'62\'](Q,T)}R if(1g===\'cn\'){T=c.T[1g+\'62\'](Q,T)}R{T=c.T[1g+\'62\'](Q,1u,T)}}q T},4g:f(T){q(15 T===\'1e\')?c.J.2U():T},co:f(1u,T){q $(c.T.4g(T)).2l(\'1W\').21(1u)[0]},70:f(1u,T){q $(c.T.4g(T)).70(1u)[0]},21:f(1u,T){q $(c.T.4g(T)).21(1u)[0]},2u:f(1u,T){q $(c.T.4g(T)).2u(1u)[0]},cp:f(T){q $(c.T.4g(T)).2l(\'1W\')[0]},cq:f(Q,1u,T){T=c.T.2l(Q,T);q $(T).Q(Q,1u)[0]},cr:f(Q,1u,T){T=c.T.4g(T);j 1L=c;j 3i=[];$.1E(T,f(i,s){j $el=$(s);if($el.Q(Q)){3i.2S(1L.T.2l(Q,s))}R{3i.2S(1L.T.85(Q,1u,s))}});q 3i},85:f(Q,1u,T){q $(c.T.4g(T)).Q(Q,1u)[0]},2l:f(Q,T){q $(c.T.4g(T)).2l(Q)[0]},cs:f(T){T=c.T.4g(T);j 3i=[];$.1E(T,f(i,s){if(15 s.3Y===\'1e\'){3i.2S(s)}j $el=$(s);j 2p=s.3Y.1f;2K(j z=0;z<2p;z++){$el.2l(s.3Y[z].1M)}3i.2S($el[0])});q 3i}}},4o:f(){q{9F:f(){q/9F/.5t(c.E.4R)},ff:f(){q c.E.4R.5r(\'hn\')>-1},ie:f(v){j ie;ie=2a(\'ho\'+(!hp(v)?(\'\\\\s\'+v):\'\'),\'i\').5t(6Q.4R);if(!ie){ie=!!6Q.4R.2W(/hq.*hs[ :]*11\\./)}q ie}}},2e:f(){q{2H:f(12){if(15 12===\'1e\'||12===\'71\'){c.2e.ct()}R{c.2e.cu()}},ct:f(){c.J.3k();c.E.2e.2S(c.G.O().o());c.J.2P()},cu:f(){c.J.3k();c.E.6N.2S(c.G.O().o());c.J.2P()},cv:f(){c.1P.4v();c.G.O().o(c.E.2e.cw());c.1P.4w()},cx:f(){c.1P.4v();c.G.O().o(c.E.6N.cw());c.1P.4w()},cy:f(){c.E.2e.2S(c.G.O().o())},71:f(){if(c.E.2e.1f===0){q}c.2e.2H(\'86\');c.2e.cv();c.J.2P();3C($.1k(c.1Q.3c,c),50)},86:f(){if(c.E.6N.1f===0){q}c.2e.2H(\'71\');c.2e.cx();c.J.2P();3C($.1k(c.1Q.3c,c),50)}}},1Z:f(){q{2b:f(){c.$O=c.$1w;if(c.1Z.87()||c.E.N){c.E.12=\'N\';c.E.N=1j;c.E.2M=L}R if(c.1Z.3Z(\'9G\')){c.E.12=\'1A\';if(c.$O.o()===\'\'){c.$O.o(c.E.3W)}}R if(c.1Z.3Z(\'6X\')){c.E.12=\'1G\'}R{c.1Z.cz()}c.1Z.cA();c.1Z.cB();c.1Z.cC();c.1Z.cD();c.1Z.cE()},cF:f(){c.$2c=$(\'<1A 1W="C-2c" 5o="ht" />\')},cA:f(){c.G.O().21(\'C-in\')},cB:f(){j id=(c.E.12===\'3a\')?\'C-1T-\'+c.1T:c.$1w.Q(\'id\');c.G.O().Q(\'id\',(15 id===\'1e\')?\'C-1T-\'+c.1T:id)},cG:f(){j 1M=c.$1w.Q(\'1M\');q(15 1M===\'1e\')?\'hu-\'+c.1T:1M},cH:f(){c.$O=$(\'<1A />\');c.$3a=c.$1w;c.$1w.Q(\'1M\',c.1Z.cG());c.$2c.hv(c.$1w).1I(c.$O).1I(c.$1w);c.$O.21(\'C-O\');c.$1w.2E();c.$2c.63(\'<2f 1W="C-88-1U" id="C-88-\'+c.1T+\'" 3q-9H="L">\'+c.1v.1c(\'bB-bC-1U\')+\'</2f>\');c.$O.Q({\'3q-hw\':\'C-88-\'+c.1T,\'5o\':\'hx\'})},cz:f(){c.1Z.cF();c.1Z.cH();c.1F.2b(c.G.3a().2J());c.G.3a().2J(c.2n.89(c.$O.o()))},3Z:f(1l){q(c.$1w[0].1n===1l)},87:f(){q(!c.1Z.3Z(\'hy\')&&!c.1Z.3Z(\'9G\')&&!c.1Z.3Z(\'6X\'))},cC:f(){c.G.O().Q({\'64\':1j})},cD:f(){if(c.E.12===\'N\'){c.E.5K=L}if(c.E.12===\'N\'||c.E.12===\'1G\'){c.E.cI=L;c.E.1m=L;c.E.1J=L;c.E.2M=L}if(c.E.5I){c.G.O().21(\'C-5I\')}if(c.E.12!==\'3a\'){q}c.G.2c().Q(\'cJ\',c.E.95);c.G.O().Q(\'cJ\',c.E.95);if(c.E.4J){c.G.O().Q(\'4J\',c.E.4J)}if(c.E.9a){c.G.O().2q(\'hz-4x\',c.E.9a)}if(c.E.9b){c.G.O().2q(\'9I-4x\',c.E.9b)}if(c.E.9c){c.G.O().2q({\'9I-2F\':c.E.9c,\'hA\':\'cK\'})}},cE:f(){c.1Z.cL();c.1P.2L();c.1Z.cM();if(c.E.1m||c.E.1J){c.72=c.14.2L()}if(c.E.bm){c.1m.cN()}if(c.E.1J){c.1J.1Z()}R if(c.E.1m){c.1m.1Z()}if(c.1b.4W()&&c.E.cI&&c.E.1J){c.E.1m=1j;c.1m.1Z()}if(c.E.1J||c.E.1m){c.G.O().1D(\'c6.C 3T.C 2k.C\',$.1k(c.1Q.6R,c))}c.V.cO();c.1Z.5J();c.2A.2L();c.1F.o=c.1F.9J(c.G.O().o());3C($.1k(c.1Q.3c,c),4);c.G.1s(\'2L\');c.G.1s(\'5S\');c.2b=L},cM:f(){if(c.E.2M){c.2M.28()}c.2t.cP();if(c.E.2k){3C(c.2k.2b,5X)}R if(c.E.bc){3C(c.2k.2X,5X)}},cL:f(){5Z{1i.4h(\'hB\',L,L);1i.4h(\'hC\',L,L);1i.4h("hD",L,L)}60(e){}},5J:f(){if(!c.E.5J){q}$.1E(c.E.5J,$.1k(f(i,s){j 1g=(15 9K!==\'1e\'&&15 9K[s]!==\'1e\')?9K:3f.fn;if(!$.5G(1g[s])){q}c[s]=1g[s]();j 4U=c.9v(c[s]);j 2p=4U.1f;2K(j z=0;z<2p;z++){c[s][4U[z]]=c[s][4U[z]].7z(c)}if(15 c[s].4N!==\'1e\'){j 1v={};if(15 c[s].4N[c.E.1v]!==\'1e\'){1v=c[s].4N[c.E.1v]}R if(15 c[s].4N[c.E.1v]===\'1e\'&&15 c[s].4N.en!==\'1e\'){1v=c[s].4N.en}j 1L=c;$.1E(1v,f(i,s){if(15 1L.E.74[i]===\'1e\'){1L.E.74[i]=s}})}if($.5G(c[s].2L)){c[s].2L()}},c))}}},14:f(){q{1m:f(){q(15 c.14.$1m===\'1e\'||!c.14.$1m)?c.$1m:c.14.$1m},2L:f(){q{28:{1z:c.1v.1c(\'28\'),1d:{p:{1z:c.1v.1c(\'bt\'),1g:\'T.28\'},2o:{1z:c.1v.1c(\'9m\'),1g:\'T.28\'},1G:{1z:c.1v.1c(\'1F\'),1g:\'T.28\'},h1:{1z:c.1v.1c(\'bu\'),1g:\'T.28\'},h2:{1z:c.1v.1c(\'bv\'),1g:\'T.28\'},h3:{1z:c.1v.1c(\'bw\'),1g:\'T.28\'},h4:{1z:c.1v.1c(\'bx\'),1g:\'T.28\'},h5:{1z:c.1v.1c(\'by\'),1g:\'T.28\'},h6:{1z:c.1v.1c(\'bz\'),1g:\'T.28\'}}},4K:{1z:c.1v.1c(\'4K-4O\'),1U:c.1v.1c(\'4K\'),1g:\'N.28\'},4L:{1z:c.1v.1c(\'4L-4O\'),1U:c.1v.1c(\'4L\'),1g:\'N.28\'},5h:{1z:c.1v.1c(\'5h-4O\'),1U:c.1v.1c(\'5h\'),1g:\'N.28\'},5M:{1z:c.1v.1c(\'5M-4O\'),1U:c.1v.1c(\'5M\'),1g:\'N.28\'},7I:{1z:c.1v.1c(\'7I\'),1d:{7K:{1z:\'&hE; \'+c.1v.1c(\'7K\'),1g:\'2D.3G\'},6M:{1z:\'1. \'+c.1v.1c(\'6M\'),1g:\'2D.3G\'},7L:{1z:\'< \'+c.1v.1c(\'7L\'),1g:\'3x.75\',1Q:{1w:\'1R\',67:{Q:{\'1W\':\'C-1d-K-76\',\'3q-5u\':1j}}}},3x:{1z:\'> \'+c.1v.1c(\'3x\'),1g:\'3x.8a\',1Q:{1w:\'1R\',67:{Q:{\'1W\':\'C-1d-K-76\',\'3q-5u\':1j}}}}}},1h:{1z:c.1v.1c(\'1h\'),1g:\'1h.2w\'},1O:{1z:c.1v.1c(\'1O\'),1g:\'1O.2w\'},K:{1z:c.1v.1c(\'K\'),1d:{K:{1z:c.1v.1c(\'K-1y\'),1g:\'K.2w\',1Q:{1w:\'a\',in:{1z:c.1v.1c(\'K-2N\'),},67:{1z:c.1v.1c(\'K-1y\')}}},5j:{1z:c.1v.1c(\'5j\'),1g:\'K.5j\',1Q:{1w:\'a\',67:{Q:{\'1W\':\'C-1d-K-76\',\'3q-5u\':1j}}}}}},7J:{1z:c.1v.1c(\'7J\'),1g:\'6J.1y\'}}},9z:f(){$.1E(c.72.28.1d,$.1k(f(i,s){if($.3P(i,c.E.9g)===-1){5N c.72.28.1d[i]}},c))},9x:f(){if(c.E.9i.1f!==0){c.14.9L(c.E.9i)}},9y:f(){if(c.1b.4W()&&c.E.9j.1f!==0){c.14.9L(c.E.9j)}},9L:f(3y){$.1E(3y,$.1k(f(i,s){j 6Y=c.E.3y.5r(s);c.E.3y.cl(6Y,1)},c))},3c:f($1m){c.14.3y=[];$.1E(c.E.3y,$.1k(f(i,2z){if(!c.72[2z]){q}if(2z===\'1O\'&&(!c.E.5f||!c.E.5f&&!c.E.5L)){q}if(2z===\'1h\'&&(!c.E.5e||!c.E.5e&&!c.E.5L)){q}$1m.1I($(\'<1R>\').1I(c.14.1Z(2z,c.72[2z])))},c))},1Z:f(2z,2j){j $14=$(\'<a 22="hF:hG(2B);" 1W="3n-14 3n-\'+2z+\'" 3J="\'+2z+\'" />\').o(2j.1z);$14.Q({\'5o\':\'14\',\'3q-1U\':2j.1z,\'4J\':\'-1\'});if(15 2j.1U!==\'1e\'){$14.Q(\'3q-1U\',2j.1U)}if(2j.1g||2j.3D||2j.1d){c.14.cQ($14,2z,2j)}if(2j.1d){$14.21(\'C-1m-K-1d\').Q(\'3q-cR\',1j);j $1d=$(\'<1A 1W="C-1d C-1d-\'+c.1T+\' C-1d-2c-\'+2z+\'" 3h="cS: cT;">\');$14.1C(\'1d\',$1d);c.1d.1Z(2z,$1d,2j.1d)}c.14.3y.2S($14);q $14},cQ:f($14,2z,2j){$14.1D(\'1H\',$.1k(f(e){if($14.2T(\'C-14-5u\')){q L}j 12=\'1g\';j 1s=2j.1g;if(2j.3D){12=\'3D\';1s=2j.3D}R if(2j.1d){12=\'1d\';1s=L}c.14.3G(e,2z,12,1s);q L},c))},3G:f(e,2z,12,1s,2h){e.26();if(c.4o.ie()){c.1b.cU();e.77=L}if(12===\'3D\'){c.N.28(1s)}R if(12===\'1d\'){c.1d.2w(e,2z)}R{c.14.cV(e,1s,2z,2h)}if(c.E.1J&&12!==\'1d\'){c.1J.2E(e)}if(c.4o.ie()){c.1b.cW()}},cV:f(e,1s,2z,2h){j 1g;2h=(15 2h===\'1e\')?2z:2h;if($.5G(1s)){1s.4a(c,2z)}R if(1s.3p(/\\./)!==\'-1\'){1g=1s.4n(\'.\');if(15 c[1g[0]]===\'1e\'){q}if(15 2h===\'3g\'){c[1g[0]][1g[1]].4H(c,2h)}R{c[1g[0]][1g[1]].4a(c,2h)}}R{if(15 2h===\'3g\'){c[1s].4H(c,2h)}R{c[1s].4a(c,2h)}}},cX:f(){q c.14.3y},1c:f(1a){q c.14.1m().1B(\'a.3n-\'+1a)},2H:f(1a,1z){j $1S=c.14.1m().1B(\'a.3n-\'+1a);$1S.o(1z).Q(\'3q-1U\',1z);q $1S},cy:f(1a,1z){if(c.14.78(1a)){q}j 1S=c.14.1Z(1a,{1z:1z});c.14.1m().1I($(\'<1R>\').1I(1S));q 1S},hH:f(1a,1z){if(c.14.78(1a)){q}j 1S=c.14.1Z(1a,{1z:1z});c.14.1m().63($(\'<1R>\').1I(1S));q 1S},hI:f(cY,1a,1z){if(c.14.78(1a)){q}j 1S=c.14.1Z(1a,{1z:1z});j $1S=c.14.1c(cY);if($1S.1f!==0){$1S.1X().2I($(\'<1R>\').1I(1S))}R{c.14.1m().1I($(\'<1R>\').1I(1S))}q 1S},hJ:f(cZ,1a,1z){if(c.14.78(1a)){q}j 1S=c.14.1Z(1a,{1z:1z});j $1S=c.14.1c(cZ);if($1S.1f!==0){$1S.1X().4y($(\'<1R>\').1I(1S))}R{c.14.1m().1I($(\'<1R>\').1I(1S))}q 1S},hK:f($1S,d0){$1S.o(d0)},9M:f($1S,1s){if(15 $1S===\'1e\'){q}j 12=(1s===\'1d\')?\'1d\':\'1g\';j 1a=$1S.Q(\'3J\');$1S.1D(\'5v 1H\',$.1k(f(e){if($1S.2T(\'C-14-5u\')){q L}c.14.3G(e,1a,12,1s)},c))},9N:f($1S,1d){$1S.21(\'C-1m-K-1d\').Q(\'3q-cR\',1j);j 1a=$1S.Q(\'3J\');c.14.9M($1S,\'1d\');j $1d=$(\'<1A 1W="C-1d C-1d-\'+c.1T+\' C-1d-2c-\'+1a+\'" 3h="cS: cT;">\');$1S.1C(\'1d\',$1d);if(1d){c.1d.1Z(1a,$1d,1d)}q $1d},d1:f(1a){c.14.1c(1a).21(\'C-8b\')},hL:f(1a){c.14.1c(1a).2u(\'C-8b\')},c9:f(1a){j $52=c.14.1m().1B(\'a.3n-14\');if(15 1a!==\'1e\'){$52=$52.6Z(\'.3n-\'+1a)}$52.2u(\'C-8b\')},hM:f(1a){j $52=c.14.1m().1B(\'a.3n-14\');if(15 1a!==\'1e\'){$52=$52.6Z(\'.3n-\'+1a)}$52.21(\'C-14-5u\')},hN:f(){c.14.1m().1B(\'a.3n-14\').2u(\'C-14-5u\')},1x:f(1a){c.14.1c(1a).1x()},78:f(1a){q(1a==="71"||1a==="86")&&!c.1b.8c()}}},1K:f(){q{2H:f(3Q,4i,2X){c.G.O().2k();2X=(15 2X===\'1e\')?0:1;3Q=3Q[0]||3Q;4i=4i[0]||4i;j 1q=c.J.1c();j Y=c.J.Y(1q);5Z{Y.8d(3Q,0);Y.8e(4i,2X)}60(e){}c.J.41(1q,Y)},79:f(F){if(15 c.2b!==\'1e\'){c.G.O().2k()}q F[0]||F},2b:f(F){j 1q,Y;F=c.1K.79(F);if(!F){q}if(F.1n===\'7a\'){q c.1K.4y(F)}j N=c.1b.7b(F.1n);if(F.3K===\'\'||N){Y=1i.68();j 5w=1i.5x(\'\\42\');Y.8d(F,0);Y.53(5w);Y.8f(5w);Y.3R(1j);1q=2G.4z();1q.54();1q.5y(Y);if(!N){c.G.O().1D(\'1t.C-1x-9O\',f(){$(5w).1x();$(c).2g(\'1t.C-1x-9O\')})}}R{1q=2G.4z();1q.54();Y=1i.68();Y.69(F);Y.3R(1j);1q.5y(Y)}},2X:f(F){j 1q,Y;F=c.1K.79(F);if(!F){q}if(F.1n!==\'7a\'&&F.3K===\'\'){q c.1K.2b(F)}if(F.1n===\'7a\'){j 4j=1i.3u(\'2f\');4j.8g=\'C-d2-4j\';4j.3K=\'&#7P;\';$(F).2I(4j);1q=2G.4z();1q.54();Y=1i.68();Y.d3(4j);Y.hO(4j);1q.5y(Y);$(4j).30(f(){q $(c).2V()});q}if(F.8h&&F.8h.6a===1){q c.1K.2I(F.8h)}1q=2G.4z();1q.54();Y=1i.68();Y.69(F);Y.3R(L);1q.5y(Y)},2I:f(F){j 1q,Y;F=c.1K.79(F);if(!F){q}if(F.1n===\'7a\'){q c.1K.2X(F)}if(c.1b.5z(F.1n)){j 1Y=c.1K.1Y(F);if(15 1Y===\'1e\'){c.1K.2X(F)}R{if(1Y.1n===\'d4\'){1Y=$(1Y).1B(\'8i, 3U\').31()[0]}R if(1Y.1n===\'7c\'||1Y.1n===\'7d\'){1Y=$(1Y).1B(\'1R\').31()[0]}c.1K.2b(1Y)}q}j 5w=1i.5x(\'\\42\');1q=2G.4z();1q.54();Y=1i.68();Y.8f(F);Y.53(5w);Y.8f(5w);Y.3R(1j);1q.5y(Y)},4y:f(F){j 1q,Y;F=c.1K.79(F);if(!F){q}if(c.1b.5z(F.1n)){j 2d=c.1K.2d(F);if(15 2d===\'1e\'){c.1K.2b(F)}R{if(2d.1n===\'d4\'){2d=$(2d).1B(\'8i, 3U\').3r()[0]}R if(2d.1n===\'7c\'||2d.1n===\'7d\'){2d=$(2d).1B(\'1R\').3r()[0]}c.1K.2X(2d)}q}1q=2G.4z();1q.54();Y=1i.68();Y.d3(F);Y.3R(1j);1q.5y(Y)},1Y:f(F){j $1Y=$(F).1Y();if($1Y.2T(\'C-3t-1l, C-J-23\')){q $1Y.1Y()[0]}R{q $1Y[0]}},2d:f(F){j $2d=$(F).2d();if($2d.2T(\'C-3t-1l, C-J-23\')){q $2d.2d()[0]}R{q $2d[0]}},3L:f(F){j 1q,Y,4A;if(15 F===\'1e\'){1q=c.J.1c();Y=c.J.Y(1q);4A=Y.9P();4A.69(c.$O[0]);4A.8e(Y.9Q,Y.d5);q $.2R(4A.4Z().M(/\\42/g,\'\')).1f}R{F=F[0]||F;1q=c.J.1c();Y=c.J.Y(1q);4A=Y.9P();4A.69(F);4A.8e(Y.9Q,Y.d5);q $.2R(4A.4Z().M(/\\42/g,\'\')).1f}}}},2n:f(){q{9R:f(o){o=c.2n.d6(o);o=c.2n.d7(o);if(c.E.3t){o=o.M(/<3t(.*?[^>]?)>([\\w\\W]*?)<\\/3t>/gi,\'<1G 1W="C-3t-1l" $1>$2</1G>\')}o=o.M(/\\$/g,\'&#36;\');o=o.M(/&8j;/g,\'&\');o=o.M(/<a 22="(.*?[^>]?)®(.*?[^>]?)">/gi,\'<a 22="$1&hP$2">\');j 1L=c;j $1A=$("<1A/>").o($.9S(o,1i,1j));j 5A={\'b\':\'7M\',\'i\':\'em\',\'6P\':\'4s\'};$1A.1B(\'b, i, 6P\').30(f(){q 1L.1b.51(c,5A[c.1n.2O()])});o=$1A.o();j 25=[\'hQ\',\'o\',\'d8\',\'K\',\'2Q\',\'4q\',\'hR\',\'2f\'];if(!c.E.3t){25.2S(\'3t\')}o=c.2n.d9(o,25);o=o.M(/<!--[\\s\\S]*?-->/gi,\'\');o=c.3l.3c(o);if(o.3p(/^(||\\s||<br\\s?\\/?>||&5B;)$/i)!==-1){q c.E.3W}q o},9T:f(o){q c.2n.89(o)},89:f(o){o=o.M(/\\42/g,\'\');o=o.M(/&#7P;/gi,\'\');o=o.M(/&5B;/gi,\' \');if(o.3p(/^<p>(||\\s||<br\\s?\\/?>||&5B;)<\\/p>$/i)!==-1){q\'\'}j $1A=$("<1A/>").o($.9S(o,1i,1j));$1A.1B(\'*[3h=""]\').2l(\'3h\');$1A.1B(\'*[1W=""]\').2l(\'1W\');$1A.1B(\'*[3J=""]\').2l(\'3J\');$1A.1B(\'.C-d2-4j\').1E(f(){$(c).2V().84()});$1A.1B(\'2f\').1E(f(){$(c).2V().84()});$1A.1B(\'.C-J-23, #C-1y-23\').1x();o=$1A.o();if(c.E.3t){o=o.M(/<1G 1W="C-3t-1l"(.*?[^>]?)>([\\w\\W]*?)<\\/1G>/gi,\'<3t$1>$2</3t>\')}o=c.2n.da(o);o=o.M(1N 2a(\'<br\\\\s?/?></h\',\'gi\'),\'</h\');o=o.M(1N 2a(\'<br\\\\s?/?></1R>\',\'gi\'),\'</1R>\');o=o.M(1N 2a(\'</1R><br\\\\s?/?>\',\'gi\'),\'</1R>\');if(c.E.9d){o=o.M(/<1G>/gi,\'<1G 1W="\'+c.E.9d+\'">\')}if(c.E.bj){o=o.M(/<a(.*?)3J="db"(.*?[^>])>/gi,\'<a$1$2>\');o=o.M(/<a(.*?[^>])>/gi,\'<a$1 3J="db">\')}j dc={\'\\hS\':\'&hT;\',\'\\hU\':\'&hV;\',\'\\hW\':\'&hX;\',\'\\hY\':\'&hZ;\',\'\\i0\':\'&i1;\'};$.1E(dc,f(i,s){o=o.M(1N 2a(i,\'g\'),s)});o=o.M(/&8j;/g,\'&\');q o},9U:f(o,1y){j 2U=c.J.2U();c.4b.1p=L;c.1y.5C=L;o=$.2R(o);if(1y!==1j){o=o.M(/</g,\'&9V;\');o=o.M(/>/g,\'&gt;\')}if(c.E.5K===L||c.E.12===\'N\'||(2U.1f===1&&c.1b.55([\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'1R\',\'a\',\'4Q\']))){c.4b.1p=1j;if(15 1y!==\'1e\'){o=c.2n.9W(o)}q o}R if(2U.1f===1&&c.1b.55([\'8i\',\'3U\',\'2o\'])){if(15 1y!==\'1e\'){o=o.M(/<br\\s?\\/?>|<\\/H[1-6]>|<\\/p>|<\\/1A>|<\\/1R>|<\\/3U>/gi,\'\\n\');o=c.2n.9W(o)}o=o.M(/\\n/g,\'<br />\');q o}R if(c.E.12===\'1G\'||(2U.1f===1&&c.1b.55(\'1G\'))){o=o.M(/”/g,\'"\');o=o.M(/“/g,\'"\');o=o.M(/‘/g,\'\\\'\');o=o.M(/’/g,\'\\\'\');o=c.2n.8k(o);q o}c.4b.1p=L;c.1y.5C=1j;if(15 1y!==\'1e\'){j de=o.2W(1N 2a(\'</(\'+c.E.9p.3X(\'|\').7S()+\')>\',\'gi\'));j df=o.2W(1N 2a(\'<hr\\s?/?>\',\'gi\'));if(de===2B&&df===2B){c.1y.5C=L;q o}}j 9X=L;if(!c.1b.7e()){j dg=o.2W(/<br\\s?\\/?>/gi);j dh=o.2W(/\\n/gi);if(!dg&&!dh){9X=1j}}if(9X){c.4b.1p=1j}R{o=c.3l.3c(o)}q o},9W:f(o){j 3E=1i.3u(\'1A\');3E.3K=o;o=3E.9Y||3E.9Z;q $.2R(o)},d6:f(o){o=c.2n.di(o);o=c.2n.dj(o);q o},di:f(o){j 1G=o.2W(/<1G(.*?)>([\\w\\W]*?)<\\/1G>/gi);if(1G===2B){q o}$.1E(1G,$.1k(f(i,s){j 2v=s.2W(/<1G(.*?)>([\\w\\W]*?)<\\/1G>/i);2v[2]=2v[2].M(/<br\\s?\\/?>/g,\'\\n\');2v[2]=2v[2].M(/&5B;/g,\' \');if(c.E.6K){2v[2]=2v[2].M(/\\t/g,1N 7A(c.E.6K+1).3X(\' \'))}2v[2]=c.2n.8k(2v[2]);2v[2]=2v[2].M(/\\$/g,\'&#36;\');o=o.M(s,\'<1G\'+2v[1]+\'>\'+2v[2]+\'</1G>\')},c));q o},dj:f(o){j 1F=o.2W(/<1F(.*?)>([\\w\\W]*?)<\\/1F>/gi);if(1F===2B){q o}$.1E(1F,$.1k(f(i,s){j 2v=s.2W(/<1F(.*?)>([\\w\\W]*?)<\\/1F>/i);2v[2]=2v[2].M(/&5B;/g,\' \');2v[2]=c.2n.8k(2v[2]);2v[2]=2v[2].M(/\\$/g,\'&#36;\');o=o.M(s,\'<1F\'+2v[1]+\'>\'+2v[2]+\'</1F>\')},c));q o},d7:f(o){q o.M(/<5l(.*?)>([\\w\\W]*?)<\\/5l>/gi,\'<3V$1 3J="C-5l-1l">$2</3V>\')},da:f(o){q o.M(/<3V(.*?) 3J="C-5l-1l"(.*?)>([\\w\\W]*?)<\\/3V>/gi,\'<5l$1$2>$3</5l>\')},8k:f(56){56=6b(56).M(/&8j;/g,\'&\').M(/&9V;/g,\'<\').M(/&gt;/g,\'>\').M(/&dk;/g,\'"\');56=56.M(/&/g,\'&8j;\').M(/</g,\'&9V;\').M(/>/g,\'&gt;\').M(/"/g,\'&dk;\');q 56},d9:f(3b,a0){if(15 a0===\'1e\'){q 3b.M(/(<([^>]+)>)/gi,\'\')}j 25=/<\\/?([a-z][a-7f-9]*)\\b[^>]*>/gi;q 3b.M(25,f($0,$1){q a0.5r($1.2O())===-1?$0:\'\'})},3A:f(o){q o.M(/<2f(.*?[^>]?)1W="C-J-23"(.*?[^>]?)>([\\w\\W]*?)<\\/2f>/gi,\'\')},dm:f(o){o=$.2R(o);o=o.M(/\\n/g,\'\');o=o.M(/[\\t]*/g,\'\');o=o.M(/\\n\\s*\\n/g,"\\n");o=o.M(/^[\\s\\n]*/g,\' \');o=o.M(/[\\s\\n]*$/g,\' \');o=o.M(/>\\s{2,}</g,\'> <\');o=o.M(/\\n\\n/g,"\\n");o=o.M(/\\42/g,\'\');q o},a1:f(o){o=$.2R(o);o=o.M(/\\n/g,\'\');o=o.M(/[\\t]*/g,\'\');o=o.M(/\\n\\s*\\n/g,"\\n");o=o.M(/^[\\s\\n]*/g,\'\');o=o.M(/[\\s\\n]*$/g,\'\');o=o.M(/>\\s{2,}</g,\'><\');o=o.M(/\\n\\n/g,"\\n");o=o.M(/\\42/g,\'\');q o}}},1F:f(){q{5T:1j,o:L,2b:f(o){o=$.2R(o);if(c.E.12===\'3a\'){o=c.2n.9R(o)}c.1P.4v();c.G.O().o(o);c.1P.4w()},2H:f(o){o=$.2R(o);if(c.E.12===\'3a\'){o=c.2n.9R(o)}c.G.O().o(o);c.2k.2X()},1c:f(){if(c.E.12===\'3a\'){q c.G.3a().2J()}R{j o=c.G.O().o();o=c.2n.9T(o);q o}},8l:f(){if(!c.1F.5T){q}j o=c.G.O().o();j 7g=c.1F.9J(o);if(c.1F.dn(7g)){q}c.1F.o=7g;if(c.E.12!==\'3a\'){c.G.1s(\'8l\',o);c.G.1s(\'a2\',o);q}if(c.E.12===\'3a\'){3C($.1k(f(){c.1F.do(o)},c),10)}},do:f(o){o=c.G.1s(\'i2\',o);o=c.2n.89(o);c.G.3a().2J(o);c.G.1s(\'8l\',o);if(c.2b===L){c.G.1s(\'a2\',o)}c.2b=L},dn:f(7g){q(c.1F.o&&c.1F.o===7g)},9J:f(o){o=c.2n.dm(o);q c.2n.3A(o)}}},G:f(){q{id:f(){q c.$O.Q(\'id\')},1w:f(){q c.$1w},O:f(){q c.$O},3a:f(){q c.$3a},2c:f(){q(c.E.12===\'3a\')?c.$2c:c.$1w},1m:f(){q(c.$1m)?c.$1m:L},1J:f(){q(c.$1J)?c.$1J:L},3g:f(){q $.5m({},c)},5I:f(){c.G.O().70(\'C-5I\')},7h:f(1M){c.G.7i=1M},6c:f(){q c.G.7i},1s:f(12,e,1C){j dp=\'C\';j 77=L;j 1P=$.i3(c.G.1w()[0],\'1P\');if(15 1P!==\'1e\'&&15 1P[12]!==\'1e\'){j 2p=1P[12].1f;2K(j i=0;i<2p;i++){j a3=1P[12][i].a3;if(a3===\'1s.\'+dp){j 57=1P[12][i].57;j 2h=(15 1C===\'1e\')?[e]:[e,1C];77=(15 2h===\'1e\')?57.4a(c,e):57.4a(c,e,2h)}}}if(77){q 77}if(15 c.E.4c[12]===\'1e\'){q(15 1C===\'1e\')?e:1C}j 1s=c.E.4c[12];if($.5G(1s)){q(15 1C===\'1e\')?1s.4a(c,e):1s.4a(c,e,1C)}R{q(15 1C===\'1e\')?e:1C}},7U:f(){c.E.dq=1j;c.G.1s(\'7U\');$(\'.C-1C-3v\').2g(\'1H.C-1C-3v\').2u(\'C-1C-3v\');$(\'.C-3h-1l\').1x();$(\'#C-88-\'+c.1T).1x();c.G.O().2u(\'C-in\');c.G.O().2u(\'C-5I\');c.G.O().2g(\'1t.C-1x-9O\');c.a4.i4();c.$1w.2g(\'.C\').i5(\'C\');c.G.O().2g(\'.C\');$(1i).2g(\'.C-1J.\'+c.1T);$(1i).2g(\'6W.C-8m.\'+c.1T);$(1i).2g(\'6W.C.\'+c.1T);$(1i).2g(\'5v.C.\'+c.1T+\' 1H.C.\'+c.1T);$(2G).2g(\'.C-1m.\'+c.1T);$("2Q").2g(\'8n.C.\'+c.1T);$(c.E.3M).2g(\'8n.C.\'+c.1T);j 1L=c;$.1E(c.E.5J,f(i,s){$(2G).2g(\'.C-8o-\'+s);$(1i).2g(\'.C-8o-\'+s);$("2Q").2g(\'.C-8o-\'+s);1L.G.O().2g(\'.C-8o-\'+s)});c.$1w.2g(\'1H.C-1H-3z-2N\');c.$1w.2u(\'C-1H-3z-2N\');c.G.O().2u(\'C-O C-i6 C-2t\');c.G.O().2l(\'64\');j o=c.1F.1c();if(c.E.1m&&c.$1m){c.$1m.1B(\'a\').1E(f(){j $el=$(c);if($el.1C(\'1d\')){$el.1C(\'1d\').1x();$el.1C(\'1d\',{})}})}if(c.E.12===\'3a\'){c.$2c.2I(c.$1w);c.$2c.1x();c.$1w.2J(o).2w()}if(c.E.1J){c.$1J.1x()}if(c.E.1m&&c.$1m){c.$1m.1x()}if(c.$3S){c.$3S.1x()}if(c.$5D){c.$5D.1x()}$(\'.C-K-3w\').1x();ce(c.81)}}},1d:f(){q{1Z:f(1M,$1d,a5){if(1M===\'28\'&&c.E.9h){$.1E(c.E.9h,$.1k(f(i,s){j 1g;j 12=(c.1b.5z(s.2h[0]))?\'T\':\'N\';if(12===\'T\'){1g=\'T.28\'}R{1g=\'N.28\'}a5[i]={1g:1g,2h:s.2h,1z:s.1z}},c))}$.1E(a5,$.1k(f(2z,2j){j $2Y=$(\'<a 22="#" 1W="C-1d-\'+2z+\'" 5o="14">\'+2j.1z+\'</a>\');$2Y.1D(\'1H\',$.1k(f(e){e.26();j 12=\'1g\';j 1s=2j.1g;if(2j.3D){12=\'3D\';1s=2j.3D}R if(2j.1d){12=\'1d\';1s=2j.1d}if($(e.1V).2T(\'C-1d-K-76\')){q}if(15 2j.2h!==\' 1e\'){c.14.3G(e,2z,12,1s,2j.2h)}R{c.14.3G(e,2z,12,1s)}c.1d.6d()},c));c.1Q.9N($2Y,2z,2j);$1d.Q(\'3J\',1M).1I($2Y)},c))},2w:f(e,1a){c.G.O().2k();j $14=c.14.1c(1a);j $1d=$14.1C(\'1d\').7Y(1i.2Q);if($14.2T(\'6e\')){c.1d.6d()}R{c.1d.6d();c.G.1s(\'i7\',{1d:$1d,1a:1a,14:$14});c.14.d1(1a);$14.21(\'6e\');j 6f=$14.3L();j a6=$1d.2F();if((6f.2y+a6)>$(1i).2F()){6f.2y=dr.9I(0,6f.2y-a6)}j 2i;j 2y=6f.2y+\'3O\';if(c.14.1m().2T(\'1m-58-2c\')){2i=$14.3d().2i+$14.8p()+c.E.5g;j 3d=\'58\';if(c.E.3M!==1i){2i=($14.8p()+c.$1m.3L().2i)+c.E.5g;3d=\'6g\'}$1d.2q({3d:3d,2y:2y,2i:2i+\'3O\'}).ds(8q)}R{2i=($14.8p()+6f.2i)+\'3O\';$1d.2q({3d:\'6g\',2y:2y,2i:2i}).ds(8q)}c.G.1s(\'i8\',{1d:$1d,1a:1a,14:$14});c.$1d=$1d}$(1i).a7(\'1H.C-1d\',$.1k(c.1d.2E,c));c.$O.a7(\'1H.C-1d\',$.1k(c.1d.2E,c));$(1i).a7(\'3T.C-1d\',$.1k(c.1d.7j,c));$1d.1D(\'a8.C-1d\',$.1k(c.1b.a9,c));$1d.1D(\'aa.C-1d\',$.1k(c.1b.8r,c));e.8s()},7j:f(e){if(e.5p!==c.2C.6U){q}c.1d.6d();c.G.O().2k()},6d:f(){c.14.1m().1B(\'a.6e\').2u(\'C-8b\').2u(\'6e\');c.1b.8r();$(\'.C-1d-\'+c.1T).i9(6V);$(\'.C-1d-K-du\').2u(\'C-1d-K-du\');if(c.$1d){c.$1d.2g(\'.C-1d\');c.G.1s(\'ia\',c.$1d);c.$1d=L}},2E:f(e){j $1d=$(e.1V);if(!$1d.2T(\'6e\')&&!$1d.2T(\'C-1d-K-76\')){$1d.2u(\'6e\');$1d.2g(\'a8 aa\');c.1d.6d()}}}},1P:f(){q{ab:L,8t:1j,4B:L,4v:f(){c.1P.4B=1j},4w:f(){j 1L=c;3C(f(){1L.1P.4B=L},1)},2L:f(){c.G.O().1D(\'dv.C ib.C\',f(e){e.26();e.8s()});c.G.O().1D(\'4C.C\',$.1k(f(e){e=e.7k||e;if(c.E.12===\'N\'||c.E.12===\'1G\'){e.26();q L}if(2G.8u===1e||!e.8v){q 1j}if(e.8v.5a.1f===0){q c.1P.4C(e)}R{c.1P.dw(e)}c.G.1s(\'4C\',e)},c));c.G.O().1D(\'1H.C\',$.1k(f(e){j 7i=c.G.6c();j 12=(7i===\'1H\'||7i===\'43\')?L:\'1H\';c.G.7h(12);c.1b.6h();c.G.1s(\'1H\',e)},c));c.G.O().1D(\'4b.C\',$.1k(c.4b.2L,c));c.G.O().1D(\'1t.C\',$.1k(c.1t.2L,c));c.G.O().1D(\'3T.C\',$.1k(c.3T.2L,c));c.1P.dx=$.1k(f(){if(c.1P.4B){q}c.1F.8l();if(c.2A.is()){ic(c.81);c.81=3C($.1k(c.2A.4u,c),8q)}},c);j 1L=c;c.a4=1N ih(f(dy){dy.ii(f(5b){1L.1h.dz(1L,5b);1L.1P.dx()})});c.a4.1Q(c.G.O()[0],{ij:1j,3Y:1j,ik:1j,il:1j,im:1j});c.G.O().1D(\'2k.C\',$.1k(f(e){if(c.6i){q}if(c.1P.ac(\'2k\')){c.G.1s(\'2k\',e)}c.1P.ab=1j;c.1P.8t=L;if(c.J.1r()===L){j 1q=c.J.1c();j Y=c.J.Y(1q);Y.8d(c.G.O()[0],0);Y.8e(c.G.O()[0],0);c.J.41(1q,Y)}},c));$(1i).1D(\'6W.C-8m.\'+c.1T,$.1k(f(e){if(c.2b||c.6i){q}if($(e.1V).2r(\'#\'+c.G.id()+\', .C-1m, .C-1d, #C-V-2c, .C-1C-3v\').dA()!==0){q}c.1b.6h();if(!c.1P.8t&&c.1P.ac(\'8m\')){c.G.1s(\'8m\',e)}c.1P.ab=L;c.1P.8t=1j},c))},dw:f(e){e.26();e.8s();if(!c.E.7F&&!c.E.7G){q}j 5a=e.8v.5a;c.1o.dB(5a[0],e)},4C:f(e){c.G.1s(\'4C\',e)},ac:f(1M){q(15 c.E.4c[1M]!==\'1e\'&&$.5G(c.E.4c[1M]))}}},1O:f(){q{2w:f(){c.V.3c(\'1O\',c.1v.1c(\'1O\'),dC);c.1o.2L(\'#C-V-1O-1o\',c.E.5f,c.1O.1y);j 1p=c.J.1c().4Z();$(\'#C-4r\').2J(1p);c.V.2w()},1y:f(2s,44,e){if(15 2s.6I!==\'1e\'){c.V.3m();c.G.1s(\'io\',2s);q}c.2t.1x();j $K;j 1p;j $el=(c.1b.ad(2s))?$(2s):L;if(44){1p=2s.4r;c.J.3A();c.1y.ae(e,c.J.23());c.J.2P()}R{1p=(15 1p===\'1e\'||1p===\'\')?2s.4r:$(\'#C-4r\').2J();c.V.3m()}c.2e.2H();c.1J.5U();if($el!==L){$K=c.1y.F($el)}R{$K=$(\'<a 22="\'+2s.af+\'">\'+1p+\'</a>\');$K=c.1y.F($K)}c.1K.2I($K);c.G.1s(\'5f\',$K,2s)}}},2k:f(){q{2b:f(){c.G.O().2k();if(c.E.12===\'N\'){q}j 31=c.G.O().4k().31();if(31.1f===0&&(31[0].1f===0||31[0].1n===\'7a\'||31[0].6a===3)){q}if(31[0].1n===\'7c\'||31[0].1n===\'7d\'){31=31.1B(\'1R\').31()}c.1K.2b(31)},2X:f(){c.G.O().2k();j 3r=(c.E.N)?c.G.O():c.2k.3r();j 1q=c.J.1c();j Y=c.J.Y(1q);if(3r.1f===0){q}j 8w=3r[0].8h;if(!c.4o.9F()&&15 8w!==\'1e\'&&c.1b.7b(8w.1n)){c.1K.2X(8w)}R{Y.69(3r[0]);Y.3R(L);c.J.41(1q,Y)}},3r:f(){q c.G.O().4k().3r()},is:f(){q c.G.O()[0]===1i.ip}}},1h:f(){q{2w:f(){c.V.3c(\'1h\',c.1v.1c(\'1h\'),dC);c.1o.2L(\'#C-V-1h-3s\',c.E.5e,c.1h.1y);c.V.2w()},1y:f(2s,44,e){if(15 2s.6I!==\'1e\'){c.V.3m();c.G.1s(\'iq\',2s);q}c.2t.1x();j $2x=$(\'<2x>\');j $3o;if(c.1b.ad(2s)){$3o=$(2s)}R{$3o=$(\'<3o>\');$3o.Q(\'6j\',2s.af)}$2x.1I($3o);j 1G=c.1b.3Z(c.J.1r(),\'1G\');if(44){c.1J.5U();c.J.3A();j F=c.1y.ae(e,c.J.23());j $1Y=$(F).1Y();c.J.2P();c.2e.2H();if(15 $1Y!==\'1e\'&&$1Y.1f!==0&&$1Y[0].1n===\'6k\'){c.G.1s(\'dD\',$1Y[0].6j,$1Y);$1Y.2r(\'2x, p\',c.G.O()[0]).30($2x);c.1K.2I($2x)}R{if(1G){$(1G).2I($2x)}R{c.1y.F($2x)}c.1K.2I($2x)}}R{c.V.3m();c.2e.2H();c.1J.5U();if(1G){$(1G).2I($2x)}R{c.1y.F($2x)}c.1K.2I($2x)}c.1Q.3c();c.G.1s(\'5e\',$3o,2s)},dE:f($1h){$1h.1D(\'ir\',f(e){e.26()});$1h.2g(\'1H.C 5v.C\').1D(\'1H.C 5v.C\',$.1k(f(){c.1h.dF($1h)},c))},dF:f($1h){c.1Q.1h=$1h;j $K=$1h.2r(\'a\',c.$O[0]);c.V.3c(\'1h-2N\',c.1v.1c(\'2N\'),it);c.V.ag();c.1h.dG=c.V.dH(c.1v.1c(\'5N\'));c.1h.dI=c.V.ah(c.1v.1c(\'3k\'));c.1h.dG.1D(\'1H\',$.1k(c.1h.1x,c));c.1h.dI.1D(\'1H\',$.1k(c.1h.41,c));$(\'#C-1h-1z\').2J($1h.Q(\'8x\'));j $ai=$(\'#C-1h-K\');$ai.Q(\'22\',$1h.Q(\'6j\'));if($K.1f!==0){$ai.2J($K.Q(\'22\'));if($K.Q(\'1V\')===\'6l\'){$(\'#C-1h-K-6m\').8y(\'8z\',1j)}}$(\'.C-K-3w\').1x();c.V.2w();$(\'#C-1h-1z\').2k()},41:f(){j $1h=c.1Q.1h;j $K=$1h.2r(\'a\',c.G.O()[0]);j 1z=$(\'#C-1h-1z\').2J().M(/(<([^>]+)>)/ig,"");$1h.Q(\'8x\',1z).Q(\'1z\',1z);j K=$.2R($(\'#C-1h-K\').2J()).M(/(<([^>]+)>)/ig,"");if(K!==\'\'){j 6n=\'((dJ--)?[a-7f-9]+(-[a-7f-9]+)*\\\\.)+[a-z]{2,}\';j 3n=1N 2a(\'^(6L|7l|4t)://\'+6n,\'i\');j 6o=1N 2a(\'^\'+6n,\'i\');if(K.3p(3n)===-1&&K.3p(6o)===0&&c.E.4d){K=c.E.4d+\'://\'+K}j 1V=($(\'#C-1h-K-6m\').8y(\'8z\'))?1j:L;if($K.1f===0){j a=$(\'<a 22="\'+K+\'">\'+c.1b.5E($1h)+\'</a>\');if(1V){a.Q(\'1V\',\'6l\')}$1h.30(a)}R{$K.Q(\'22\',K);if(1V){$K.Q(\'1V\',\'6l\')}R{$K.2l(\'1V\')}}}R if($K.1f!==0){$K.30(c.1b.5E($1h))}c.V.3m();c.2e.2H();c.1Q.aj()},dz:f(1L,5b){if(1L.1P.4B){q}j 2p=5b.dK.1f;2K(j i=0;i<2p;i++){j F=5b.dK[i];if(F.6a===1){j 4k=$(F).4k(\'3o\');if(F.1n!==\'6k\'&&4k.1f!==0){j dL=4k.1f;2K(j z=0;z<dL;z++){1L.1h.1x(L,$(4k[z]))}}R if(F.1n===\'6k\'&&5b.6p===2B){1L.1h.1x(1j,$(F))}R if(F.1n===\'6k\'&&(15 5b.6p!==2B&&5b.6p.id!==\'C-1h-2c\')){1L.1h.1x(1j,$(F))}}}},1x:f(e,$1h){$1h=(15 $1h===\'1e\')?$(c.1Q.1h):$1h;j $K=$1h.2r(\'a\',c.G.O()[0]);j $2x=$1h.2r(\'2x, p\',c.G.O()[0]);j $1X=$1h.1X();if($(\'#C-1h-2c\').1f!==0){$1X=$(\'#C-1h-2c\').1X()}j $1Y;if($2x.1f!==0){$1Y=$2x.1Y();$2x.1x()}R if($K.1f!==0){$1X=$K.1X();$K.1x()}R{$1h.1x()}$(\'#C-1h-2c\').1x();if(e!==L){if($2x.1f!==0&&$1Y.1f!==0){c.1K.2b($1Y)}R if($1X.1f!==0){c.1K.2b($1X)}}if(15 e!==\'iu\'){c.V.3m()}c.G.1s(\'dD\',$1h[0].6j,$1h);c.1b.ak()}}},3x:f(){q{8a:f(){if(!c.2D.1c()){q}j $1R=$(c.J.1r()).2r(\'1R\');j $2d=$1R.2d();if($2d.1f===0||$2d[0].1n!==\'7m\'){q}c.2e.2H();1i.4h(\'3x\');c.J.3k();c.3x.dM();c.J.2P()},75:f(){if(!c.2D.1c()){q}c.2e.2H();1i.4h(\'7L\');j $2Y=$(c.J.1r()).2r(\'1R\',c.G.O()[0]);if(c.1b.5s()){j $1R=$(c.J.1r()).2r(\'1R\');if($1R.1f!==0&&$1R.1X().1f!==0&&$1R.1X()[0].1n===\'7m\'){c.J.3k();$1R.1X().2I($1R);c.J.2P()}}if($2Y.1f===0){1i.4h(\'dN\',L,\'p\')}},dM:f(){c.G.O().1B(\'1R\').1E(f(i,s){j $1Y=$(s).1Y();if($1Y.1f!==0&&($1Y[0].1n===\'7c\'||$1Y[0].1n===\'7d\')){$(s).1I($1Y)}})}}},N:f(){q{28:f(1l,Q,1u,12){1l=1l.2O();if(1l===\'2f\'){q}if(c.1b.55([\'6X\',\'iv\'])||c.1b.dO()){q}j 25=[\'b\',\'4K\',\'i\',\'4L\',\'5M\',\'dP\',\'5h\',\'bn\',\'bo\'];j 3I=[\'7M\',\'7M\',\'em\',\'em\',\'u\',\'4s\',\'4s\',\'bD\',\'bE\'];2K(j i=0;i<25.1f;i++){if(1l===25[i]){1l=3I[i]}}c.2t.1x();c.2e.2H();q(c.1b.5s())?c.N.82(1l,Q,1u,12):c.N.83(1l,Q,1u,12)},82:f(1l,Q,1u,12){j N=c.J.N();if(N){j 3H=N.1n.2O();if(3H===1l){if(c.1b.4D(N.3K)){c.1K.2I(N);$(N).1x()}R{j $31=c.N.al(N,3H);c.1K.2I($31)}}R{c.N.am(1l,Q,1u,12)}}R{c.N.am(1l,Q,1u,12)}},am:f(1l,Q,1u,12){j F=1i.3u(1l);F=c.N.4f(F,Q,1u,12);c.1y.F(F);c.1K.2b(F)},iw:f(1l,Q,1u,12,N,3H){j F=1i.3u(1l);F=c.N.4f(F,Q,1u,12);j $31=c.N.al(N,3H);$31.2I(F);c.1K.2b(F)},83:f(1l,Q,1u,12){j 1L=c;c.N.dQ(1l);c.J.3k();1i.4h(\'dP\');j $dR=c.G.O().1B(\'6P\');$dR.1E(f(i,s){j $8A=$(s);j 6q=1i.3u(1l);if(!$8A.2T(\'C-N-an\')){6q=1L.N.4f(6q,Q,1u,12)}j $6q=$(6q);$8A.30($6q.o($8A.2V()))});if(1l!==\'4s\'){c.G.O().1B(\'N\').1E(f(i,s){1L.1b.51(s,\'4s\')})}if(1l!==\'u\'){c.G.O().1B(\'dS\').1E(f(i,s){1L.1b.51(s,\'u\')})}c.G.O().1B(\'1G, h1, h2, h3, h4, h5, h6\').4k(1l).30(f(){q $(c).2V()});c.$O.1B(c.E.6O.3X(\', \')).1E($.1k(f(i,s){j $el=$(s);j 7W=$el.2q(\'1p-dT\');if($el.2T(\'C-J-23\')){q}R if(c.2n.a1(s.3K)===\'\'){$el.1x();q}R if(s.1n===\'dU\'&&$el.2T(\'C-N-an\')){$el.30($el.2V());q}R if(7W===\'6J-ix\'){if(s.1n===\'dU\'||(s.1n===\'U\'&&s.3Y.1f===0)){$el.30($el.2V())}R{$el.2q(\'1p-dT\',\'\');c.1b.dV($el,\'3h\')}}},c));c.J.2P()},dQ:f(1l){c.J.3k();j 1L=c;if(1l!==\'4s\'){c.G.O().1B(\'4s\').1E(f(i,s){1L.1b.51(s,\'N\')})}if(1l!==\'u\'){c.G.O().1B(\'u\').1E(f(i,s){1L.1b.51(s,\'dS\')})}c.G.O().1B(1l).1E(f(){j $el=$(c);$el.30($(\'<6P />\').21(\'C-N-an\').o($el.2V()))});c.J.2P()},al:f(N,3H){j 6r=1i.3u(\'2f\');6r.id=\'C-N-6r\';6r=c.1y.F(6r);j 2X=c.1b.8B(N);j 1F=c.1b.5E(N);j dW=(2X)?\'\':\'<\'+3H+\'>\';1F=1F.M(/<2f(.*?[^>])id="C-N-6r">​<\\/2f>/i,\'</\'+3H+\'>\'+dW);j $1F=$(1F);$(N).30($1F);q $1F.31()},4f:f(N,Q,1u,12){if(15 Q===\'1e\'){q N}j 1g=(15 12===\'1e\')?\'M\':12;if(Q===\'1W\'){N=c.N[1g+\'cm\'](1u,N)}R{if(1g===\'1x\'){N=c.N[1g+\'62\'](Q,N)}R if(1g===\'cn\'){N=c.N[1g+\'62\'](N)}R{N=c.N[1g+\'62\'](Q,1u,N)}}q N},47:f(N){q(15 N===\'1e\')?c.J.3e():N},41:f(1l,Q,1u,12){j 3e=c.J.3e();j ao=[];j 1L=c;$.1E(3e,f(i,s){if($.7n(1l)){if($.3P(s.1n.2O(),1l)===-1){q}}R{if(1l!==\'*\'&&s.1n.2O()!==1l){q}}ao.2S(1L.N.4f(s,Q,1u,12))});q ao},co:f(1u,N){q $(c.N.47(N)).2l(\'1W\').21(1u)[0]},70:f(1u,N){q $(c.N.47(N)).70(1u)[0]},21:f(1u,N){q $(c.N.47(N)).21(1u)[0]},2u:f(1u,N){q $(c.N.47(N)).2u(1u)[0]},cp:f(N){q $(c.N.47(N)).2l(\'1W\')[0]},cq:f(N,Q,1u){N=c.N.2l(Q,c.N.47(N));q $(N).Q(Q,1u)[0]},cr:f(Q,1u,N){N=c.N.47(N);j 1L=c;j 3i=[];$.1E(N,f(i,s){j $el=$(s);if($el.Q(Q)){3i.2S(1L.N.2l(Q,s))}R{3i.2S(1L.N.85(Q,1u,s))}});q 3i},85:f(Q,1u,N){q $(c.N.47(N)).Q(Q,1u)[0]},2l:f(Q,N){q $(c.N.47(N)).2l(Q)[0]},cs:f(N){N=c.N.47(N);j 3i=[];$.1E(N,f(i,s){if(15 s.3Y===\'1e\'){3i.2S(s)}j $el=$(s);j 2p=s.3Y.1f;2K(j z=0;z<2p;z++){$el.2l(s.3Y[z].1M)}3i.2S($el[0])});q 3i},9k:f(){1i.4h(\'9k\')}}},1y:f(){q{2H:f(o){c.1F.2H(o)},1p:f(1p){c.2t.1x();1p=1p.4Z();1p=$.2R(1p);j 3E=1i.3u(\'1A\');3E.3K=1p;1p=3E.9Y||3E.9Z;1p=1p.M(/\\n/g,\' \');if(c.1b.7e()){j $F=$(c.E.3W);c.G.O().o(\'\').1I($F);$F.o(1p);c.1K.2X($F)}R{j 1q=c.J.1c();j F=1i.5x(1p);if(1q.6s&&1q.8C){j Y=1q.6s(0);Y.5V();Y.53(F);Y.8f(F);Y.3R(1j);c.J.41(1q,Y)}}c.1b.6h();c.2M.28()},dX:f(o){c.1y.5C=1j;c.1y.o(o,L)},o:f(o,2n){c.G.O().2k();j T=c.J.T();j N=c.J.N();if(2n!==L){o=c.2n.9U(o,1j)}j 1q=c.J.1c();j Y=c.J.Y(1q);Y.5V();c.J.41(1q,Y);c.J.3k();j F=1i.3u(\'2f\');F.id=\'C-1y-23\';F=c.1y.F(F);if(c.1y.5C&&T){if(c.1b.7e()){c.G.O().o(o);c.2k.2X()}R{c.1P.4v();j 1l=T.1n.2O();if(1l!==\'p\'||1l!==\'1A\'){1l=\'p\'}j 4E=\'\',4F=\'\';if(N){4E=\'</\'+N.1n.2O()+\'>\';4F=\'<\'+N.1n.2O()+\'>\'}j 1F=c.G.O().o();1F=1F.M(/<2f(.*?[^>])id="C-1y-23">​<\\/2f>/i,4E+\'</\'+1l+\'>\'+o+\'<\'+1l+\'>\'+4F);c.G.O().o(1F);c.J.2P();j 1r=c.J.1r();if(1r&&1r.1n===\'P\'&&1r.3K===\'\'){c.1K.4y(1r)}c.G.O().1B(\'p:dY\').1x();c.1P.4w()}}R{if(N){j $1A=$("<1A/>").o($.9S(o,1i,1j));$1A.1B(N.1n.2O()).1E(f(){$(c).2V().84()});o=$1A.o()}if(c.1b.7e()){j $F=$(c.E.3W);c.G.O().o(\'\').1I($F);$F.o(o);c.1K.2X($F)}R{$(F).4y(o);c.J.2P();c.1K.2I(F);$(F).1x()}}c.1b.6h();c.2M.28()},F:f(F,dZ){if(15 c.2b!==\'1e\'){c.G.O().2k()}F=F[0]||F;j T=c.J.T();j 5C=c.1b.5z(F.1n);if(5C&&T){c.1P.4v();j N=c.J.N();j 1l=T.1n.2O();if(1l!==\'p\'||1l!==\'1A\'){1l=\'p\'}j 4E=\'\',4F=\'\';if(N){4E=\'</\'+N.1n.2O()+\'>\';4F=\'<\'+N.1n.2O()+\'>\'}j 23=1i.3u(\'2f\');23.id=\'C-1y-23\';c.1y.F(23);j 1F=c.G.O().o();1F=1F.M(/<2f(.*?[^>])id="C-1y-23">​<\\/2f>/i,4E+\'</\'+1l+\'><2f id="C-1y-23">​</2f><\'+1l+\'>\'+4F);c.G.O().o(1F);j $23=c.G.O().1B(\'#C-1y-23\');$23.30(F);j 1r=c.J.1r();if(1r&&1r.1n===\'P\'&&1r.3K===\'\'){c.1K.4y(1r)}c.G.O().1B(\'p:dY\').1x();c.1P.4w()}R{j 1q=c.J.1c();j Y=c.J.Y(1q);if(dZ!==L){Y.5V()}Y.53(F);Y.3R(L);c.J.41(1q,Y)}c.1K.2X(F);q F},ae:f(e,F){F=F[0]||F;j Y;j x=e.9C,y=e.c7;if(1i.e0){j 6t=1i.e0(x,y);j 1q=1i.4z();Y=1q.6s(0);Y.8d(6t.iy,6t.3L);Y.3R(1j);Y.53(F)}R if(1i.e1){Y=1i.e1(x,y);Y.53(F)}R if(15 1i.2Q.e2!=="1e"){Y=1i.2Q.e2();Y.e3(x,y);j ap=Y.iz();ap.e3(x,y);Y.iA("iB",ap);Y.bJ()}q F},23:f(Y,F,3R){if(Y===2B){q}Y=Y.9P();5Z{Y.3R(3R);Y.53(F)}60(e){c.2k.2b()}}}},1t:f(){q{2L:f(e){if(c.6i){q}j 1a=e.5p;j 43=(1a>=37&&1a<=40);c.1t.3j=e.5W||e.4X;c.1t.1X=c.J.1X();c.1t.1r=c.J.1r();c.1t.T=c.J.T();c.1t.1G=c.1b.3Z(c.1t.1r,\'1G\');c.1t.2o=c.1b.3Z(c.1t.1r,\'2o\');c.1t.4Q=c.1b.3Z(c.1t.1r,\'4Q\');j e4=c.G.1s(\'1t\',e);if(e4===L){e.26();q L}c.4I.2L(e,1a);if(c.1b.8c()){c.1t.e5(43,1a);c.1t.e6(e,1a)}c.1t.e7(43);c.1t.e8(e,1a);if(!c.E.5K&&1a===c.2C.4T){e.26();j 1q=c.J.1c();j Y=c.J.Y(1q);if(!Y.5U){Y.5V()}q}if(c.E.5K&&1a===c.2C.bR){c.1t.e9()}if(c.E.5K&&1a===c.2C.bQ){c.1t.ea()}if(1a===c.2C.4T&&!e.4Y&&!e.5W&&!e.4X){j 4B=c.G.1s(\'iC\',e);if(4B===L){e.26();q L}if(c.1t.2o&&c.1t.eb(e)===1j){q L}if(c.1t.1G){q c.1t.ec(e)}R if(c.1t.2o||c.1t.4Q){q c.1t.aq(e)}R if(c.1t.T){3C($.1k(c.1t.ed,c),1);if(c.1t.T.1n===\'7m\'){j 1r=c.J.1r();j $1X=$(1r).2r(\'1R\',c.$O[0]);j $2D=$1X.2r(\'4e,4P\',c.$O[0]);if($1X.1f!==0&&c.1b.4D($1X.o())&&$2D.1Y().1f===0&&c.1b.4D($2D.1B("1R").3r().o())){$2D.1B("1R").3r().1x();j F=$(c.E.3W);$2D.2I(F);c.1K.2b(F);q L}}}R if(!c.1t.T){q c.1t.iD(e)}}if(1a===c.2C.9s||e.4X&&1a===ar||e.4X&&1a===as){q c.1t.ee(e,1a)}if(1a===c.2C.4T&&(e.5W||e.4Y)){q c.1t.aq(e)}if(1a===c.2C.5Q||1a===c.2C.5R){c.1b.7o()}if(1a===c.2C.5R&&$(\'#C-1h-2c\').1f!==0){c.1h.1x()}if(1a===c.2C.5Q){j T=c.J.T();if(T&&T.1n===\'7m\'&&c.1b.5s()&&c.1b.at()){c.3x.75();e.26();q}if(c.4o.ff()){j 2d=c.J.2d();j 8D=$(2d).2d()[0];if(2d&&2d.1n===\'ef\'){$(2d).1x()}if(8D&&8D.1n===\'ef\'){$(8D).1x()}}c.1t.eg();c.1t.eh(e);3C($.1k(f(){c.1F.5T=L;c.1t.ei();c.G.O().1B(\'*[3h]\').6Z(\'#C-1h-2c, #C-1h-iE\').2l(\'3h\');c.1t.ej(e);c.1F.5T=1j},c),1)}},e5:f(43,1a){if(!43&&(c.G.6c()===\'1H\'||c.G.6c()===\'43\')){c.G.7h(L);if(c.1t.ek(1a)){c.2e.2H()}}},ek:f(1a){j k=c.2C;j 48=[k.5Q,k.5R,k.4T,k.6U,k.9s,k.bT,k.bU,k.bW,k.bV];q($.3P(1a,48)===-1)?1j:L},e7:f(43){if(!43){q}if((c.G.6c()===\'1H\'||c.G.6c()===\'43\')){c.G.7h(L);q}c.G.7h(\'43\')},e6:f(e,1a){if(c.1t.3j&&1a===90&&!e.4Y&&!e.9D&&c.E.2e.1f){e.26();c.2e.71();q}R if(c.1t.3j&&1a===90&&e.4Y&&!e.9D&&c.E.6N.1f!==0){e.26();c.2e.86();q}R if(!c.1t.3j){if(1a===c.2C.5Q||1a===c.2C.5R||(1a===c.2C.4T&&!e.5W&&!e.4Y)){c.2e.2H()}}},eb:f(e){if(!c.1b.8B(c.1t.2o)){q}j 3E=c.2n.a1($(c.1t.2o).o());if(3E.3p(/(<br\\s?\\/?>){3}$/i)!==-1){e.26();j $3r=$(c.1t.2o).4k().3r().2d();$3r.2d().7V(\'br\').1x();$3r.7V(\'br\').1x();j F=$(c.E.3W);$(c.1t.2o).2I(F);c.1K.2b(F);q 1j}q},e9:f(){j 25=[c.1t.2o,c.1t.1G,c.1t.4Q];2K(j i=0;i<25.1f;i++){if(25[i]){c.1t.eo(25[i]);q L}}},ea:f(){j 25=[c.1t.2o,c.1t.1G,c.1t.4Q];2K(j i=0;i<25.1f;i++){if(25[i]){c.1t.ep(25[i]);q L}}},eo:f(1w){if(!c.1b.8B()){q}if(c.$O.2V().3r()[0]!==1w){q}j F=$(c.E.3W);$(1w).2I(F);c.1K.2b(F)},ep:f(1w){if(!c.1b.at()){q}if(c.$O.2V().1f>1&&c.$O.2V().31()[0]!==1w){q}j F=$(c.E.3W);$(1w).4y(F);c.1K.2b(F)},ee:f(e,1a){if(!c.E.bf){q 1j}if(c.1b.4D(c.1F.1c())&&c.E.7D===L){q 1j}e.26();c.2e.2H();j F;if(c.1t.1G&&!e.4Y){F=(c.E.6K)?1i.5x(7A(c.E.6K+1).3X(\'\\er\')):1i.5x(\'\\t\');c.1y.F(F)}R if(c.E.7D!==L){F=1i.5x(7A(c.E.7D+1).3X(\'\\er\'));c.1y.F(F)}R{if(e.4X&&1a===as){c.3x.75()}R if(e.4X&&1a===ar){c.3x.8a()}R if(!e.4Y){c.3x.8a()}R{c.3x.75()}}q L},e8:f(e,1a){if(c.1t.3j&&1a===65){c.1b.es()}R if(1a!==c.2C.bX&&!c.1t.3j){c.1b.6h()}},ec:f(e){e.26();j F=1i.5x(\'\\n\');j 1q=c.J.1c();j Y=c.J.Y(1q);Y.5V();Y.53(F);c.1K.2I(F);q L},aq:f(e){q c.1t.au(e)},iF:f(e){q c.1t.au(e,1j)},au:f(e,et){e.8s();j eu=1i.3u(\'br\');c.1y.F(eu);if(et===1j){j ev=1i.3u(\'br\');c.1y.F(ev)}q L},ed:f(){j 5F=c.J.T();j ew=5F.3K.M(/<br\\s?\\/?>/gi,\'\');if(5F.1n===\'9G\'&&c.1b.4D(ew)&&!$(5F).2T(\'C-in\')){j p=1i.3u(\'p\');$(5F).30(p);c.1K.2b(p);q L}R if(c.E.iG&&5F.1n===\'P\'){$(5F).2l(\'1W\').2l(\'3h\')}},eg:f(){j $1r=$(c.1t.1r);if($1r.1p().3p(/^\\42$/g)===0){$1r.1x()}},eh:f(e){j $1r=$(c.1t.1r);j $1X=$(c.1t.1X);j 3U=$1r.2r(\'3U\',c.$O[0]);if(3U.1f!==0&&$1r.2r(\'1R\',c.$O[0])&&$1X.4k(\'1R\').1f===1){if(!c.1b.4D($1r.1p())){q}e.26();$1r.1x();$1X.1x();c.1K.2b(3U)}},ei:f(){j av=f(){j o=$.2R(c.3K).M(/\\/t\\/n/g,\'\');if(o===\'\'){$(c).1x()}};c.G.O().1B(\'1R\').1E(av);c.G.O().1B(\'4e, 4P\').1E(av)},ej:f(e){j o=$.2R(c.G.O().o());if(!c.1b.4D(o)){q}e.26();if(c.E.12===\'N\'||c.E.12===\'1G\'){c.G.O().o(c.J.ex());c.J.2P()}R{c.G.O().o(c.E.3W);c.2k.2b()}q L}}},3T:f(){q{2L:f(e){if(c.6i){q}j 1a=e.5p;j 4B=c.G.1s(\'3T\',e);if(4B===L){e.26();q L}if(c.2M.ey(1a)){c.2M.28()}}}},1v:f(){q{3c:f(){c.E.74=c.E.4N[c.E.1v]},1c:f(1M){q(15 c.E.74[1M]!==\'1e\')?c.E.74[1M]:\'\'}}},6J:f(){q{1y:f(){c.2e.2H();c.1y.o(\'<hr>\')}}},K:f(){q{2w:f(e){if(15 e!==\'1e\'&&e.26){e.26()}$(\'.C-K-3w\').1x();j aw=(c.1Q.ez(\'a\')&&c.1b.7p(c.J.1r));j eA=(aw)?\'K-2N\':\'K-1y\';j eB=(aw)?\'3k\':\'1y\';c.V.3c(\'K\',c.1v.1c(eA),iH);c.V.ag();c.K.eC=c.V.ah(c.1v.1c(eB));c.K.8E();c.K.eD();if(c.K.1V===\'6l\'){$(\'#C-K-6m\').8y(\'8z\',1j)}c.K.$8F=$(\'#C-K-29\');c.K.$ax=$(\'#C-K-29-1p\');c.K.$ax.2J(c.K.1p);c.K.$8F.2J(c.K.29);c.K.eC.1D(\'1H\',$.1k(c.K.1y,c));c.V.2w();c.K.$8F.2k()},8E:f(){c.K.$F=L;c.K.29=\'\';c.K.1V=\'\';j $el=$(c.J.1r()).2r(\'a\',c.G.O()[0]);if($el.1f!==0&&$el[0].1n===\'A\'){c.K.$F=$el;c.K.29=$el.Q(\'22\');c.K.1p=$el.1p();c.K.1V=$el.Q(\'1V\')}R{c.K.1p=c.J.1c().4Z()}},eD:f(){if(15 c.K.29===\'1e\'){q}j eE=1L.eF.22.M(/\\/$/i,\'\');c.K.29=c.K.29.M(eE,\'\');c.K.29=c.K.29.M(/^\\/#/,\'#\');c.K.29=c.K.29.M(\'ay:\',\'\');if(!c.E.4d){j 3n=1N 2a(\'^(6L|7l|4t)://\'+1L.eF.iI,\'i\');c.K.29=c.K.29.M(3n,\'\')}},1y:f(){c.2t.1x();j 1V=\'\';j K=$.2R(c.K.$8F.2J());j 1p=$.2R(c.K.$ax.2J().M(/(<([^>]+)>)/gi,\'\'));if(1p===\'\'&&K!==\'\'){1p=K.M(/<|>/g,\'\')}if(K===\'\'||(1p===\'\'&&K===\'\')){q}if(K.3p(\'@\')!==-1&&/(6L|7l|4t):\\/\\//i.5t(K)===L){K=K.M(\'ay:\',\'\');K=\'ay:\'+K}R if(K.3p(\'#\')!==0){if($(\'#C-K-6m\').8y(\'8z\')){1V=\'6l\'}j 6n=\'((dJ--)?[a-7f-9]+(-[a-7f-9]+)*\\\\.)+[a-z]{2,}\';j 3n=1N 2a(\'^(6L|7l|4t)://\'+6n,\'i\');j 6o=1N 2a(\'^\'+6n,\'i\');j 8G=1N 2a(\'\\.(o|iJ)$\',\'i\');if(K.3p(3n)===-1&&K.3p(8G)===-1&&K.3p(6o)===0&&c.E.4d){K=c.E.4d+\'://\'+K}}c.V.3m();c.2e.2H();if(c.K.$F){c.K.$F.Q(\'22\',K);c.K.$F.1p(1p);if(1V!==\'\'){c.K.$F.Q(\'1V\',1V)}R{c.K.$F.2l(\'1V\')}c.J.F(c.K.$F)}R{j $a=$(\'<a 22="\'+K+\'">\').1p(1p);if(1V!==\'\'){$a.Q(\'1V\',1V)}$a=$(c.1y.F($a));c.1K.2I($a);c.G.1s(\'iK\',$a)}c.1Q.6u()},5j:f(e){if(15 e!==\'1e\'&&e.26){e.26()}j 3e=c.J.3e();if(!3e){q}j 2p=3e.1f;j 6u=[];2K(j i=0;i<2p;i++){if(3e[i].1n===\'A\'){6u.2S(3e[i])}j $F=$(3e[i]).2r(\'a\',c.G.O()[0]);$F.30($F.2V())}$(\'.C-K-3w\').1x();c.G.1s(\'iL\',6u)}}},2M:f(){q{ey:f(1a){q 1a===c.2C.4T||1a===c.2C.bS},28:f(){if(!c.E.2M||c.1b.55(\'1G\')){q}j 2M=c.2M;j E=c.E.4S;c.G.O().1B(":6Z(5k,3o,a,1G)").iM().2V().7V(f(){q c.6a===3&&$.2R(c.7q)!==""&&!$(c).1X().is("1G")&&(c.7q.2W(E.6S)||c.7q.2W(E.6T)||c.7q.2W(E.7R)||c.7q.2W(E.29))}).1E(f(){j 1p=$(c).1p();j o=1p;if(o.2W(E.6S)||o.2W(E.6T)){o=2M.eG(o)}R if(o.2W(E.7R)){o=2M.eH(o)}R{o=2M.eI(o)}$(c).4y(1p.M(1p,o)).1x()});j eJ=c.G.O().1B(\'.C-2M-3g\').1E($.1k(f(i,s){j $el=$(s);$el.2u(\'C-2M-3g\');if($el.Q(\'1W\')===\'\'){$el.2l(\'1W\')}if(s.1n===\'6k\'){c.1P.4v();j T=c.J.T();j N=c.J.N();j 1l=T.1n.2O();j o=c.1b.5E(s);$el.Q(\'1C-3I\',i);j 4E=\'\',4F=\'\';if(N){4E=\'</\'+N.1n.2O()+\'>\';4F=\'<\'+N.1n.2O()+\'>\'}j 1F=c.G.O().o();j 3n=1N 2a(c.1b.5E(s),\'i\');1F=1F.M(3n,4E+\'</\'+1l+\'><2x id="C-eK-2x-\'+i+\'">\'+o+\'</2x><\'+1l+\'>\'+4F);c.G.O().o(1F);j $2x=$(\'#C-eK-2x-\'+i).2l(\'id\');c.1K.2I($2x);c.1P.4w()}q $el[0]},c));3C($.1k(f(){c.1Q.3c();c.G.1s(\'2M\',eJ)},c),5X)},eG:f(o){j az=\'<5k 1W="C-2M-3g" 2F="eL" 4x="iN" 6j="\';j aA=\'" iO="0" iP></5k>\';if(o.2W(c.E.4S.6S)){o=o.M(c.E.4S.6S,az+\'//5P.bO.7Q/iQ/$1\'+aA)}if(o.2W(c.E.4S.6T)){o=o.M(c.E.4S.6T,az+\'//iR.bP.7Q/iS/$2\'+aA)}q o},eH:f(o){j 4l=o.2W(c.E.4S.7R);if(!4l){q o}q o.M(o,\'<3o 6j="\'+4l+\'" 1W="C-2M-3g" />\')},eI:f(o){j 4l=o.2W(c.E.4S.29);if(!4l){q o}4l=$.iT(4l,f(v,k){q $.3P(v,4l)===k});j 1f=4l.1f;2K(j i=0;i<1f;i++){j 22=4l[i],1p=22,4d=c.E.4d+\'://\';if(22.2W(/(4t?|7l):\\/\\//i)!==2B){4d=""}if(1p.1f>c.E.9f){1p=1p.eM(0,c.E.9f)+\'...\'}if(1p.3p(\'%\')===-1){1p=eN(1p)}j aB="\\\\b";if($.3P(22.b9(-1),["/","&","="])!==-1){aB=""}j eO=1N 2a(\'(\'+22.M(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,"\\\\$&")+aB+\')\',\'g\');o=o.M(eO,\'<a 22="\'+4d+$.2R(22)+\'" 1W="C-2M-3g">\'+$.2R(1p)+\'</a>\')}q o}}},2D:f(){q{3G:f(3v){if(c.1b.eP([\'bI\',\'3U\',\'8i\',\'iU\'])){q}j 1l=(3v===\'6M\')?\'7d\':\'7c\';j $2D=$(c.J.1r()).aC(\'4e, 4P\').31();c.2t.1x();c.2e.2H();if($2D.1f!==0&&$2D[0].1n===1l){c.J.3k();$2D.1B(\'4e, 4P\').1E(f(){j 1X=$(c).2r(\'1R\');$(c).1B(\'1R\').1E(f(){$(1X).2I(c)})});$2D.1B(\'4e, 4P\').1x();$2D.1B(\'1R\').1E(f(){q $(c).30(f(){q $(\'<p />\').1I($(c).2V())})});$2D.30(f(){q $(c).2V()});c.J.2P();q}1i.4h(\'1y\'+3v);j $7r=c.2D.1c();if(!$7r){if(!c.J.T()){1i.4h(\'dN\',L,\'p\')}q}$7r.1B(\'2f\').30(f(){q $(c).2V()});$7r.1B(c.E.6O.3X(\',\')).1E(f(){$(c).2l(\'3h\')});j $6v=$7r.1X();if(c.1b.7p($6v)&&$6v[0].1n!==\'7m\'&&c.1b.aD($6v)){c.J.3k();$6v.30($6v.2V());c.J.2P()}},1c:f(){j 1r=c.J.1r();j $2D=$(1r).2r(\'4e, 4P\',c.G.O()[0]);q($2D.1f===0)?L:$2D}}},V:f(){q{4c:{},cO:f(){c.E.V={\'1h-2N\':6b()+\'<1A 1W="V-3V" id="C-V-1h-2N">\'+\'<1U>\'+c.1v.1c(\'1z\')+\'</1U>\'+\'<3b 12="1p" id="C-1h-1z" />\'+\'<1U 1W="C-1h-K-7O">\'+c.1v.1c(\'K\')+\'</1U>\'+\'<3b 12="1p" id="C-1h-K" 1W="C-1h-K-7O" 3q-1U="\'+c.1v.1c(\'K\')+\'" />\'+\'<1U 1W="C-1h-K-7O"><3b 12="eQ" id="C-1h-K-6m" 3q-1U="\'+c.1v.1c(\'K-in-1N-3N\')+\'"> \'+c.1v.1c(\'K-in-1N-3N\')+\'</1U>\'+\'</1A>\',\'1h\':6b()+\'<1A 1W="V-3V" id="C-V-1h-1y">\'+\'<1A id="C-V-1h-3s"></1A>\'+\'</1A>\',\'1O\':6b()+\'<1A 1W="V-3V" id="C-V-1O-1y">\'+\'<1A id="C-V-1O-1o-2c">\'+\'<1U>\'+c.1v.1c(\'4r\')+\' <2f 1W="iV">(\'+c.1v.1c(\'9n\')+\')</2f></1U>\'+\'<3b 12="1p" id="C-4r" 3q-1U="\'+c.1v.1c(\'4r\')+\'" /><br><br>\'+\'<1A id="C-V-1O-1o"></1A>\'+\'</1A>\'+\'</1A>\',\'K\':6b()+\'<1A 1W="V-3V" id="C-V-K-1y">\'+\'<1U>eR</1U>\'+\'<3b 12="29" id="C-K-29" 3q-1U="eR" />\'+\'<1U>\'+c.1v.1c(\'1p\')+\'</1U>\'+\'<3b 12="1p" id="C-K-29-1p" 3q-1U="\'+c.1v.1c(\'1p\')+\'" />\'+\'<1U><3b 12="eQ" id="C-K-6m"> \'+c.1v.1c(\'K-in-1N-3N\')+\'</1U>\'+\'</1A>\'};$.5m(c.E,c.E.V)},9M:f(1M,1s){c.V.4c[1M]=1s},iW:f($V){c.V.$7s=$(\'<1A>\').Q(\'id\',\'C-V-7s\');$V.63(c.V.$7s)},iX:f(id,1M,7t){j $3N=$(\'<a 22="#" 3J="3N\'+id+\'">\').1p(1M);if(7t){$3N.21(\'7t\')}j 1L=c;$3N.1D(\'1H\',f(e){e.26();$(\'.C-3N\').2E();$(\'.C-\'+$(c).Q(\'3J\')).2w();1L.V.$7s.1B(\'a\').2u(\'7t\');$(c).21(\'7t\')});c.V.$7s.1I($3N)},iY:f(1M,eS){c.E.V[1M]=eS},eT:f(1M){q c.E.V[1M]},iZ:f(){q c.$8H.1B(\'.V-3V\')},3c:f(5c,1z,2F){c.V.5c=5c;c.V.2F=2F;c.V.1Z();c.V.eU();c.V.eV(1z);c.V.eW();c.V.eX();if(15 c.V.4c[5c]!==\'1e\'){c.V.4c[5c].4a(c)}},2w:f(){c.J.3k();if(c.1b.4W()){c.V.aE()}R{c.V.8I()}c.$5D.2w();c.$3S.eY(j0);c.$V.Q(\'4J\',\'-1\');c.$V.2k();c.V.eZ();if(!c.1b.4W()){3C($.1k(c.V.8I,c),0);$(2G).1D(\'6w.C-V\',$.1k(c.V.6w,c))}c.G.1s(\'j1\',c.V.5c,c.$V);$(1i).2g(\'j2.V\');c.$V.1B(\'3b[12=1p],3b[12=29],3b[12=j3]\').1D(\'1t.C-V\',$.1k(c.V.f0,c))},8I:f(){j 4x=c.$V.fa();j 8J=$(2G).4x();j 6x=$(2G).2F();if(c.V.2F>6x){c.$V.2q({2F:\'96%\',8K:(8J/2-4x/2)+\'3O\'});c.1b.7o();q}if(4x>8J){c.$V.2q({2F:c.V.2F+\'3O\',8K:\'j4\'})}R{c.$V.2q({2F:c.V.2F+\'3O\',8K:(8J/2-4x/2)+\'3O\'})}c.1b.7o();c.1b.a9()},aE:f(){c.$V.2q({2F:\'96%\',8K:\'2%\'});c.1b.7o()},6w:f(){if(c.1b.4W()){c.V.aE()}R{c.V.8I()}},eV:f(1z){c.$7u.o(1z)},eX:f(){c.$8H.o(c.V.eT(c.V.5c))},eW:f(){if(15 $.fn.fb===\'1e\'){q}c.$V.fb({j5:c.$7u});c.$7u.2q(\'j6\',\'j7\')},f0:f(e){if(e.5p!==13){q}e.26();c.$V.1B(\'14.C-V-6y-1S\').1H()},ag:f(){j 14=$(\'<14>\').21(\'C-V-1S C-V-3m-1S\').o(c.1v.1c(\'9l\'));14.1D(\'1H\',$.1k(c.V.3m,c));c.$7v.1I(14)},dH:f(1U){q c.V.aF(1U,\'5N\')},ah:f(1U){q c.V.aF(1U,\'6y\')},aF:f(1U,8g){j 14=$(\'<14>\').21(\'C-V-1S\').21(\'C-V-\'+8g+\'-1S\').o(1U);c.$7v.1I(14);q 14},eZ:f(){j 3y=c.$7v.1B(\'14\');j aG=3y.1f;if(aG===0){q}3y.2q(\'2F\',(5X/aG)+\'%\')},1Z:f(){c.V.fc();c.$3S=$(\'<1A id="C-V-2c"/>\').2E();c.$V=$(\'<1A id="C-V" 5o="j8" />\');c.$7u=$(\'<7N id="C-V-7N" 4J="1" />\');c.$7w=$(\'<14 12="14" id="C-V-3m" 4J="3" 3q-1U="\'+c.1v.1c(\'3m\')+\'" />\').o(\'&j9;\');c.$8H=$(\'<1A id="C-V-2Q" />\');c.$7v=$(\'<9q />\');c.$V.1I(c.$7u);c.$V.1I(c.$8H);c.$V.1I(c.$7v);c.$V.1I(c.$7w);c.$3S.1I(c.$V);c.$3S.7Y(1i.2Q)},fc:f(){c.$5D=$(\'<1A id="C-V-ja">\').2E();$(\'2Q\').63(c.$5D)},eU:f(){c.$7w.1D(\'1H.C-V\',$.1k(c.V.3m,c));$(1i).1D(\'3T.C-V\',$.1k(c.V.7j,c));c.$O.1D(\'3T.C-V\',$.1k(c.V.7j,c));c.$3S.1D(\'1H.C-V\',$.1k(c.V.3m,c))},fe:f(){c.$7w.2g(\'1H.C-V\');$(1i).2g(\'3T.C-V\');c.$O.2g(\'3T.C-V\');c.$3S.2g(\'1H.C-V\');$(2G).2g(\'6w.C-V\')},7j:f(e){if(e.5p!==c.2C.6U){q}c.V.3m(L)},3m:f(e){if(e){if(!$(e.1V).2T(\'C-V-3m-1S\')&&e.1V!==c.$7w[0]&&e.1V!==c.$3S[0]){q}e.26()}if(!c.$3S){q}c.J.2P();c.V.fe();c.1b.8r();c.1b.ak();c.$5D.80(eL,$.1k(f(){c.$5D.1x()},c));c.$3S.80(8q,$.1k(f(){c.$3S.1x();$(1i.2Q).2q(\'8L\',c.V.jb);c.G.1s(\'jc\',c.V.5c)},c))}}},1Q:f(){q{3c:f(){if(15 c.E.dq!==\'1e\'){q}if(c.4o.ie()){j 1L=c;c.G.O().1B(\'1G, 1F\').1D(\'a8\',f(){1L.1P.4v();1L.G.O().Q(\'64\',L);$(c).Q(\'64\',1j);1L.1P.4w()}).1D(\'aa\',f(){1L.1P.4v();1L.G.O().Q(\'64\',1j);$(c).2l(\'64\');1L.1P.4w()})}c.1Q.aj();c.1Q.6u()},ez:f($el,$1r){if(15 $1r===\'1e\'){$1r=$(c.J.1r())}q $1r.is($el)||$1r.aC($el).1f>0},6R:f(){j $1r=$(c.J.1r());j fg=c.1b.7p($1r);$.1E(c.E.1Q.6R,$.1k(f(1a,1u){j 1Q=1u.1Q,1w=1Q.1w,$2Y=1u.2Y,aH=15 1Q.in!==\'1e\'?1Q.in:L,aI=15 1Q.67!==\'1e\'?1Q.67:L;if($1r.2r(1w).dA()>0&&fg){c.1Q.aJ($2Y,aH,aI)}R{c.1Q.aJ($2Y,aI,aH)}},c))},aJ:f($2Y,7x,8M){if(8M&&15 8M.Q!==\'1e\'){c.1Q.aK($2Y,8M.Q,1j)}if(15 7x.Q!==\'1e\'){c.1Q.aK($2Y,7x.Q)}if(15 7x.1z!==\'1e\'){$2Y.1p(7x.1z)}},aK:f($2Y,fh,aL){$.1E(fh,f(1a,1u){if(1a===\'1W\'){if(!aL){$2Y.21(1u)}R{$2Y.2u(1u)}}R{if(!aL){$2Y.Q(1a,1u)}R{$2Y.2l(1a)}}})},9N:f($2Y,2z,2j){if(15 2j.1Q==="1e"){q}2j.2Y=$2Y;c.E.1Q.6R.2S(2j)},aj:f(){c.G.O().1B(\'3o\').1E($.1k(f(i,3o){j $3o=$(3o);$3o.2r(\'a\',c.$O[0]).1D(\'1H\',f(e){e.26()});if(c.4o.ie()){$3o.Q(\'jd\',\'1D\')}c.1h.dE($3o)},c))},6u:f(){if(!c.E.bi){q}c.G.O().1B(\'a\').1D(\'5v.C.\'+c.1T+\' 1H.C.\'+c.1T,$.1k(c.1Q.fi,c));c.G.O().1D(\'5v.C.\'+c.1T+\' 1H.C.\'+c.1T,$.1k(c.1Q.aM,c));$(1i).1D(\'5v.C.\'+c.1T+\' 1H.C.\'+c.1T,$.1k(c.1Q.aM,c))},fj:f($K){q $K.3L()},fi:f(e){j $el=$(e.1V);if($el[0].1n===\'6k\'){q}if($el[0].1n!==\'A\'){$el=$el.2r(\'a\',c.$O[0])}if($el[0].1n!==\'A\'){q}j $K=$el;j 6t=c.1Q.fj($K);j 3w=$(\'<2f 1W="C-K-3w"></2f>\');j 22=$K.Q(\'22\');if(22===1e){22=\'\'}if(22.1f>24){22=22.eM(0,24)+\'...\'}j fk=$(\'<a 22="\'+$K.Q(\'22\')+\'" 1V="6l" />\').o(22).21(\'C-K-3w-6y\');j fl=$(\'<a 22="#" />\').o(c.1v.1c(\'2N\')).1D(\'1H\',$.1k(c.K.2w,c)).21(\'C-K-3w-6y\');j fm=$(\'<a 22="#" />\').o(c.1v.1c(\'5j\')).1D(\'1H\',$.1k(c.K.5j,c)).21(\'C-K-3w-6y\');3w.1I(fk).1I(\' | \').1I(fl).1I(\' | \').1I(fm);3w.2q({2i:(6t.2i+je($K.2q(\'6J-4x\'),10))+\'3O\',2y:6t.2y+\'3O\'});$(\'.C-K-3w\').1x();$(\'2Q\').1I(3w)},aM:f(e){e=e.7k||e;j 1V=e.1V;j $1X=$(1V).2r(\'a\',c.$O[0]);if($1X.1f!==0&&$1X[0].1n===\'A\'&&1V.1n!==\'A\'){q}R if((1V.1n===\'A\'&&c.1b.7p(1V))||$(1V).2T(\'C-K-3w-6y\')){q}$(\'.C-K-3w\').1x()}}},3l:f(){q{3c:f(o){if(c.E.3l===L||c.E.12===\'N\'||c.E.12===\'1G\'){q o}if(o===\'\'||o===\'<p></p>\'){q c.E.3W}o=o+"\\n";c.3l.aN=[];c.3l.z=0;o=o.M(/(<br\\s?\\/?>){1,}\\n?<\\/2o>/gi,\'</2o>\');o=c.3l.fo(o);o=c.3l.fp(o);o=c.3l.fq(o);o=c.3l.fr(o);o=o.M(1N 2a(\'<br\\\\s?/?>\\n?<(\'+c.E.9r.3X(\'|\')+\')(.*?[^>])>\',\'gi\'),\'<p><br /></p>\\n<$1$2>\');q $.2R(o)},fo:f(o){j $1A=$(\'<1A />\').1I(o);$1A.1B(\'2o p\').30(f(){q $(c).1I(\'<br />\').2V()});o=$1A.o();$1A.1B(c.E.9r.3X(\', \')).1E($.1k(f(i,s){c.3l.z++;c.3l.aN[c.3l.z]=s.fs;o=o.M(s.fs,\'\\n{M\'+c.3l.z+\'}\\n\')},c));q o},fr:f(o){$.1E(c.3l.aN,f(i,s){s=(15 s!==\'1e\')?s.M(/\\$/g,\'&#36;\'):s;o=o.M(\'{M\'+i+\'}\',s)});q o},fp:f(o){o=o.M(/\\r\\n/g,"8N");o=o.M(/\\n/g,"8N");o=o.M(/\\r/g,"8N");j ft=/\\s+/g;o=o.M(ft," ");o=$.2R(o);j 6o=/jf/gi;o=o.M(6o,"</p><p>");j 8G=/8N/gi;o=o.M(8G,"<br>");o=\'<p>\'+o+\'</p>\';o=o.M("<p></p>","");o=o.M("\\r\\n\\r\\n","");o=o.M(/<\\/p><p>/g,"</p>\\r\\n\\r\\n<p>");o=o.M(1N 2a("<p><br />","g"),"<p>");o=o.M(1N 2a("<p><br>","g"),"<p>");o=o.M(1N 2a("<br></p>","g"),"</p>");o=o.M(/<p>&5B;<\\/p>/gi,"");q o},fq:f(o){o=o.M(/<p>(.*?){M(.*?)\\}\\s?<\\/p>/gi,\'{M$2}\');o=o.M(1N 2a(\'</2o></p>\',\'gi\'),\'</2o>\');o=o.M(1N 2a(\'<p></2o>\',\'gi\'),\'</2o>\');o=o.M(1N 2a(\'<p><2o>\',\'gi\'),\'<2o>\');o=o.M(1N 2a(\'<2o></p>\',\'gi\'),\'<2o>\');o=o.M(1N 2a(\'<p><p \',\'gi\'),\'<p \');o=o.M(1N 2a(\'<p><p>\',\'gi\'),\'<p>\');o=o.M(1N 2a(\'</p></p>\',\'gi\'),\'</p>\');o=o.M(1N 2a(\'<p>\\\\s?</p>\',\'gi\'),\'\');o=o.M(1N 2a("\\n</p>",\'gi\'),\'</p>\');o=o.M(1N 2a(\'<p>\\t?\\t?\\n?<p>\',\'gi\'),\'<p>\');o=o.M(1N 2a(\'<p>\\t*</p>\',\'gi\'),\'\');q o}}},4b:f(){q{2L:f(e){c.6i=1j;e.26();j 1C=((e.7k||e).fu||2G.fu);j o=1C.8E(\'1p/o\')||1C.8E(\'1p\');j 1G=L;if(c.E.12!==\'1G\'&&!c.1b.55(\'1G\')){o=o.M(/<a(.*?)22="(.*?)"(.*?[^>])>(.*?)<\\/a>/gi,\'###a 22="$2"###$4###/a###\');o=o.M(/<!--[\\s\\S]*?-->/gi,\'\');o=o.M(/<3h[\\s\\S]*?3h>/gi,\'\');o=o.M(/<br\\s?\\/?>|<\\/p>|<\\/1A>|<\\/1R>|<\\/3U>/gi,\'\\n\');o=o.M(/<\\/H[1-6]>/gi,\'\\n\\n\');j 3E=1i.3u(\'1A\');3E.3K=o;o=$.2R(3E.9Y||3E.9Z)}R{1G=1j;o=o.M(/^<4q fv=\'(.*?)\'>/i,\'\');if(o.2W(/^<1G 3h="(.*?)">/i)){o=o.M(/^<1G 3h="(.*?)">/i,\'\');o=o.M(/<\\/1G>$/i,\'\')}}o=c.2n.9U(o);o=o.M(/###a 22="(.*?)"###(.*?)###\\/a###/gi,\'<a 22="$1">$2</a>\');j 3i=c.G.1s(\'4b\',o);o=(15 3i===\'1e\')?o:3i;c.2e.2H();if(c.4b.1p){c.1y.1p(o)}R{c.1y.dX(o)}c.6i=L;if(1G){j T=$(c.J.T()).2r(\'1G\',c.G.O()[0]);$(T).1B(\'p\').1x()}}}},2t:f(){q{cP:f(){if(!c.2t.is()){q}j 3d=c.G.O().2q(\'3d\');j 2v=[\'6g\',\'58\',\'aO\'];if($.3P(2v,3d)===-1){c.G.O().21(\'C-aO\')}j 2i=c.G.O().2q(\'8O-2i\');j 2y=c.G.O().2q(\'8O-2y\');$(\'<3h 1W="C-3h-1l">#\'+c.G.id()+\'.C-2t::2I{ 2i: \'+2i+\'; 2y: \'+2y+\'; }</3h>\').7Y(\'d8\');c.G.O().Q(\'2t\',c.$1w.Q(\'2t\'));c.2t.3G();c.G.O().1D(\'1t.C-2t\',$.1k(c.2t.3G,c))},3G:f(){3C($.1k(f(){j 1g=c.1b.4D()?\'21\':\'2u\';c.G.O()[1g](\'C-2t\')},c),5)},1x:f(){c.G.O().2u(\'C-2t\')},is:f(){if(c.E.2t){q c.$1w.Q(\'2t\',c.E.2t)}R{q!(15 c.$1w.Q(\'2t\')===\'1e\'||c.$1w.Q(\'2t\')===\'\')}}}},4p:f(){q{2w:f(){$(1i.2Q).1I($(\'<1A id="C-4p"><2f></2f></1A>\'));$(\'#C-4p\').eY()},2E:f(){$(\'#C-4p\').80(jg,f(){$(c).1x()})}}},J:f(){q{1c:f(){if(2G.4z){q 2G.4z()}R if(1i.J&&1i.J.12!=="jh"){q 1i.J}q 2B},Y:f(1q){if(15 1q===\'1e\'){1q=c.J.1c()}if(1q.6s&&1q.8C){q 1q.6s(0)}q 2B},41:f(1q,Y){if(Y===2B){q}1q.54();1q.5y(Y)},1r:f(){j 1q=c.J.1c();q(1q===2B)?L:1q.ji},1X:f(){j 1r=c.J.1r();q(1r===2B)?L:1r.6z},T:f(F){F=F||c.J.1r();6A(F){if(c.1b.5z(F.1n)){q($(F).2T(\'C-in\'))?L:F}F=F.6z}q L},N:f(F){F=F||c.J.1r();6A(F){if(c.1b.7b(F.1n)){q($(F).2T(\'C-in\'))?L:F}F=F.6z}q L},1w:f(F){if(!F){F=c.J.1r()}6A(F){if(F.6a===1){if($(F).2T(\'C-in\')){q L}q F}F=F.6z}q L},2d:f(){j 1r=c.J.1r();q(1r===2B)?L:c.J.1r().jj},1Y:f(){j 1r=c.J.1r();q(1r===2B)?L:c.J.1r().6p},2U:f(){j 2U=[];j 49=c.J.49();$.1E(49,$.1k(f(i,F){if(c.1b.aD(F)){2U.2S(F)}},c));q(2U.1f===0)?[c.J.T()]:2U},3e:f(){j 3e=[];j 49=c.J.49();$.1E(49,$.1k(f(i,F){if(c.1b.87(F)){3e.2S(F)}},c));q(3e.1f===0)?[c.J.N()]:3e},49:f(){j 1q=c.J.1c();j Y=c.J.Y(1q);if(c.1b.5s()){q[c.J.1r()]}R{j F=Y.fw;j aP=Y.9Q;if(F===aP){q[F]}j 49=[];6A(F&&F!==aP){49.2S(F=c.J.fx(F))}F=Y.fw;6A(F&&F!==Y.jk){49.jl(F);F=F.6z}j 8P=[];$.1E(49,f(i,s){if(!$(s).2T(\'C-3t-1l, C-J-23\')){8P.2S(s)}});q(8P.1f===0)?[L]:8P}},fx:f(F){if(F.jm()){q F.jn}R{6A(F&&!F.6p){F=F.6z}if(!F){q 2B}q F.6p}},3k:f(){j 1q=c.J.1c();j Y=c.J.Y(1q);j 3Q=c.J.23(1);c.1y.23(Y,3Q,1j);if(Y&&Y.5U===L){j 4i=c.J.23(2);c.1y.23(Y,4i,L)}c.fy=c.G.O().o()},2P:f(3A){j 3Q=c.G.O().1B(\'2f#J-23-1\');j 4i=c.G.O().1B(\'2f#J-23-2\');if(c.4o.ff()){c.G.O().2k()}if(3Q.1f!==0&&4i.1f!==0){c.1K.2H(3Q,4i)}R if(3Q.1f!==0){c.1K.2b(3Q)}R{c.G.O().2k()}if(3A!==L){c.J.3A();c.fy=L}},3A:f(){c.G.O().1B(\'.C-J-23\').1E(f(i,s){j 1p=$(s).1p().M(/\\42/g,\'\');if(1p===\'\'){$(s).1x()}R{$(s).30(f(){q $(c).2V()})}})},23:f(6B){if(15 6B===\'1e\'){6B=1}q $(\'<2f id="J-23-\'+6B+\'" 1W="C-J-23"  1C-jo="C">\'+c.E.bK+\'</2f>\')[0]},ex:f(6B){q c.1b.5E(c.J.23(6B))},F:f(F){$(F).63(c.J.23(1));$(F).1I(c.J.23(2));c.J.2P()},cX:f(){c.G.O().2k();j 1q=c.J.1c();j Y=c.J.Y(1q);Y.69(c.G.O()[0]);c.J.41(1q,Y)},1x:f(){c.J.1c().54()},M:f(o){c.1y.o(o)},1p:f(){q c.J.1c().4Z()},o:f(){j o=\'\';j 1q=c.J.1c();if(1q.8C){j aQ=1i.3u(\'1A\');j 2p=1q.8C;2K(j i=0;i<2p;++i){aQ.jp(1q.6s(i).jq())}o=c.2n.9T(aQ.3K)}q o}}},4I:f(){q{2L:f(e,1a){if(!c.E.4I){if((e.5W||e.4X)&&(1a===66||1a===73)){e.26()}q L}$.1E(c.E.4I,$.1k(f(56,3D){j 48=56.4n(\',\');j 2p=48.1f;j 57=$.1k(f(){j 1g;if(3D.1g.3p(/\\./)!==\'-1\'){1g=3D.1g.4n(\'.\');if(15 c[1g[0]]!==\'1e\'){c[1g[0]][1g[1]].4H(c,3D.4M)}}R{c[3D.1g].4H(c,3D.4M)}},c);2K(j i=0;i<2p;i++){if(15 48[i]===\'93\'){c.4I.57(e,$.2R(48[i]),57)}}},c))},57:f(e,48,fz){j fA={8:"jr",9:"3N",10:"q",13:"q",16:"5i",17:"3j",18:"8x",19:"js",20:"jt",27:"ju",32:"4j",33:"jv",34:"jw",35:"2X",36:"jx",37:"2y",38:"jy",39:"8Q",40:"jz",45:"1y",46:"4s",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",5X:"4",jA:"5",jB:"6",jC:"7",jD:"8",jE:"9",jF:"*",jG:"+",jH:"-",jI:".",jJ:"/",jK:"f1",jL:"f2",jM:"f3",jN:"f4",jO:"f5",jP:"f6",jQ:"f7",jR:"f8",jS:"f9",jT:"jU",jV:"jW",jX:"jY",jZ:"k0",k1:"8n",k2:"-",k3:";",k4:"=",k5:",",k6:"-",k7:".",k8:"/",k9:"`",as:"[",ka:"\\\\",ar:"]",kb:"\'"};j aR={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"kc","=":"+",";":": ","\'":"\\"",",":"<",".":">","/":"?","\\\\":"|"};48=48.2O().4n(" ");j 8R=fA[e.2C],7y=6b.kd(e.5p).2O(),6C="",6D={};$.1E(["8x","3j","4q","5i"],f(6Y,8S){if(e[8S+\'ke\']&&8R!==8S){6C+=8S+\'+\'}});if(8R){6D[6C+8R]=1j}if(7y){6D[6C+7y]=1j;6D[6C+aR[7y]]=1j;if(6C==="5i+"){6D[aR[7y]]=1j}}2K(j i=0,2p=48.1f;i<2p;i++){if(6D[48[i]]){e.26();q fz.4H(c,ba)}}}}},1m:f(){q{cN:f(){$(1i).1B(\'[1C-3v]\').1E($.1k(f(i,s){j $el=$(s);j 1g=$el.1C(\'3v\');j 2h=$el.1C(\'2h\');$el.21(\'C-1C-3v\');$el.1D(\'1H.C-1C-3v\',$.1k(f(e){e.26();if(1g===\'1g\'){j fn=2G[2h];if(15 fn===\'f\'){fn.4a(c,$el,e)}}R{j 3v=1g.4n(\'.\');if(15 c[3v[0]]!==\'1e\'){if(!$.7n(2h)){2h=(2h)?2h.4n(\'|\'):1e}c[3v[0]][3v[1]].4H(c,2h)}}},c))},c))},1Z:f(){c.14.9x();c.14.9y();if(c.E.3y.1f===0){q}c.$1m=c.1m.7X();c.1m.fB();c.1m.1I();c.14.$1m=c.$1m;c.14.9z();c.14.3c(c.$1m);c.1m.fC()},7X:f(){q $(\'<4e>\').21(\'C-1m\').Q({\'id\':\'C-1m-\'+c.1T,\'5o\':\'1m\'})},1I:f(){if(c.E.7H){c.$1m.21(\'C-1m-kf\');$(c.E.7H).o(c.$1m)}R{if(c.E.12===\'3a\'){c.$2c.63(c.$1m)}R{c.$1w.4y(c.$1m)}}},fB:f(){if(c.1b.4W()||c.E.bl){c.$1m.21(\'C-1m-8L\')}},fC:f(){if(!c.1b.8c()||!c.E.bk||c.E.7H){q}if(c.E.3M!==1i){j $el=$(c.E.3M);c.fD=($el.1f===0)?0:c.G.2c().3L().2i-$el.3L().2i}j fE=(c.G.2c().2r(\'.V-2Q\').1f!==0)?kg:0;3C($.1k(f(){c.1m.aS();$(c.E.3M).1D(\'8n.C.\'+c.1T,$.1k(c.1m.aS,c))},c),fE)},fF:f(){q(c.E.3M===1i)?c.G.2c().3L().2i:c.fD},aS:f(){j fG=(c.E.3M===1i)?20:0;j 3B=$(c.E.3M).3B();j 6E=c.1m.fF();if((3B+c.E.5g+fG)>6E){c.1m.fH(3B,6E)}R{c.1m.aT()}},fI:f(){c.$1m.2q({2F:c.G.2c().7Z(),2y:c.G.2c().3L().2y})},fH:f(3B,6E){if(15 c.fJ!==\'1e\'&&c.fJ.kh===L){c.1m.aT();q}j 2X=6E+c.G.2c().fa()-32;j 2F=c.G.2c().7Z();j 3d=\'58\';j 2i=c.E.5g;j 2y=c.G.2c().3L().2y;if(c.E.3M!==1i){3d=\'6g\';2i=c.E.5g+$(c.E.3M).3B()-6E-1;2y=0}c.$1m.21(\'1m-58-2c\');c.$1m.2q({3d:3d,2F:2F,2i:2i,2y:2y});if(3B>2X){$(\'.C-1d-\'+c.1T+\':aU\').2E()}c.1m.fK();c.$1m.2q(\'fL\',(3B<2X)?\'aU\':\'9H\');$(2G).1D(\'6w.C-1m.\'+c.1T,$.1k(c.1m.fI,c))},aT:f(){c.$1m.2q({3d:\'aO\',2F:\'cK\',2i:\'-ki\',2y:0,fL:\'aU\'});c.1m.fM();c.$1m.2u(\'1m-58-2c\');$(2G).2g(\'6w.C-1m.\'+c.1T)},fK:f(){j 3d=(c.E.3M===1i)?\'58\':\'6g\';c.1m.aV(3d)},fM:f(){c.1m.aV(\'6g\')},aV:f(3d){j 1L=c;$(\'.C-1d-\'+c.1T).1E(f(){j $el=$(c);j $14=1L.14.1c($el.Q(\'3J\'));j 2i=(3d===\'58\')?1L.E.5g:$14.3L().2i;$el.2q({3d:3d,2i:($14.8p()+2i)+\'3O\'})})}}},1o:f(){q{2L:f(id,29,1s){c.1o.44=L;c.1o.1s=1s;c.1o.29=29;c.1o.$el=$(id);c.1o.$3s=$(\'<1A id="C-3s" />\');c.1o.$aW=$(\'<1A id="C-3s-2t" />\').1p(c.1v.1c(\'1o-1U\'));c.1o.$3b=$(\'<3b 12="1O" 1M="1O" />\');c.1o.$aW.1I(c.1o.$3b);c.1o.$3s.1I(c.1o.$aW);c.1o.$el.1I(c.1o.$3s);c.1o.$3s.2g(\'C.1o\');c.1o.$3b.2g(\'C.1o\');c.1o.$3s.1D(\'dv.C.1o\',$.1k(c.1o.fN,c));c.1o.$3s.1D(\'kj.C.1o\',$.1k(c.1o.fO,c));c.1o.$3b.1D(\'a2.C.1o\',$.1k(f(e){e=e.7k||e;c.1o.8T(c.1o.$3b[0].5a[0],e)},c));c.1o.$3s.1D(\'4C.C.1o\',$.1k(f(e){e.26();c.1o.$3s.2u(\'6F-aX\').21(\'6F-4C\');c.1o.fP(e)},c))},dB:f(1O,e){c.1o.44=1j;c.1o.8T(1O,e)},fP:f(e){e=e.7k||e;j 5a=e.8v.5a;c.1o.8T(5a[0],e)},8T:f(1O,e){if(c.E.5L){c.1o.aY(1O);c.5H.4u(1O);q}j 3F=!!2G.8u?1N 8u():2B;if(2G.8u){c.1o.aY(1O);j 1M=(c.1o.12===\'1h\')?c.E.bg:c.E.bh;3F.1I(1M,1O)}c.4p.2w();c.G.1s(\'kk\',e,3F);c.1o.4u(3F,e)},aY:f(1O){c.1o.fQ(1O);if(c.1o.44){c.1o.29=(c.1o.12===\'1h\')?c.E.5e:c.E.5f;c.1o.1s=(c.1o.12===\'1h\')?c.1h.1y:c.1O.1y}},fQ:f(1O){c.1o.12=(c.E.bL.5r(1O.12)===-1)?\'1O\':\'1h\'},5q:f(4m,fd){if(4m===L||15 4m!==\'3g\'){q fd}$.1E(4m,$.1k(f(k,v){if(v!==2B&&v.4Z().5r(\'#\')===0){v=$(v).2J()}fd.1I(k,v)},c));q fd},4u:f(3F,e){if(c.1o.12===\'1h\'){3F=c.1o.5q(c.E.kl,3F);3F=c.1o.5q(c.1o.8U,3F)}R{3F=c.1o.5q(c.E.km,3F);3F=c.1o.5q(c.1o.8V,3F)}j 2m=1N 8W();2m.8X(\'kn\',c.1o.29);2m.aZ("X-ko-kp","8W");2m.fR=$.1k(f(){if(2m.b0===4){j 1C=2m.fS;1C=1C.M(/^\\[/,\'\');1C=1C.M(/\\]$/,\'\');j 2s;5Z{2s=(15 1C===\'93\'?$.cc(1C):1C)}60(kq){2s={6I:1j}}c.4p.2E();if(!c.1o.44){c.1o.$3s.2u(\'6F-4C\')}c.1o.1s(2s,c.1o.44,e)}},c);2m.4u(3F)},fN:f(e){e.26();c.1o.$3s.21(\'6F-aX\')},fO:f(e){e.26();c.1o.$3s.2u(\'6F-aX\')},kr:f(){c.1o.8U={}},ks:f(1M,1u){c.1o.8U[1M]=1u},kt:f(1M){5N c.1o.8U[1M]},ku:f(){c.1o.8V={}},kv:f(1M,1u){c.1o.8V[1M]=1u},kw:f(1M){5N c.1o.8V[1M]}}},5H:f(){q{4u:f(1O){c.5H.fT(1O,$.1k(f(fU){c.5H.fV(1O,fU)},c))},fT:f(1O,1s){j 2m=1N 8W();j 9o=(c.E.5L.3p(/\\?/)!==\'-1\')?\'?\':\'&\';2m.8X(\'kx\',c.E.5L+9o+\'1M=\'+1O.1M+\'&12=\'+1O.12,1j);if(2m.fW){2m.fW(\'1p/ky; fv=x-kz-kA\')}j fX=c;2m.fR=f(e){if(c.b0===4&&c.b1===6V){fX.4p.2w();1s(eN(c.fS))}R if(c.b0===4&&c.b1!==6V){}};2m.4u()},fY:f(7C,29){j 2m=1N 8W();if("kB"in 2m){2m.8X(7C,29,1j)}R if(15 fZ!=="1e"){2m=1N fZ();2m.8X(7C,29)}R{2m=2B}q 2m},fV:f(1O,29){j 2m=c.5H.fY(\'kC\',29);if(!2m){q}2m.kD=$.1k(f(){if(2m.b1!==6V){q}c.4p.2E();j 8Y=29.4n(\'?\');if(!8Y[0]){q L}if(!c.1o.44){c.1o.$3s.2u(\'6F-4C\')}j 2s={af:8Y[0]};if(c.1o.12===\'1O\'){j 2v=8Y[0].4n(\'/\');2s.4r=2v[2v.1f-1]}c.1o.1s(2s,c.1o.44,L)},c);2m.kE=f(){};2m.1o.kF=f(e){};2m.aZ(\'kG-kH\',1O.12);2m.aZ(\'x-kI-kJ\',\'kK-kL\');2m.4u(1O)}}},1b:f(){q{4D:f(o){o=(15 o===\'1e\')?c.G.O().o():o;o=o.M(/[\\42-\\kM\\kN]/g,\'\');o=o.M(/&5B;/gi,\'\');o=o.M(/<\\/?br\\s?\\/?>/g,\'\');o=o.M(/\\s/g,\'\');o=o.M(/^<p>[^\\W\\w\\D\\d]*?<\\/p>$/i,\'\');o=o.M(/<5k(.*?[^>])>$/i,\'5k\');o=o.M(/<5Y(.*?[^>])>$/i,\'5Y\');o=o.M(/<[^\\/>][^>]*><\\/[^>]+>/gi,\'\');o=o.M(/<[^\\/>][^>]*><\\/[^>]+>/gi,\'\');o=$.2R(o);q o===\'\'},ad:f(4m){5Z{q 4m kO kP}60(e){q(15 4m==="3g")&&(4m.6a===1)&&(15 4m.3h==="3g")&&(15 4m.kQ==="3g")}},4W:f(){q/(g0|g1|g2|g3)/.5t(6Q.4R)},8c:f(){q!/(g0|g1|kR|g2|g3)/.5t(6Q.4R)},5E:f(el){q $(\'<1A>\').1I($(el).eq(0).kS()).o()},eP:f(25){25=($.7n(25))?25:[25];j 2U=c.J.2U();j 2p=2U.1f;j 6G=L;2K(j i=0;i<2p;i++){j 1l=2U[i].1n.2O();if($.3P(1l,25)!==-1){6G=1j}}q 6G},kT:f(25){25=($.7n(25))?25:[25];j 3e=c.J.3e();j 2p=3e.1f;j 6G=L;2K(j i=0;i<2p;i++){j 1l=3e[i].1n.2O();if($.3P(1l,25)!==-1){6G=1j}}q 6G},3Z:f(1r,1l){j 1w=$(1r).2r(1l,c.G.O()[0]);if(1w.1f===1){q 1w[0]}q L},aD:f(T){T=T[0]||T;q T&&c.1b.5z(T.1n)},5z:f(1l){q(15 1l===\'1e\')?L:c.c1.5t(1l)},87:f(N){N=N[0]||N;q N&&c.1b.7b(N.1n)},7b:f(1l){q(15 1l===\'1e\')?L:c.c2.5t(1l)},7p:f(el){if(!el){q L}if($(el).aC(\'.C-in\').1f===0||$(el).2T(\'C-in\')){q L}q el},dO:f(){q c.1b.55([\'cf\',\'cg\',\'ch\',\'ci\',\'cj\',\'ck\'])},55:f(1n){j 1X=c.J.1X();j 1r=c.J.1r();if($.7n(1n)){j b2=0;$.1E(1n,$.1k(f(i,s){if(c.1b.b3(1r,1X,s)){b2++}},c));q(b2===0)?L:1j}R{q c.1b.b3(1r,1X,1n)}},b3:f(1r,1X,1n){1n=1n.7S();q 1X&&1X.1n===1n?1X:1r&&1r.1n===1n?1r:L},cU:f(){c.8Z=$(1i).3B();$(1i).3B(c.8Z)},cW:f(){if(15 c.8Z===\'1e\'){q}$(1i).3B(c.8Z)},7o:f(){c.b4=$(1i).3B()},ak:f(){if(15 c.b4===\'1e\'){q}$(1i).3B(c.b4)},5s:f(){q c.J.1c().5s},at:f(1w){if(15 1w===\'1e\'){1w=c.J.T();if(!1w){q L}}q(c.1K.3L(1w)===0)?1j:L},8B:f(1w){if(15 1w===\'1e\'){1w=c.J.T();if(!1w){q L}}j 1p=$.2R($(1w).1p()).M(/\\t\\n\\r\\n/g,\'\').M(/\\42/g,\'\');q(c.1K.3L(1w)===1p.1f)?1j:L},dV:f(el,Q){j $el=$(el);if(15 $el.Q(Q)===\'1e\'){q 1j}if($el.Q(Q)===\'\'){$el.2l(Q);q 1j}q L},51:f(F,1l){j 5A;$(F).30(f(){5A=$(\'<\'+1l+\' />\').1I($(c).2V());2K(j i=0;i<c.3Y.1f;i++){5A.Q(c.3Y[i].1M,c.3Y[i].1u)}q 5A});q 5A},7e:f(){q c.b5},es:f(){c.b5=1j},6h:f(){c.b5=L},a9:f(){j $2Q=$(\'o\');j 6x=2G.7Z;if(!6x){j b6=1i.kU.kV();6x=b6.8Q-dr.kW(b6.2y)}j g4=1i.2Q.g5<6x;j 92=c.1b.g6();$2Q.2q(\'8L\',\'9H\');if(g4){$2Q.2q(\'8O-8Q\',92)}},g6:f(){j $2Q=$(\'2Q\');j 6H=1i.3u(\'1A\');6H.8g=\'C-g7-g8\';$2Q.1I(6H);j 92=6H.kX-6H.g5;$2Q[0].kY(6H);q 92},8r:f(){$(\'o\').2q({\'8L\':\'\',\'8O-8Q\':\'\'});$(\'2Q\').1x(\'C-g7-g8\')}}}};$(2G).1D(\'3c.g9.C\',f(){$(\'[1C-g9="C"]\').C()});3f.4G.2L.4G=3f.4G})(kZ);',62,1302,'||||||||||||this|||function||||var|||||html||return||||||||||||redactor||opts|node|core|||selection|link|false|replace|inline|editor||attr|else||block||modal|||range||||type||button|typeof|||||key|utils|get|dropdown|undefined|length|func|image|document|true|proxy|tag|toolbar|tagName|upload|text|sel|current|callback|keydown|value|lang|element|remove|insert|title|div|find|data|on|each|code|pre|click|append|air|caret|self|name|new|file|events|observe|li|btn|uuid|label|target|class|parent|next|build||addClass|href|marker||tags|preventDefault||format|url|RegExp|start|box|prev|buffer|span|off|args|top|btnObject|focus|removeAttr|xhr|clean|blockquote|len|css|closest|json|placeholder|removeClass|arr|show|figure|left|btnName|autosave|null|keyCode|list|hide|width|window|set|after|val|for|init|linkify|edit|toLowerCase|restore|body|trim|push|hasClass|blocks|contents|match|end|item|options|replaceWith|first|||||||||textarea|input|load|position|inlines|Redactor|object|style|returned|ctrl|save|paragraphize|close|re|img|search|aria|last|droparea|script|createElement|cmd|tooltip|indent|buttons|to|removeMarkers|scrollTop|setTimeout|command|tmp|formData|toggle|currentTag|replaced|rel|innerHTML|offset|toolbarFixedTarget|tab|px|inArray|node1|collapse|modalBox|keyup|td|section|emptyHtml|join|attributes|isTag||update|u200B|arrow|direct|||getInlines|keys|nodes|call|paste|callbacks|linkProtocol|ul|setAttr|getBlocks|execCommand|node2|space|children|matches|obj|split|browser|progress|meta|filename|del|https|send|stopDetect|startDetect|height|before|getSelection|cloned|stop|drop|isEmpty|inlineStart|inlineEnd|prototype|apply|shortcuts|tabindex|bold|italic|params|langs|abbr|ol|figcaption|userAgent|regexps|ENTER|methods|enabled|isMobile|metaKey|shiftKey|toString||replaceToTag|btns|insertNode|removeAllRanges|isCurrentOrParent|str|handler|fixed||files|mutation|templateName|instance|imageUpload|fileUpload|toolbarFixedTopOffset|deleted|shift|unlink|iframe|form|extend|module|role|which|getHiddenFields|indexOf|isCollapsed|test|disabled|touchstart|textNode|createTextNode|addRange|isBlockTag|replacement|nbsp|gap|modalOverlay|getOuterHtml|blockElem|isFunction|uploads3|structure|plugins|enterKey|s3|underline|delete|Heading|www|BACKSPACE|DELETE|initToEdit|syncFire|collapsed|deleteContents|ctrlKey|100|source|try|catch||Attr|prepend|contenteditable|||out|createRange|selectNodeContents|nodeType|String|getEvent|hideAll|dropact|keyPosition|absolute|disableSelectAll|rtePaste|src|IMG|_blank|blank|pattern|re2|nextSibling|newEl|breakpoint|getRangeAt|pos|links|listParent|resize|windowWidth|action|parentNode|while|num|modif|possible|boxTop|drag|contains|scrollDiv|error|line|preSpaces|http|orderedlist|rebuffer|inlineTags|strike|navigator|dropdowns|linkyoutube|linkvimeo|ESC|200|mousedown|PRE|index|not|toggleClass|undo|toolbarsButtons||curLang|decrease|inactive|returnValue|isMobileUndoRedo|prepare|BR|isInlineTag|UL|OL|isSelectAll|z0|htmlCleaned|addEvent|event|closeHandler|originalEvent|ftp|LI|isArray|saveScroll|isRedactorParent|nodeValue|insertedList|tabber|active|modalHeader|modalFooter|modalClose|addProperties|character|bind|Array|methodVal|method|tabAsSpaces|autosaveFields|dragImageUpload|dragFileUpload|toolbarExternal|lists|horizontalrule|unorderedlist|outdent|strong|header|option|x200b|com|linkimage|toUpperCase|clickToCancelStorage|destroy|filter|property|createContainer|appendTo|innerWidth|fadeOut|autosaveTimeout|formatCollapsed|formatUncollapsed|unwrap|addAttr|redo|isInline|voice|onSync|increase|act|isDesktop|setStart|setEnd|setStartAfter|className|lastChild|th|amp|encodeEntities|sync|blur|scroll|plugin|innerHeight|300|enableBodyScroll|stopPropagation|blured|FormData|dataTransfer|lastNode|alt|prop|checked|oldEl|isEndOfElement|rangeCount|prev2|getData|inputUrl|re3|modalBody|showOnDesktop|windowHeight|marginTop|overflow|deleteProperties|xparagraphmarkerz|padding|resultNodes|right|special|specialKey|traverseFile|imageFields|fileFields|XMLHttpRequest|open|s3file|freezeScrollTop|||scrollbarWidth|string|modules|direction|||||minHeight|maxHeight|maxWidth|preClass|autosaveName|linkSize|formatting|formattingAdd|buttonsHide|buttonsHideOnMobile|removeFormat|cancel|quote|optional|mark|blockTags|footer|paragraphizeBlocks|TAB|clickToCancel|clickToSave|getModuleMethods|collapseToStart|hideButtons|hideButtonsOnMobile|setFormatting||leftFix|clientX|altKey|removeInlineTags|webkit|DIV|hidden|max|cleaned|RedactorPlugins|hideButtonsSlicer|addCallback|addDropdown|textnode|cloneRange|endContainer|onSet|parseHTML|onGet|onPaste|lt|getPlainText|singleLine|textContent|innerText|denied|removeSpacesHard|change|namespace|observer|dropdownObject|dropdownWidth|one|mouseover|disableBodyScroll|mouseout|focused|isCallback|isElement|nodeToCaretPositionFromPoint|filelink|createCancelButton|createActionButton|redactorImageLink|images|restoreScroll|insertBreakpoint|formatSet|converted|result|endRange|insertBreakLine|221|219|isStartOfElement|insertBreakLineProcessing|removeIt|isLink|inputText|mailto|iframeStart|iframeEnd|regexB|parents|isBlock|showOnMobile|createButton|buttonsSize|inValues|outValues|setDropdownProperties|setDropdownAttr|isDelete|closeTooltip|safes|relative|endNode|container|hotkeysShiftNums|observeScroll|observeScrollDisable|visible|setDropdownPosition|placeholdler|hover|setConfig|setRequestHeader|readyState|status|matched|isCurrentOrParentOne|tmpScrollTop|selectAll|documentElementRect|Function|scope|slice|arguments|settings|focusEnd|clickToEdit||tabKey|imageUploadParam|fileUploadParam|linkTooltip|linkNofollow|toolbarFixed|toolbarOverflow|toolbarCustom|superscript|subscript|shortcutsAdd|Insert||Edit|paragraph|heading1|heading2|heading3|heading4|heading5|heading6|List|accessibility|help|sup|sub|address|aside|article|table|select|invisibleSpace|imageTypes|png|gif|youtube|vimeo|UP|DOWN|SPACE|CTRL|META|SHIFT|ALT|LEFT_WIN|loadOptions|loadModules|loadToEdit|reIsBlock|reIsInline|startToEdit|bindModuleMethods|collapseToEnd|mouseup|clientY|bindHide|setInactiveAll|jsxhr|success|parseJSON|callbackName|clearInterval|H1|H2|H3|H4|H5|H6|splice|Class|removeAll|replaceClass|removeAllClass|replaceAttr|toggleAttr|removeAllAttr|setUndo|setRedo|getUndo|pop|getRedo|add|startTextarea|setIn|setId|enableEditor|setOptions|callEditor|createContainerBox|getName|loadFromTextarea|toolbarMobile|dir|auto|disableBrowsersEditing|setHelpers|custom|templates|enable|setEvent|haspopup|display|none|freezeScroll|clickCallback|unfreezeScroll|all|afterkey|beforekey|icon|setActive|invisible|setStartBefore|TABLE|endOffset|savePreCode|saveFormTags|head|stripTags|restoreFormTags|nofollow|chars||match1|match2|matchBR|matchNL|savePreFormatting|saveCodeFormatting|quot||removeSpaces|isSync|startSync|eventNamespace|destroyed|Math|slideDown||selected|dragover|dropUpload|changeHandler|mutations|detectRemoved|size|directUpload|700|imageDelete|setEditable|showEdit|buttonDelete|createDeleteButton|buttonSave|xn|removedNodes|lenChildren|normalize|formatblock|isCurrentOrParentHeader|strikethrough|formatConvert|formatted|unline|decoration|SPAN|removeEmptyAttr|endTag|raw|empty|deleteContent|caretPositionFromPoint|caretRangeFromPoint|createTextRange|moveToPoint|keydownStop|checkEvents|setupBuffer|addArrowsEvent|setupSelectAll|onArrowDown|onArrowUp|exitFromBlockquote|insertNewLine|replaceDivToParagraph|onTab|HR|removeInvisibleSpace|removeEmptyListInTable|removeEmptyLists|formatEmpty|checkKeyEvents||||insertAfterLastElement|insertBeforeFirstElement||u00a0|enableSelectAll|dbl|br1|br2|blockHtml|markerHtml|isKey|isCurrent|langVarModal|langVarBtn|buttonInsert|cleanUrl|thref|location|convertVideoLinks|convertImages|convertLinks|objects|inserted|500|substring|decodeURIComponent|regexp|inBlocks|checkbox|URL|template|getTemplate|enableEvents|setTitle|setDraggable|setContent|fadeIn|setButtonsWidth|setEnter||||||||||outerHeight|draggable|buildOverlay||disableEvents||isRedactor|properties|showTooltip|getTooltipPosition|aLink|aEdit|aUnlink||getSafes|convert|clear|restoreSafes|outerHTML|re1|clipboardData|charset|startContainer|nextNode|savedSel|origHandler|hotkeysSpecialKeys|setOverflow|setFixed|toolbarOffsetTop|late|getBoxTop|tolerance|observeScrollEnable|observeScrollResize|fullscreen|setDropdownsFixed|visibility|unsetDropdownsFixed|onDrag|onDragLeave|onDrop|getType|onreadystatechange|responseText|executeOnSignedUrl|signedURL|sendToS3|overrideMimeType|that|createCORSRequest|XDomainRequest|iPhone|iPod|BlackBerry|Android|isOverflowing|clientWidth|measureScrollbar|scrollbar|measure|tools|use|strict|No|such|VERSION|ltr|Format|Image||File|Link|Bold|Italic|Strikethrough|Underline|Lists|Open|Unlink|Cancel||Close|Save|Delete|Text|Title|Normal|Quote|Code|Name|Unordered|Ordered|Outdent|Indent|Line|Drop|here|or|Rich|ins|samp|kbd|cite|small|output|map|area|math|fieldset|legend|hgroup|nav|details|menu|||||||summary|jpeg|youtu|jpe|RIGHT|LEFT|Object|getOwnPropertyNames|collapsedEnd|bindMousemoveHide|mousemove|ajax|post|done|autosaveError|disable|firefox|msie|isNaN|Trident||rv|application|content|insertAfter|labelledby|presentation|TEXTAREA|min|margin|enableObjectResizing|enableInlineTableEditing|AutoUrlDetect|bull|javascript|void|addFirst|addAfter|addBefore|setIcon|setInactive|disableAll|enableAll|setEndBefore|reg|font|applet|u2122|trade|u00a9|copy|u2026|hellip|u2014|mdash|u2010|dash|syncBefore|_data|disconnect|removeData|linebreaks|dropdownShow|dropdownShown|slideUp|dropdownHide|dragenter|clearTimeout|||||MutationObserver|forEach|subtree|childList|characterData|characterDataOldValue||fileUploadError|activeElement|imageUploadError|dragstart||705|boolean|TR|formatBreak|through|offsetNode|duplicate|setEndPoint|EndToEnd|enter|insertParagraph|editter|insertDblBreakLine|cleanStyleOnEnter|600|host|php|insertedLink|deletedLink|addBack|281|frameborder|allowfullscreen|embed|player|video|grep|tr|desc|createTabber|addTab|addTemplate|getModal|150|modalOpened|focusin|email|20px|handle|cursor|move|dialog|times|overlay|bodyOveflow|modalClosed|unselectable|parseInt|xparagraphmarkerzxparagraphmarkerz|1500|Control|anchorNode|previousSibling|commonAncestorContainer|unshift|hasChildNodes|firstChild|verified|appendChild|cloneContents|backspace|pause|capslock|esc|pageup|pagedown|home|up|down|101|102|103|104|105|106|107|109|110|111|112|113|114|115|116|117|118|119|120|121|f10|122|f11|123|f12|144|numlock|145|173|186|187|188|189|190|191|192|220|222|_|fromCharCode|Key|external|1000|isOpened|1px|dragleave|uploadStart|uploadImageFields|uploadFileFields|POST|Requested|With|err|clearImageFields|addImageFields|removeImageFields|clearFileFields|addFileFields|removeFileFields|GET|plain|user|defined|withCredentials|PUT|onload|onerror|onprogress|Content|Type|amz|acl|public|read|u200D|uFEFF|instanceof|HTMLElement|ownerDocument|iPad|clone|inInlines|documentElement|getBoundingClientRect|abs|offsetWidth|removeChild|jQuery'.split('|'),0,{}))
\ No newline at end of file
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(j($){\'jq jr\';if(!cO.54.8t){cO.54.8t=j(cP){q fn=c;E j(){E fn.5U(cP)}}}q 1S=0;$.fn.G=j(2W){q 2J=[];q 3o=7y.54.cQ.55(cR,1);if(1g 2W===\'ac\'){c.1F(j(){q 5V=$.Y(c,\'G\');q 1A;if(2W.3y(/\\./)!==\'-1\'){1A=2W.4d(\'.\');if(1g 5V[1A[0]]!==\'1k\'){1A=5V[1A[0]][1A[1]]}}R{1A=5V[2W]}if(1g 5V!==\'1k\'&&$.6B(1A)){q 8u=1A.5U(5V,3o);if(8u!==1k&&8u!==5V){2J.3k(8u)}}R{$.6C(\'js jt 8v "\'+2W+\'" 31 3p\')}})}R{c.1F(j(){$.Y(c,\'G\',{});$.Y(c,\'G\',3p(c,2W))})}if(2J.1b===0){E c}R if(2J.1b===1){E 2J[0]}R{E 2J}};j 3p(el,2W){E 1O 3p.54.2X(el,2W)}$.3p=3p;$.3p.ju=\'1.2.0\';$.3p.ad=[\'1W\',\'3d\',\'M\',\'2j\',\'2a\',\'1c\',\'1R\',\'1Y\',\'23\',\'L\',\'2h\',\'1a\',\'1P\',\'1Q\',\'2q\',\'1n\',\'3r\',\'14\',\'1L\',\'1q\',\'3l\',\'1I\',\'4w\',\'O\',\'2Y\',\'28\',\'1H\',\'1d\',\'1X\',\'2S\',\'3e\',\'47\',\'1V\',\'2K\',\'N\',\'4e\',\'3Y\',\'1o\',\'1s\',\'6D\',\'1e\',\'cS\'];$.3p.56={};$.3p.F={3z:J,1I:\'en\',ae:\'jv\',2q:J,cT:J,cU:J,6E:J,7z:J,af:J,ag:J,ah:J,5W:J,4K:{},1V:J,2Y:1i,6F:1i,ai:J,aj:1i,ak:1i,al:[\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'8w\',\'jw\',\'jx\',\'jy\',\'5p\',\'cV\',\'3R\',\'3E\',\'ol\',\'li\',\'2C\',\'1G\'],7A:[\'6G\',\'b\',\'u\',\'em\',\'i\',\'23\',\'4x\',\'cW\',\'cX\',\'cY\',\'am\',\'an\',\'8x\',\'q\',\'cZ\',\'d0\'],ao:J,5X:4,8y:J,d1:1i,3d:J,ap:J,8z:J,48:21,8A:\'1Q\',d2:J,d3:J,d4:1i,8B:1i,d5:1i,aq:1i,57:21,d6:\'1Q\',d7:J,d8:J,8C:1i,3S:J,d9:1i,da:J,7B:30,db:\'ar-8D\',1o:1i,dc:1i,49:1p,5Y:0,8E:J,1W:J,as:J,at:[\'p\',\'2C\',\'1G\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\'],au:J,3I:[\'2u\',\'4y\',\'4z\',\'4L\',\'4A\',\'1n\',\'1Q\',\'O\',\'6H\'],av:[],aw:[],3Z:1i,4e:{\'3F+5q+m, 5r+5q+m\':{1A:\'14.ax\'},\'3F+b, 5r+b\':{1A:\'14.2u\',5s:[\'4y\']},\'3F+i, 5r+i\':{1A:\'14.2u\',5s:[\'4z\']},\'3F+h, 5r+h\':{1A:\'14.2u\',5s:[\'de\']},\'3F+l, 5r+l\':{1A:\'14.2u\',5s:[\'df\']},\'3F+k, 5r+k\':{1A:\'O.2k\'},\'3F+5q+7\':{1A:\'28.4M\',5s:[\'7C\']},\'3F+5q+8\':{1A:\'28.4M\',5s:[\'8F\']}},dg:J,dh:[\'4L\',\'4z\',\'4y\'],di:{b:\'4y\',6G:\'4y\',i:\'4z\',em:\'4z\',4x:\'4L\',6I:\'4L\'},5t:{en:{"2u":"jz","1n":"jA","1Q":"jB","O":"jC","4y":"jD","4z":"jE","4L":"jF","6J":"jG","4y-5u":"B","4z-5u":"I","4L-5u":"S","6J-5u":"U","4A":"jH","O-1L":"8G O","O-3i":"dj O","O-in-1O-4f":"jI O in 1O 4f","4N":"jJ","6K":"ay","41":"jK","1L":"8G","3q":"jL","5Z":"dk","1l":"jM","3i":"dj","1J":"jN","dm":"jO 1l","az":"jP","23":"jQ","dn":"6L 1","do":"6L 2","dp":"6L 3","dq":"6L 4","dr":"6L 5","ds":"6L 6","6M":"jR","aA":"aA","8F":"jS du","7C":"jT du","8H":"jU","3r":"jV","6H":"jW","1s-2n":"jX 1Q jY jZ ","4B":"k0","dv-dw-2n":"k1 1l T"}},V:\'3a\',14:J,2j:[],7D:[],60:[\'a\',\'2f\',\'6G\',\'6I\',\'b\',\'u\',\'em\',\'i\',\'23\',\'4x\',\'cW\',\'cX\',\'cY\',\'am\',\'an\',\'8x\',\'q\',\'cZ\',\'d0\'],58:[\'1G\',\'3E\',\'ol\',\'li\',\'p\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'dl\',\'dt\',\'dd\',\'1y\',\'3R\',\'2C\',\'k2\',\'3A\',\'2T\',\'dx\',\'2L\',\'aB\',\'dy\',\'dz\',\'dA\',\'62\'],3e:1i,aC:[\'8w\',\'1y\',\'1G\',\'63\',\'3E\',\'ol\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'dl\',\'2C\',\'3A\',\'dx\',\'2L\',\'aB\',\'dy\',\'dz\',\'dA\',\'3v\',\'3j\',\'3Z\',\'62\',\'dB\',\'3s\',\'3a\',\'1c\',\'k3\',\'k4\',\'dC\',\'k5\',\'hr\',\'k6\',\'k7\',\'k8\',\'k9\',\'2T\',\'ka\',\'kb\',\'kc\',\'p\'],42:\'<p>&#8I;</p>\',aD:\'&#8I;\',dD:[\'1n/dE\',\'1n/kd\',\'1n/dF\'],5a:6N.5a.3J(),1X:{7E:[]},4a:{7F:/5v?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:ke\\.be\\/|dG\\.8J\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w.\\-]*(?:[\'"][^<>]*>|<\\/a>))[?=&+%\\w.-]*/ig,7G:/5v?:\\/\\/(6O\\.)?dH.8J\\/(\\d+)($|\\/)/,8K:/((5v?|6O)[^\\s]+\\.)(kf?g|dE|dF)(\\?[^\\s-]+)?/ig,1x:/(5v?:\\/\\/(?:6O\\.|(?!6O))[^\\s\\.]+\\.[^\\s]{2,}|6O\\.[^\\s]+\\.[^\\s]{2,})/ig}};3p.fn=$.3p.54={2z:{5b:8,4O:46,dI:38,dJ:40,5c:13,aE:32,7H:27,aF:9,dK:17,dL:91,dM:16,dN:18,kg:39,kh:37,dO:91},2X:j(el,2W){c.$1w=$(el);c.1S=1S++;c.dP(2W);c.dQ();if(c.F.cU&&!c.$1w.3b(\'G-26-3t-3i\')){E c.dR(2W)}R if(c.$1w.3b(\'G-26-3t-3i\')){c.$1w.2Q(\'G-26-3t-3i\')}c.dS=1O 2l(\'^(\'+c.F.58.4g(\'|\').8L()+\')$\',\'i\');c.dT=1O 2l(\'^(\'+c.F.60.4g(\'|\').8L()+\')$\',\'i\');c.F.8B=(c.F.48===21)?J:c.F.8B;c.F.8C=(c.F.57===21)?J:c.F.8C;c.at={};c.1I.3K();$.5w(c.F.4e,c.F.dg);c.$T=c.$1w;c.dU();c.L.1m(\'1Z\');c.L.1m(\'dV\');c.1Z=1i;c.2a.1Z()},dU:j(){if(c.2a.8M()||c.F.14){c.F.V=\'14\'}R if(c.2a.4o(\'8N\')){c.F.V=\'1y\'}R if(c.2a.4o(\'6P\')){c.F.V=\'1G\'}},dR:j(2W){c.$1w.1N(\'26.G-26-3t-3i\',$.1j(j(){c.6Q(2W)},c));c.$1w.2m(\'G-26-3t-3i\');E},6Q:j(2W){$.5w(2W.4K,{dV:j(){c.1L.K(c.1H.1h(),J)},6Q:j(){c.N.2U();c.8O=c.23.1h();$(c.F.8P).2b(\'.G-26-3t-3i\');$(c.F.8P).2k().1N(\'26.G-26-3t-3i\',$.1j(j(e){e.2i();c.L.5d();c.1P.6R=J;c.$1w.C(c.8O);c.L.1m(\'6K\',c.8O);c.1P.6R=1i;c.8O=\'\';$(c.F.8P).29();$(c.F.8Q).29();c.$1w.1N(\'26.G-26-3t-3i\',$.1j(j(){c.6Q(2W)},c));c.$1w.2m(\'G-26-3t-3i\')},c));$(c.F.8Q).2b(\'.G-26-3t-3i\');$(c.F.8Q).2k().1N(\'26.G-26-3t-3i\',$.1j(j(e){e.2i();c.L.5d();c.L.1m(\'3q\',c.23.1h());$(c.F.8P).29();$(c.F.8Q).29();c.$1w.1N(\'26.G-26-3t-3i\',$.1j(j(){c.6Q(2W)},c));c.$1w.2m(\'G-26-3t-3i\')},c))}});c.$1w.G(2W);c.$1w.2b(\'.G-26-3t-3i\')},dP:j(2W){q 56={};if(1g $.3p.56.7I!==\'1k\'){if(c.$1w.3b($.3p.56.7I)){56=$.3p.56}}R{56=$.3p.56}c.F=$.5w({},$.5w(1i,{},$.3p.F),$.5w(1i,{},56),c.$1w.Y(),2W)},aG:j(3v){E ki.kj(3v).5e(j(8R){E 1g 3v[8R]===\'j\'})},dQ:j(){q 2g=$.3p.ad.1b;31(q i=0;i<2g;i++){c.dW($.3p.ad[i])}},dW:j(64){if(1g c[64]===\'1k\'){E}c[64]=c[64]();q 5x=c.aG(c[64]);q 2g=5x.1b;31(q z=0;z<2g;z++){c[64][5x[z]]=c[64][5x[z]].8t(c)}},1W:j(){E{4P:J,6S:j(){if(c.F.1W){c.N.1h().aH()}},kk:j(){if(c.F.1W){c.N.1h().dX()}},2a:j(){if(c.2h.5y()){E}c.1c.aI();c.1c.aJ();if(c.F.3I.1b===0){E}c.$1W=c.1W.8S();if(c.F.as!==J){c.$1W.2c(\'2M\',c.F.as)}c.1W.1D();c.1c.$1o=c.$1W;c.1c.aK();c.1c.3K(c.$1W);c.L.T().1N(\'dY.G\',c,$.1j(j(e){if(c.N.1l()!==\'\'){c.1W.2k(e)}},c))},1D:j(){c.$1W.aL(\'3f\')},8S:j(){E $(\'<3E>\').2m(\'G-1W\').12({\'id\':\'G-1W-\'+c.1S,\'67\':\'1o\'}).29()},2k:j(e){c.1H.1B();c.N.3q();c.N.2U(J);$(\'.G-1W\').29();q aM=0;q 2M=c.$1W.7J();if($(2G).2M()<(e.aN+2M)){aM=8T}c.$1W.2c({3m:(e.aN-aM)+\'4C\',2H:(e.dZ+10+$(1p).3T())+\'4C\'}).2k();c.1W.4P=1i;c.1W.e0()},e0:j(){$(1p).1N(\'4p.G-1W.\'+c.1S,$.1j(j(e){q 1a=$(e.1T).2A(\'.G-1a\').1b;if($(e.1T).2A(c.$1W).1b===0&&1a===0){q 29=c.1W.29(e);if(29!==J){c.1H.1B()}}},c)).1N(\'1q.G-1W.\'+c.1S,$.1j(j(e){q 1f=e.68;if($(e.1T).2A(\'#G-1d\').1b!==0){E}if(1f===c.2z.7H){c.N.1h().aH();c.1H.1B()}R if(1f===c.2z.5b||1f===c.2z.4O){q 1u=c.N.1h();q 15=c.N.15(1u);15.5z();c.1H.1B()}R if(1f===c.2z.5c){c.N.1h().dX();c.1H.1B()}if(c.1W.4P){c.1W.29(e)}R{c.N.1h().aH();c.1H.1B()}},c))},kl:j(){$(1p).1N(\'km.G-1W.\'+c.1S,$.1j(j(e){if($(e.1T).2A(c.$1W).1b===0){c.1W.29(e)}},c))},29:j(e){q 3F=e.69||e.5A||(e.5f&&e.aO);if(3F){E J}c.1c.7K();c.$1W.7L(5B);c.1W.4P=J;$(1p).2b(\'4p.G-1W.\'+c.1S)}}},3d:j(){E{4P:J,C:J,2X:j(){if(!c.F.3d){E}c.3d.4P=1i;c.3d.1U=(c.F.ap)?c.F.ap:c.$3a.12(\'1U\')},is:j(){E c.3d.4P},4D:j(){if(!c.F.3d){E}c.3d.6T=c.23.1h();if(c.3d.C===c.3d.6T){E}q Y={};Y.1U=c.3d.1U;Y[c.3d.1U]=c.3d.6T;Y=c.3d.7M(Y);q e1=$.kn({1x:c.F.3d,V:\'ko\',Y:Y});e1.kp(c.3d.e2)},7M:j(Y){if(c.F.8z===J||1g c.F.8z!==\'3v\'){E Y}$.1F(c.F.8z,$.1j(j(k,v){if(v!==21&&v.7N().4Q(\'#\')===0){v=$(v).2J()}Y[k]=v},c));E Y},e2:j(Y){q 2r;6U{2r=$.e3(Y)}6V(e){2r=Y}q e4=(1g 2r.6C===\'1k\')?\'3d\':\'kq\';c.L.1m(e4,c.3d.1U,2r);c.3d.C=c.3d.6T},aP:j(){c.3d.4P=J;e5(c.8U)}}},M:j(){E{2u:j(1t,12,1C,V){1t=(1t===\'az\')?\'2C\':1t;c.M.1K=[\'p\',\'2C\',\'1G\',\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'1y\',\'2T\'];if($.3U(1t,c.M.1K)===-1){E}if(1t===\'p\'&&1g 12===\'1k\'){12=\'22\'}c.1V.29();c.2j.2v();E(c.1e.4h())?c.M.8V(1t,12,1C,V):c.M.8W(1t,12,1C,V)},8V:j(1t,12,1C,V){c.N.3q();q M=c.N.M();q 4i=M.1r.3J();if($.3U(4i,c.M.1K)===-1){c.N.2U();E}if(4i===1t){1t=\'p\'}q 3w=c.1e.4E(M,1t);if(1g 12===\'3v\'){V=1C;31(q 1f in 12){3w=c.M.4R(3w,1f,12[1f],V)}}R{3w=c.M.4R(3w,12,1C,V)}if(1t===\'1G\'&&3w.1b===1){$(3w).C($.3c($(3w).C()))}c.N.2U();c.M.aQ(3w);E 3w},8W:j(1t,12,1C,V){c.N.3q();q 3w=[];q 2N=c.N.2N();q 2g=2N.1b;31(q i=0;i<2g;i++){q 4i=2N[i].1r.3J();if($.3U(4i,c.M.1K)!==-1){q M=c.1e.4E(2N[i],1t);if(1g 12===\'3v\'){V=1C;31(q 1f in 12){M=c.M.4R(M,1f,12[1f],V)}}R{M=c.M.4R(M,12,1C,V)}3w.3k(M);c.M.aQ(M)}}c.N.2U();if(1t===\'1G\'&&3w.1b!==0){q 2D=3w[0];$.1F(3w,j(i,s){if(i!==0){$(2D).1D("\\n"+$.3c(s.C()));$(s).1B()}});3w=[];3w.3k(2D)}E 3w},aQ:j(K){K=K[0]||K;q 1K=c.F.60;q 2N=[\'6P\',\'e6\',\'e7\',\'e8\',\'e9\',\'ea\',\'eb\'];if($.3U(K.1r,2N)===-1){E}if(K.1r!==\'6P\'){q 5C=1K.4Q(\'a\');1K.ec(5C,1)}$(K).1z(1K.4g(\',\')).6a(\'.G-N-1H\').3g().8X()},4R:j(M,12,1C,V){if(1g 12===\'1k\'){E M}q 1A=(1g V===\'1k\')?\'Q\':V;if(12===\'22\'){M=c.M[1A+\'ed\'](1C,M)}R{if(1A===\'1B\'){M=c.M[1A+\'6W\'](12,M)}R if(1A===\'ee\'){M=c.M[1A+\'6W\'](12,M)}R{M=c.M[1A+\'6W\'](12,1C,M)}}E M},4S:j(M){E(1g M===\'1k\')?c.N.2N():M},ef:j(1C,M){E $(c.M.4S(M)).2O(\'22\').2m(1C)[0]},7O:j(1C,M){E $(c.M.4S(M)).7O(1C)[0]},2m:j(1C,M){E $(c.M.4S(M)).2m(1C)[0]},2Q:j(1C,M){E $(c.M.4S(M)).2Q(1C)[0]},eg:j(M){E $(c.M.4S(M)).2O(\'22\')[0]},eh:j(12,1C,M){M=c.M.2O(12,M);E $(M).12(12,1C)[0]},ei:j(12,1C,M){M=c.M.4S(M);q 2w=c;q 3B=[];$.1F(M,j(i,s){q $el=$(s);if($el.12(12)){3B.3k(2w.M.2O(12,s))}R{3B.3k(2w.M.8Y(12,1C,s))}});E 3B},8Y:j(12,1C,M){E $(c.M.4S(M)).12(12,1C)[0]},2O:j(12,M){E $(c.M.4S(M)).2O(12)[0]},ej:j(M){M=c.M.4S(M);q 3B=[];$.1F(M,j(i,s){if(1g s.4q===\'1k\'){3B.3k(s)}q $el=$(s);q 2g=s.4q.1b;31(q z=0;z<2g;z++){$el.2O(s.4q[z].1U)}3B.3k($el[0])});E 3B}}},2j:j(){E{2v:j(V){if(1g V===\'1k\'||V===\'8Z\'){c.2j.ek()}R{c.2j.eo()}},ek:j(){c.N.3q();q 2o=c.F.2j[c.F.2j.1b-1];q 1v=c.L.T().C();if(2o!==1v){c.F.2j.3k(1v)}c.N.2U()},eo:j(){c.N.3q();c.F.7D.3k(c.L.T().C());c.N.2U()},ep:j(){c.L.T().C(c.F.2j.er())},es:j(){c.L.T().C(c.F.7D.er())},5D:j(){c.F.2j.3k(c.L.T().C())},8Z:j(){if(c.F.2j.1b===0){E}c.2j.2v(\'aR\');c.2j.ep();c.N.2U()},aR:j(){if(c.F.7D.1b===0){E}c.2j.2v(\'8Z\');c.2j.es();c.N.2U()}}},2a:j(){E{1Z:j(){if(c.F.V===\'14\'){c.F.V=\'14\'}R if(c.F.V===\'1y\'){q C=$.3c(c.$T.C());if(C===\'\'){c.$T.C(c.F.42)}}R if(c.F.V===\'3a\'){c.2a.et()}c.2a.eu();c.2a.ev();c.2a.ew();c.2a.ex();c.2a.ey()},ez:j(){c.$2d=$(\'<1y 22="G-2d" 67="kr" />\')},eu:j(){c.L.T().2m(\'G-in\')},ev:j(){q id=(c.F.V===\'3a\')?\'G-1S-\'+c.1S:c.$1w.12(\'id\');c.L.T().12(\'id\',(1g id===\'1k\')?\'G-1S-\'+c.1S:id)},eA:j(){q 1U=c.$1w.12(\'1U\');E(1g 1U===\'1k\')?\'ks-\'+c.1S:1U},eB:j(){c.$T=$(\'<1y />\');c.$3a=c.$1w;c.$1w.12(\'1U\',c.2a.eA());c.$2d.kt(c.$1w).1D(c.$T).1D(c.$1w);c.$T.2m(\'G-T\');c.$1w.29();c.$2d.6X(\'<2f 22="G-92-2n" id="G-92-\'+c.1S+\'" 3L-aS="J">\'+c.1I.1h(\'dv-dw-2n\')+\'</2f>\');c.$T.12({\'3L-ku\':\'G-92-\'+c.1S,\'67\':\'kv\'})},et:j(){c.2a.ez();c.2a.eB();c.23.1Z(c.L.3a().2J());c.L.3a().2J(c.1Y.7P(c.$T.C()))},4o:j(1t){E(c.$1w[0].1r===1t)},8M:j(){E(!c.2a.4o(\'kw\')&&!c.2a.4o(\'8N\')&&!c.2a.4o(\'6P\'))},ew:j(){c.L.T().12({\'aT\':1i})},ex:j(){if(c.F.V===\'14\'){c.F.6F=J}if(c.F.V===\'14\'||c.F.V===\'1G\'){c.F.eC=J;c.F.1o=J;c.F.1W=J;c.F.2Y=J}if(c.F.6E){c.L.T().2m(\'G-6E\')}if(c.F.V!==\'3a\'){E}c.L.2d().12(\'eD\',c.F.ae);c.L.T().12(\'eD\',c.F.ae);if(c.F.7z){c.L.T().12(\'7z\',c.F.7z)}if(c.F.af){c.L.T().2c(\'eE-4r\',c.F.af)}R{c.L.T().2c(\'eE-4r\',\'kx\')}if(c.F.ag){c.L.T().2c(\'93-4r\',c.F.ag)}if(c.F.ah){c.L.T().2c({\'93-2M\':c.F.ah,\'7Q\':\'eF\'})}},ey:j(){c.2a.eG();c.1P.2X();c.2a.eH();if(c.F.1o||c.F.1W){c.7R=c.1c.2X()}if(c.F.1W){c.1W.2a()}R if(c.F.1o){c.1o.2a()}if(c.2h.5y()&&c.F.eC&&c.F.1W){c.F.1o=1i;c.1o.2a()}if(c.F.1W||c.F.1o){c.L.T().1N(\'dY.G-1X.\'+c.1S+\' 3l.G-1X.\'+c.1S+\' 2q.G-1X.\'+c.1S+\' 5E.G-1X.\'+c.1S,$.1j(c.1X.1o,c));c.L.1w().1N(\'5F.1m.G\',$.1j(j(){c.1c.7K()},c))}c.1d.eI();c.2a.5W();c.3d.2X();c.23.C=c.23.7S(c.L.T().C());c.L.1m(\'2X\');c.L.1m(\'6Q\');c.3Y.1X();c.1Z=J},eH:j(){if(c.F.2Y){c.2Y.2u()}c.1V.2X();if(c.F.2q){3C(c.2q.1Z,5B)}R if(c.F.cT){3C(c.2q.2E,5B)}},eG:j(){6U{1p.4T(\'ky\',J,J);1p.4T(\'kz\',J,J);1p.4T("kA",J,J)}6V(e){}},5W:j(){if(!c.F.5W){E}$.1F(c.F.5W,$.1j(j(i,s){q 1A=(1g aU!==\'1k\'&&1g aU[s]!==\'1k\')?aU:3p.fn;if(!$.6B(1A[s])){E}c[s]=1A[s]();q 5x=c.aG(c[s]);q 2g=5x.1b;31(q z=0;z<2g;z++){c[s][5x[z]]=c[s][5x[z]].8t(c)}if(1g c[s].5t!==\'1k\'){q 1I={};if(1g c[s].5t[c.F.1I]!==\'1k\'){1I=c[s].5t[c.F.1I]}R if(1g c[s].5t[c.F.1I]===\'1k\'&&1g c[s].5t.en!==\'1k\'){1I=c[s].5t.en}q 2w=c;$.1F(1I,j(i,s){if(1g 2w.F.7T[i]===\'1k\'){2w.F.7T[i]=s}})}if($.6B(c[s].2X)){c[s].2X()}},c))}}},1c:j(){E{1o:j(){E(1g c.1c.$1o===\'1k\'||!c.1c.$1o)?c.$1o:c.1c.$1o},2X:j(){E{2u:{1J:c.1I.1h(\'2u\'),1a:{p:{1J:c.1I.1h(\'dm\'),1A:\'M.2u\'},2C:{1J:c.1I.1h(\'az\'),1A:\'M.2u\'},1G:{1J:c.1I.1h(\'23\'),1A:\'M.2u\'},h1:{1J:c.1I.1h(\'dn\'),1A:\'M.2u\'},h2:{1J:c.1I.1h(\'do\'),1A:\'M.2u\'},h3:{1J:c.1I.1h(\'dp\'),1A:\'M.2u\'},h4:{1J:c.1I.1h(\'dq\'),1A:\'M.2u\'},h5:{1J:c.1I.1h(\'dr\'),1A:\'M.2u\'},h6:{1J:c.1I.1h(\'ds\'),1A:\'M.2u\'}}},4y:{1J:c.1I.1h(\'4y-5u\'),2n:c.1I.1h(\'4y\'),1A:\'14.2u\'},4z:{1J:c.1I.1h(\'4z-5u\'),2n:c.1I.1h(\'4z\'),1A:\'14.2u\'},4L:{1J:c.1I.1h(\'4L-5u\'),2n:c.1I.1h(\'4L\'),1A:\'14.2u\'},6J:{1J:c.1I.1h(\'6J-5u\'),2n:c.1I.1h(\'6J\'),1A:\'14.2u\'},4A:{1J:c.1I.1h(\'4A\'),1a:{8F:{1J:\'&kB; \'+c.1I.1h(\'8F\'),1A:\'28.4M\'},7C:{1J:\'1. \'+c.1I.1h(\'7C\'),1A:\'28.4M\'},8H:{1J:\'< \'+c.1I.1h(\'8H\'),1A:\'3r.7U\',1X:{1w:\'li\',6Y:{12:{\'22\':\'G-1a-O-94\',\'3L-5g\':1i}}}},3r:{1J:\'> \'+c.1I.1h(\'3r\'),1A:\'3r.95\',1X:{1w:\'li\',6Y:{12:{\'22\':\'G-1a-O-94\',\'3L-5g\':1i}}}}}},1n:{1J:c.1I.1h(\'1n\'),1A:\'1n.2k\'},1Q:{1J:c.1I.1h(\'1Q\'),1A:\'1Q.2k\'},O:{1J:c.1I.1h(\'O\'),1a:{O:{1J:c.1I.1h(\'O-1L\'),1A:\'O.2k\',1X:{1w:\'a\',in:{1J:c.1I.1h(\'O-3i\'),},6Y:{1J:c.1I.1h(\'O-1L\')}}},4N:{1J:c.1I.1h(\'4N\'),1A:\'O.4N\',1X:{1w:\'a\',6Y:{12:{\'22\':\'G-1a-O-94\',\'3L-5g\':1i}}}}}},6H:{1J:c.1I.1h(\'6H\'),1A:\'4w.1L\'}}},aK:j(){$.1F(c.7R.2u.1a,$.1j(j(i,s){if($.3U(i,c.F.at)===-1){5Z c.7R.2u.1a[i]}},c))},aI:j(){if(c.F.av.1b!==0){c.1c.aV(c.F.av)}},aJ:j(){if(c.2h.5y()&&c.F.aw.1b!==0){c.1c.aV(c.F.aw)}},aV:j(3I){$.1F(3I,$.1j(j(i,s){q 5C=c.F.3I.4Q(s);c.F.3I.ec(5C,1)},c))},3K:j($1o){c.1c.3I=[];$.1F(c.F.3I,$.1j(j(i,2s){if(!c.7R[2s]||(2s===\'1Q\'&&!c.1Q.is())||(2s===\'1n\'&&!c.1n.is())){E}$1o.1D($(\'<li>\').1D(c.1c.2a(2s,c.7R[2s])))},c))},2a:j(2s,2t){if(c.F.1o===J){E}q $1c=$(\'<a 2e="kC:kD(21);" 22="4j-1c 4j-\'+2s+\'" 4k="\'+2s+\'" />\').C(2t.1J);$1c.12({\'67\':\'1c\',\'3L-2n\':2t.1J,\'7z\':\'-1\'});if(1g 2t.2n!==\'1k\'){$1c.12(\'3L-2n\',2t.2n)}if(2t.1A||2t.2I||2t.1a){c.1c.eJ($1c,2s,2t)}if(2t.1a){$1c.2m(\'G-1o-O-1a\').12(\'3L-eK\',1i);q $1a=$(\'<3E 22="G-1a G-1a-\'+c.1S+\' G-1a-2d-\'+2s+\'" 3j="9a: aW;">\');$1c.Y(\'1a\',$1a);c.1a.2a(2s,$1a,2t.1a)}c.1c.3I.3k($1c);E $1c},kE:j(){E c.1c.1o().1z(\'a.4j-1c\')},kF:j(){E c.1c.3I},eJ:j($1c,2s,2t){$1c.1N(\'4p\',$.1j(j(e){e.2i();if($1c.3b(\'G-1c-5g\')){E J}q V=\'1A\';q 1m=2t.1A;if(2t.2I){V=\'2I\';1m=2t.2I}R if(2t.1a){V=\'1a\';1m=J}c.1c.4M(e,2s,V,1m);E J},c))},4M:j(e,2s,V,1m,3o){if(c.2h.5G()||!c.2h.3G()){c.1e.eL();e.7V=J}if(V===\'2I\'){c.14.2u(1m)}R if(V===\'1a\'){c.1a.2k(e,2s)}R{c.1c.eM(e,1m,2s,3o)}if(V!==\'1a\'){c.1a.6Z(J)}if(c.F.1W&&V!==\'1a\'){c.1W.29(e)}if(c.2h.5G()||!c.2h.3G()){c.1e.eN()}},eM:j(e,1m,2s,3o){q 1A;3o=(1g 3o===\'1k\')?2s:3o;if($.6B(1m)){1m.55(c,2s)}R if(1m.3y(/\\./)!==\'-1\'){1A=1m.4d(\'.\');if(1g c[1A[0]]===\'1k\'){E}if(1g 3o===\'3v\'){c[1A[0]][1A[1]].5U(c,3o)}R{c[1A[0]][1A[1]].55(c,3o)}}R{if(1g 3o===\'3v\'){c[1m].5U(c,3o)}R{c[1m].55(c,3o)}}c.1X.3I(e,2s)},eO:j(){E c.1c.3I},1h:j(1f){if(c.F.1o===J){E}E c.1c.1o().1z(\'a.4j-\'+1f)},2v:j(1f,1J){if(c.F.1o===J){E}q $2p=c.1c.1o().1z(\'a.4j-\'+1f);$2p.C(1J).12(\'3L-2n\',1J);E $2p},5D:j(1f,1J){if(c.F.1o===J){E}q 2p=c.1c.2a(1f,{1J:1J});c.1c.1o().1D($(\'<li>\').1D(2p));E 2p},kG:j(1f,1J){if(c.F.1o===J){E}q 2p=c.1c.2a(1f,{1J:1J});c.1c.1o().6X($(\'<li>\').1D(2p));E 2p},kH:j(eP,1f,1J){if(c.F.1o===J){E}q 2p=c.1c.2a(1f,{1J:1J});q $2p=c.1c.1h(eP);if($2p.1b!==0){$2p.1M().2x($(\'<li>\').1D(2p))}R{c.1c.1o().1D($(\'<li>\').1D(2p))}E 2p},kI:j(eQ,1f,1J){if(c.F.1o===J){E}q 2p=c.1c.2a(1f,{1J:1J});q $2p=c.1c.1h(eQ);if($2p.1b!==0){$2p.1M().4F($(\'<li>\').1D(2p))}R{c.1c.1o().1D($(\'<li>\').1D(2p))}E 2p},kJ:j($2p,eR){$2p.C(eR)},aX:j($2p,1m){if(1g $2p===\'1k\'||c.F.1o===J){E}q V=(1m===\'1a\')?\'1a\':\'1A\';q 1f=$2p.12(\'4k\');$2p.1N(\'4p\',$.1j(j(e){if($2p.3b(\'G-1c-5g\')){E J}c.1c.4M(e,1f,V,1m)},c))},aY:j($2p,1a){if(c.F.1o===J){E}$2p.2m(\'G-1o-O-1a\').12(\'3L-eK\',1i);q 1f=$2p.12(\'4k\');c.1c.aX($2p,\'1a\');q $1a=$(\'<1y 22="G-1a G-1a-\'+c.1S+\' G-1a-2d-\'+1f+\'" 3j="9a: aW;">\');$2p.Y(\'1a\',$1a);if(1a){c.1a.2a(1f,$1a,1a)}E $1a},aZ:j(1f){c.1c.1h(1f).2m(\'G-7W\')},kK:j(1f){c.1c.1h(1f).2Q(\'G-7W\')},7K:j(1f){q $5H=c.1c.1o().1z(\'a.4j-1c\');if(1g 1f!==\'1k\'){$5H=$5H.6a(\'.4j-\'+1f)}$5H.2Q(\'G-7W\')},aP:j(1f){c.1c.1h(1f).2m(\'G-1c-5g\')},5I:j(1f){c.1c.1h(1f).2Q(\'G-1c-5g\')},kL:j(1f){q $5H=c.1c.1o().1z(\'a.4j-1c\');if(1g 1f!==\'1k\'){$5H=$5H.6a(\'.4j-\'+1f)}$5H.2m(\'G-1c-5g\')},kM:j(){c.1c.1o().1z(\'a.4j-1c\').2Q(\'G-1c-5g\')},1B:j(1f){c.1c.1h(1f).1B()}}},1R:j(){E{2v:j(4U,5J,2E){c.L.T().2q();2E=(1g 2E===\'1k\')?0:1;4U=4U[0]||4U;5J=5J[0]||5J;q 1u=c.N.1h();q 15=c.N.15(1u);6U{15.70(4U,0);15.9b(5J,2E)}6V(e){}c.N.3M(1u,15)},7X:j(K){if(1g c.1Z!==\'1k\'){c.L.T().2q()}E K[0]||K},1Z:j(K){q 1u,15;K=c.1R.7X(K);if(!K){E}if(K.1r===\'6b\'){E c.1R.4F(K)}q 14=c.1e.7Y(K.1r);if(K.3D===\'\'||14){15=1p.71();q 6c=1p.5K(\'\\4s\');15.70(K,0);15.4l(6c);15.7Z(6c);15.4b(1i);1u=2G.5h();1u.5i();1u.5L(15);if(!14){c.L.T().1N(\'1q.G-1B-b0\',j(){$(6c).1B();$(c).2b(\'1q.G-1B-b0\')})}}R{1u=2G.5h();1u.5i();15=1p.71();15.72(K);15.4b(1i);1u.5L(15)}},2E:j(K){q 1u,15;K=c.1R.7X(K);if(!K){E}if(K.1r!==\'6b\'&&K.3D===\'\'){E c.1R.1Z(K)}if(K.1r===\'6b\'){q 4V=1p.3N(\'2f\');4V.b1=\'G-eS-4V\';4V.3D=\'&#8I;\';$(K).2x(4V);1u=2G.5h();1u.5i();15=1p.71();15.eT(4V);15.kN(4V);1u.5L(15);$(4V).3h(j(){E $(c).3g()});E}if(K.74&&K.74.6d===1){E c.1R.2x(K.74)}1u=2G.5h();1u.5i();15=1p.71();15.72(K);15.4b(J);1u.5L(15)},2x:j(K){q 1u,15;K=c.1R.7X(K);if(!K){E}if(K.1r===\'6b\'){E c.1R.2E(K)}if(c.1e.6e(K.1r)){q 1E=c.1R.1E(K);if(1g 1E===\'1k\'){c.1R.2E(K)}R{if(1E.1r===\'eU\'){1E=$(1E).1z(\'5p, 3R\').2D()[0]}R if(1E.1r===\'6f\'||1E.1r===\'6g\'){1E=$(1E).1z(\'li\').2D()[0]}c.1R.1Z(1E)}E}q 6c=1p.5K(\'\\4s\');1u=2G.5h();1u.5i();15=1p.71();15.7Z(K);15.4l(6c);15.7Z(6c);15.4b(1i);1u.5L(15)},4F:j(K){q 1u,15;K=c.1R.7X(K);if(!K){E}if(c.1e.6e(K.1r)){q 2y=c.1R.2y(K);if(1g 2y===\'1k\'){c.1R.1Z(K)}R{if(2y.1r===\'eU\'){2y=$(2y).1z(\'5p, 3R\').2o()[0]}R if(2y.1r===\'6f\'||2y.1r===\'6g\'){2y=$(2y).1z(\'li\').2o()[0]}c.1R.2E(2y)}E}1u=2G.5h();1u.5i();15=1p.71();15.eT(K);15.4b(1i);1u.5L(15)},1E:j(K){q $1E=$(K).1E();if($1E.3b(\'G-3Z-1t, G-N-1H\')){E $1E.1E()[0]}R{E $1E[0]}},2y:j(K){q $2y=$(K).2y();if($2y.3b(\'G-3Z-1t, G-N-1H\')){E $2y.2y()[0]}R{E $2y[0]}},2S:j(K){E c.2S.1h(K)}}},1Y:j(){E{b2:j(C){C=c.1Y.eV(C);C=c.1Y.eW(C);if(c.F.3Z){C=C.Q(/<3Z(.*?[^>]?)>([\\w\\W]*?)<\\/3Z>/gi,\'<1G 22="G-3Z-1t" $1>$2</1G>\')}C=C.Q(/\\$/g,\'&#36;\');C=C.Q(/&80;/g,\'&\');C=C.Q(/<a 2e="(.*?[^>]?)®(.*?[^>]?)">/gi,\'<a 2e="$1&kO$2">\');C=C.Q(/<2f(.*?[^>]?)id="N-1H-1"(.*?[^>]?)>​<\\/2f>/gi,\'[[[eX]]]\');C=C.Q(/<2f(.*?[^>]?)id="N-1H-2"(.*?[^>]?)>​<\\/2f>/gi,\'[[[eY]]]\');q 2w=c;q $1y=$("<1y/>").C($.9c(C,1p,1i));q 6h={\'b\':\'6G\',\'i\':\'em\',\'6I\':\'4x\'};$1y.1z(\'b, i, 6I\').3h(j(){E 2w.1e.4E(c,6h[c.1r.3J()])});C=$1y.C();q 1K=[\'kP\',\'C\',\'eZ\',\'O\',\'3f\',\'5r\',\'kQ\',\'2f\'];if(!c.F.3Z){1K.3k(\'3Z\')}C=c.1Y.f0(C,1K);C=C.Q(/<!--[\\s\\S]*?-->/gi,\'\');C=c.3e.3K(C);C=C.Q(\'[[[eX]]]\',\'<2f id="N-1H-1" 22="G-N-1H">​</2f>\');C=C.Q(\'[[[eY]]]\',\'<2f id="N-1H-2" 22="G-N-1H">​</2f>\');if(C.3y(/^(||\\s||<br\\s?\\/?>||&5j;)$/i)!==-1){E c.F.42}E C},b3:j(C){E c.1Y.7P(C)},7P:j(C){C=C.Q(/\\4s/g,\'\');C=C.Q(/&#8I;/gi,\'\');if(C.3y(/^<p>(||\\s||<br\\s?\\/?>||&5j;)<\\/p>$/i)!==-1){E\'\'}q $1y=$("<1y/>").C($.9c(C,1p,1i));$1y.1z(\'*[3j=""]\').2O(\'3j\');$1y.1z(\'*[22=""]\').2O(\'22\');$1y.1z(\'*[4k=""]\').2O(\'4k\');$1y.1z(\'.G-eS-4V\').1F(j(){$(c).3g().8X()});$1y.1z(\'2f\').1F(j(){$(c).3g().8X()});$1y.1z(\'.G-N-1H, #G-1L-1H\').1B();C=$1y.C();if(c.F.3Z){C=C.Q(/<1G 22="G-3Z-1t"(.*?[^>]?)>([\\w\\W]*?)<\\/1G>/gi,\'<3Z$1>$2</3Z>\')}C=c.1Y.fa(C);C=C.Q(1O 2l(\'<br\\\\s?/?></h\',\'gi\'),\'</h\');C=C.Q(1O 2l(\'<br\\\\s?/?></li>\',\'gi\'),\'</li>\');C=C.Q(1O 2l(\'</li><br\\\\s?/?>\',\'gi\'),\'</li>\');C=C.Q(/<1G>/gi,"<1G>\\n");if(c.F.ao){C=C.Q(/<1G>/gi,\'<1G 22="\'+c.F.ao+\'">\')}if(c.F.da){C=C.Q(/<a(.*?)4k="fb"(.*?[^>])>/gi,\'<a$1$2>\');C=C.Q(/<a(.*?[^>])>/gi,\'<a$1 4k="fb">\')}q fc={\'\\kR\':\'&kS;\',\'\\kT\':\'&kU;\',\'\\kV\':\'&kW;\',\'\\kX\':\'&kY;\',\'\\kZ\':\'&l0;\'};$.1F(fc,j(i,s){C=C.Q(1O 2l(i,\'g\'),s)});C=C.Q(/&80;/g,\'&\');C=C.Q(/<p><\\/p>/gi,"");E C},b4:j(C,Y,1L){if(1L!==1i){q fe=c.1Y.fg(C);if(fe){C=c.1Y.fh(C)}}C=$.3c(C);if(Y.1G){if(c.F.5X){C=C.Q(/\\t/g,1O 7y(c.F.5X+1).4g(\' \'))}}R{C=c.1Y.fi(C);C=c.1Y.fj(C)}if(1L!==1i){C=c.1Y.fk(C);C=c.1Y.fl(C);if(Y.9d===J){C=C.Q(/&/g,\'&80;\');C=c.1Y.fm(C,Y);C=c.1Y.b5(C);C=c.1Y.fo(C,Y)}}if(Y.1l){C=c.1Y.fp(C);C=c.1Y.b5(C)}if(Y.9d){C=c.1Y.fq(C)}if(Y.3e){C=c.3e.3K(C)}E C},b6:j(C,1L){q 2N=c.N.2N();q Y={1l:J,9d:J,3e:1i,4w:c.1Y.fr(C),2N:c.1Y.b7(C),1G:J,4A:J,M:1i,14:1i,3O:1i,4W:1i};if(2N.1b===1&&c.1e.4X([\'h1\',\'h2\',\'h3\',\'h4\',\'h5\',\'h6\',\'a\',\'3A\'])){Y.1l=1i;Y.3e=J;Y.14=J;Y.4W=J;Y.3O=J;Y.4w=1i}R if(c.F.V===\'14\'||c.F.6F===J){Y.3e=J;Y.M=J;Y.4w=1i}R if(2N.1b===1&&c.1e.4X([\'li\'])){Y.4A=1i;Y.M=J;Y.3e=J;Y.4W=J}R if(2N.1b===1&&c.1e.4X([\'5p\',\'3R\',\'2C\'])){Y.M=J;Y.3e=J}R if(c.F.V===\'1G\'||(2N.1b===1&&c.1e.4X(\'1G\'))){Y.14=J;Y.M=J;Y.9d=1i;Y.1G=1i;Y.3e=J;Y.4W=J;Y.3O=J}if(Y.4w===1i){Y.3e=J}if(1L===1i){Y.1l=J}E Y},b7:j(C){q fs=C.3n(1O 2l(\'</(\'+c.F.58.4g(\'|\').8L()+\')>\',\'gi\'));q ft=C.3n(1O 2l(\'<hr(.*?[^>])>\',\'gi\'));E(fs===21&&ft===21)?J:1i},fr:j(C){if(c.1Y.b7(C)){E J}q fu=C.3n(/<br\\s?\\/?>/gi);q fv=C.3n(/\\n/gi);E(!fu&&!fv)?1i:J},fg:j(C){E C.3n(/22="?l1|3j="[^"]*\\fw-|3j=\'[^\'\']*\\fw-|w:l2/i)},fl:j(C){q 1K=c.F.60;q 2g=1K.1b;31(q i=0;i<2g;i++){C=C.Q(1O 2l(\'<\'+1K[i]+\'[^>]*>(\\s\\n|\\t)?</\'+1K[i]+\'>\',\'gi\'),\'\')}E C},fk:j(C){C=C.Q(/<\\/2f>/gi,\'\');C=C.Q(/<2f[^>]*>/gi,\'\');E C},fh:j(C){C=C.Q(/\\n/g," ");C=C.Q(/<br\\s?\\/?>|<\\/p>|<\\/1y>|<\\/li>|<\\/3R>/gi,\'\\n\\n\');E C},fp:j(C){E C.Q(\'&5j;\',\' \')},fi:j(C){E C.Q(/<br\\s?\\/?>/gi,\'\\n\')},l3:j(C){E C.Q(/\\n/g,\'<br />\')},fm:j(C,Y){if(Y.3O&&c.F.ak){C=C.Q(/<a(.*?)2e="(.*?)"(.*?)>(.*?)<\\/a>/gi,\'###a 2e="$2"###$4###/a###\')}if(Y.4W&&c.F.aj){C=C.Q(/<2B 3x="(.*?)"(.*?[^>])>/gi,\'###2B 3x="$1"###\')}if(c.F.ai){E C}q 58=(Y.4A)?[\'3E\',\'ol\',\'li\']:c.F.al;q 1K;if(Y.M){1K=(Y.14)?58.fx(c.F.7A):58}R{1K=(Y.14)?c.F.7A:[]}q 2g=1K.1b;31(q i=0;i<2g;i++){C=C.Q(1O 2l(\'</\'+1K[i]+\'>\',\'gi\'),\'###/\'+1K[i]+\'###\');if(1K[i]===\'3R\'||1K[i]===\'5p\'){C=C.Q(1O 2l(\'<\'+1K[i]+\'(.*?[^>])((l4|l5)="(.*?[^>])")?(.*?[^>])>\',\'gi\'),\'###\'+1K[i]+\' $2###\')}R{C=C.Q(1O 2l(\'<\'+1K[i]+\'[^>]*>\',\'gi\'),\'###\'+1K[i]+\'###\')}}E C},fo:j(C,Y){if(Y.3O&&c.F.ak){C=C.Q(/###a 2e="(.*?)"###(.*?)###\\/a###/gi,\'<a 2e="$1">$2</a>\')}if(Y.4W&&c.F.aj){C=C.Q(/###2B 3x="(.*?)"###/gi,\'<2B 3x="$1">\')}if(c.F.ai){E C}q 58=(Y.4A)?[\'3E\',\'ol\',\'li\']:c.F.al;q 1K;if(Y.M){1K=(Y.14)?58.fx(c.F.7A):58}R{1K=(Y.14)?c.F.7A:[]}q 2g=1K.1b;31(q i=0;i<2g;i++){C=C.Q(1O 2l(\'###/\'+1K[i]+\'###\',\'gi\'),\'</\'+1K[i]+\'>\');if(1K[i]===\'3R\'||1K[i]===\'5p\'){C=C.Q(1O 2l(\'###\'+1K[i]+\' (.*?[^#])###\',\'gi\'),\'<\'+1K[i]+\'$1>\')}R{C=C.Q(1O 2l(\'###\'+1K[i]+\'###\',\'gi\'),\'<\'+1K[i]+\'>\')}}E C},b8:j(M){M=(1g M===\'1k\')?$(c.N.M()).2A(\'1G\',c.L.T()[0]):M;$(M).1z(\'br\').3h(j(){E 1p.5K(\'\\n\')});$(M).1z(\'p\').3h(j(){E $(c).3g()})},fj:j(C){q $1y=$(\'<1y />\').1D(C);$1y.1z(\'1G\').3h(j(){q 3P=$(c).C();3P=3P.Q(/<br\\s?\\/?>|<\\/p>|<\\/1y>|<\\/li>|<\\/3R>/gi,\'\\n\');3P=3P.Q(/(<([^>]+)>)/gi,\'\');E $(\'<1G />\').1D(3P)});C=$1y.C();$1y.1B();E C},b5:j(C){C=C.Q(/<!--[\\s\\S]*?-->/gi,\'\');C=C.Q(/<3j[\\s\\S]*?3j>/gi,\'\');C=C.Q(/<\\/p>|<\\/1y>|<\\/li>|<\\/3R>/gi,\'\\n\');C=C.Q(/<\\/H[1-6]>/gi,\'\\n\\n\');q 4t=1p.3N(\'1y\');4t.3D=C;C=4t.fy||4t.fz;E $.3c(C)},eV:j(C){C=c.1Y.fA(C);C=c.1Y.fB(C);C=c.1Y.fC(C);E C},fA:j(C){q 1G=C.3n(/<1G(.*?)>([\\w\\W]*?)<\\/1G>/gi);if(1G===21){E C}$.1F(1G,$.1j(j(i,s){q 2Z=s.3n(/<1G(.*?)>([\\w\\W]*?)<\\/1G>/i);2Z[2]=2Z[2].Q(/<br\\s?\\/?>/g,\'\\n\');2Z[2]=2Z[2].Q(/&5j;/g,\' \');if(c.F.5X){2Z[2]=2Z[2].Q(/\\t/g,1O 7y(c.F.5X+1).4g(\' \'))}2Z[2]=c.1Y.9e(2Z[2]);2Z[2]=2Z[2].Q(/\\$/g,\'&#36;\');C=C.Q(s,\'<1G\'+2Z[1]+\'>\'+2Z[2]+\'</1G>\')},c));E C},fB:j(C){q 23=C.3n(/<23(.*?)>([\\w\\W]*?)<\\/23>/gi);if(23===21){E C}$.1F(23,$.1j(j(i,s){q 2Z=s.3n(/<23(.*?)>([\\w\\W]*?)<\\/23>/i);2Z[2]=2Z[2].Q(/&5j;/g,\' \');2Z[2]=c.1Y.9e(2Z[2]);2Z[2]=2Z[2].Q(/\\$/g,\'&#36;\');C=C.Q(s,\'<23\'+2Z[1]+\'>\'+2Z[2]+\'</23>\')},c));E C},fC:j(C){C=C.Q(/&lt;2f id=&75;N-1H-([0-9])&75; 22=&75;G-N-1H&75;&gt;​&lt;\\/2f&gt;/g,\'<2f id="N-1H-$1" 22="G-N-1H">​</2f>\');E C},eW:j(C){E C.Q(/<63(.*?)>([\\w\\W]*?)<\\/63>/gi,\'<2L$1 4k="G-63-1t">$2</2L>\')},fa:j(C){E C.Q(/<2L(.*?) 4k="G-63-1t"(.*?)>([\\w\\W]*?)<\\/2L>/gi,\'<63$1$2>$3</63>\')},fq:j(C){C=C.Q(/”/g,\'"\');C=C.Q(/“/g,\'"\');C=C.Q(/‘/g,\'\\\'\');C=C.Q(/’/g,\'\\\'\');C=c.1Y.9e(C);E C},9e:j(3P){3P=76(3P).Q(/&80;/g,\'&\').Q(/&lt;/g,\'<\').Q(/&gt;/g,\'>\').Q(/&75;/g,\'"\');3P=3P.Q(/&/g,\'&80;\').Q(/</g,\'&lt;\').Q(/>/g,\'&gt;\').Q(/"/g,\'&75;\');E 3P},f0:j(3s,b9){if(1g b9===\'1k\'){E 3s.Q(/(<([^>]+)>)/gi,\'\')}q 1K=/<\\/?([a-z][a-ba-9]*)\\b[^>]*>/gi;E 3s.Q(1K,j($0,$1){E b9.4Q($1.3J())===-1?$0:\'\'})},81:j(C){E C.Q(/<2f(.*?[^>]?)22="G-N-1H"(.*?[^>]?)>([\\w\\W]*?)<\\/2f>/gi,\'\')},l6:j(C){C=$.3c(C);C=C.Q(/\\n/g,\'\');C=C.Q(/[\\t]*/g,\'\');C=C.Q(/\\n\\s*\\n/g,"\\n");C=C.Q(/^[\\s\\n]*/g,\' \');C=C.Q(/[\\s\\n]*$/g,\' \');C=C.Q(/>\\s{2,}</g,\'> <\');C=C.Q(/\\n\\n/g,"\\n");C=C.Q(/\\4s/g,\'\');E C},bb:j(C){C=$.3c(C);C=C.Q(/\\n/g,\'\');C=C.Q(/[\\t]*/g,\'\');C=C.Q(/\\n\\s*\\n/g,"\\n");C=C.Q(/^[\\s\\n]*/g,\'\');C=C.Q(/[\\s\\n]*$/g,\'\');C=C.Q(/>\\s{2,}</g,\'><\');C=C.Q(/\\n\\n/g,"\\n");C=C.Q(/\\4s/g,\'\');E C},fD:j(){q bc=c.N.M();if(c.1e.bd()&&bc){bc.9f()}}}},23:j(){E{6R:1i,C:J,1Z:j(C){C=$.3c(C);if(c.F.V===\'3a\'){C=c.1Y.b2(C)}R if(c.F.V===\'1y\'&&C===\'\'){C=c.F.42}c.1P.9g();c.L.T().C(C);c.1X.3K();c.1P.9h()},2v:j(C){C=$.3c(C);if(c.F.V===\'3a\'){C=c.1Y.b2(C)}R if(c.F.V===\'1y\'&&C===\'\'){C=c.F.42}c.L.T().C(C);if(c.F.V===\'3a\'){c.L.3a().2J(c.1Y.7P(C))}c.1V.5I()},1h:j(){if(c.F.V===\'3a\'){E c.L.3a().2J()}R{q C=c.L.T().C();C=c.1Y.b3(C);E C}},5M:j(){if(!c.23.6R){E}q C=c.L.T().C();q 82=c.23.7S(C);if(c.23.fE(82)){E}c.23.C=82;if(c.F.V!==\'3a\'){c.L.1m(\'5M\',C);c.L.1m(\'bf\',C);E}if(c.F.V===\'3a\'){3C($.1j(j(){c.23.fF(C)},c),10)}},fF:j(C){C=c.L.1m(\'l7\',C);C=c.1Y.7P(C);c.L.3a().2J(C);c.L.1m(\'5M\',C);if(c.1Z===J){c.L.1m(\'bf\',C)}c.1Z=J},fE:j(82){q C=(c.23.C!==J)?c.23.C:J;E(C!==J&&C===82)},7S:j(C){C=C.Q(/\\4s/g,\'\');E c.1Y.81(C)}}},L:j(){E{id:j(){E c.$T.12(\'id\')},1w:j(){E c.$1w},T:j(){E(1g c.$T===\'1k\')?$():c.$T},3a:j(){E c.$3a},2d:j(){E(c.F.V===\'3a\')?c.$2d:c.$1w},1o:j(){E(c.$1o)?c.$1o:J},1W:j(){E(c.$1W)?c.$1W:J},3v:j(){E $.5w({},c)},6E:j(){c.L.T().7O(\'G-6E\')},83:j(1U){c.L.84=1U},77:j(){E c.L.84},1m:j(V,e,Y){q fG=\'G\';q 7V=J;q 1P=$.l8(c.L.1w()[0],\'1P\');if(1g 1P!==\'1k\'&&1g 1P[V]!==\'1k\'){q 2g=1P[V].1b;31(q i=0;i<2g;i++){q 7I=1P[V][i].7I;if(7I===\'1m.\'+fG){q 4Y=1P[V][i].4Y;q 3o=(1g Y===\'1k\')?[e]:[e,Y];7V=(1g 3o===\'1k\')?4Y.55(c,e):4Y.55(c,e,3o)}}}if(7V){E 7V}if(1g c.F.4K[V]===\'1k\'){E(1g Y===\'1k\')?e:Y}q 1m=c.F.4K[V];if($.6B(1m)){E(1g Y===\'1k\')?1m.55(c,e):1m.55(c,e,Y)}R{E(1g Y===\'1k\')?e:Y}},5d:j(){c.F.fH=1i;c.L.1m(\'5d\');c.1V.5d();c.2K.5d();$(\'#G-92-\'+c.1S).1B();c.L.T().2Q(\'G-in G-6E\');c.L.T().2b(\'1q.G-1B-b0\');c.L.T().2b(\'.G-1X.\'+c.1S);c.$1w.2b(\'.G\').l9(\'G\');c.L.T().2b(\'.G\');$(1p).2b(\'.G-1a\');$(1p).2b(\'.G-1W.\'+c.1S);$(1p).2b(\'4p.G-5F.\'+c.1S);$(1p).2b(\'4p.G.\'+c.1S);$(1p).2b(\'5E.G.\'+c.1S+\' 26.G.\'+c.1S);$(2G).2b(\'.G-1o.\'+c.1S);$(2G).2b(\'fI.G.\'+c.1S);$("3f").2b(\'6i.G.\'+c.1S);$(c.F.49).2b(\'6i.G.\'+c.1S);q 2w=c;if(c.F.5W!==J){$.1F(c.F.5W,j(i,s){$(2G).2b(\'.G-9i-\'+s);$(1p).2b(\'.G-9i-\'+s);$("3f").2b(\'.G-9i-\'+s);2w.L.T().2b(\'.G-9i-\'+s)})}c.$1w.2b(\'26.G-26-3t-3i\');c.$1w.2Q(\'G-26-3t-3i\');c.L.T().2Q(\'G-T\');c.L.T().2O(\'aT\');q C=c.23.1h();if(c.F.1o&&c.$1o){c.$1o.1z(\'a\').1F(j(){q $el=$(c);if($el.Y(\'1a\')){$el.Y(\'1a\').1B();$el.Y(\'1a\',{})}})}if(c.F.V===\'3a\'){c.$2d.2x(c.$1w);c.$2d.1B();c.$1w.2J(C).2k()}if(c.F.1W){c.$1W.1B()}if(c.F.1o&&c.$1o){c.$1o.1B()}if(c.$43){c.$43.1B()}if(c.$6j){c.$6j.1B()}$(\'.G-O-4m\').1B();e5(c.8U)}}},2h:j(){E{bg:j(){E/9j/.5N(c.F.5a)},6k:j(){E c.F.5a.4Q(\'la\')>-1},5G:j(v){q ie;ie=2l(\'lb\'+(!lc(v)?(\'\\\\s\'+v):\'\'),\'i\').5N(6N.5a);if(!ie){ie=!!6N.5a.3n(/ld.*le[ :]*11\\./)}E ie},5y:j(){E/(fJ|fK|fL|fM)/.5N(6N.5a)},3G:j(){E!/(fJ|fK|fN|fL|fM)/.5N(6N.5a)},fO:j(){E/fN/.5N(6N.5a)}}},1a:j(){E{3u:J,1c:J,1f:J,2R:[],lf:j(){E c.1a.3u},2a:j(1U,$1a,5O){5O=c.1a.fP(1U,5O);$.1F(5O,$.1j(j(2s,2t){q $2F=c.1a.fQ(2s,2t);c.1X.aY($2F,2s,2t);$1a.12(\'4k\',1U).1D($2F)},c))},fP:j(1U,5O){if(1U!==\'2u\'||c.F.au===J){E 5O}$.1F(c.F.au,$.1j(j(i,s){q V=(c.1e.6e(s.3o[0]))?\'M\':\'14\';5O[i]={1A:(V===\'M\')?\'M.2u\':\'14.2u\',3o:s.3o,1J:s.1J}},c));E 5O},fQ:j(2s,2t){q $bh=$(\'<li />\');q $2F=$(\'<a 2e="#" 22="G-1a-\'+2s+\'" 67="1c" />\');q $fR=$(\'<2f />\').C(2t.1J);$2F.1D($fR);$2F.1N(\'4p\',$.1j(j(e){e.2i();c.1a.fS(e,2s,2t)},c));$bh.1D($2F);E $bh},fS:j(e,2s,2t){if($(e.1T).3b(\'G-1a-O-94\')){E}q 2I=c.1a.fT(2t);if(1g 2t.3o!==\' 1k\'){c.1c.4M(e,2s,2I.V,2I.1m,2t.3o)}R{c.1c.4M(e,2s,2I.V,2I.1m)}},fT:j(2t){q 2I={};2I.V=\'1A\';2I.1m=2t.1A;if(2t.2I){2I.V=\'2I\';2I.1m=2t.2I}R if(2t.1a){2I.V=\'1a\';2I.1m=2t.1a}E 2I},2k:j(e,1f){if(c.2h.3G()){c.L.T().2q()}c.1a.6Z(J,1f);c.1a.1f=1f;c.1a.1c=c.1c.1h(c.1a.1f);if(c.1a.1c.3b(\'78\')){c.1a.29();E}c.1a.3u=c.1a.1c.Y(\'1a\').aL(1p.3f);c.L.1m(\'lg\',{1a:c.1a.3u,1f:c.1a.1f,1c:c.1a.1c});c.1c.aZ(c.1a.1f);c.1a.1c.2m(\'78\');c.1a.fU();if(c.1c.1o().3b(\'1o-5k-2d\')&&c.2h.3G()){c.1a.fV()}R{c.1a.fW()}if(c.2h.3G()){c.1a.3u.1N(\'bi.G-1a\',$.1j(c.1e.bj,c));c.1a.3u.1N(\'bk.G-1a\',$.1j(c.1e.85,c))}e.9k()},fV:j(){q 2H=c.1a.1c.2R().2H+c.1a.1c.9l()+c.F.5Y;q 2R=\'5k\';if(c.F.49!==1p){2H=(c.1a.1c.9l()+c.$1o.2S().2H)+c.F.5Y;2R=\'6l\'}c.1a.3u.2c({2R:2R,3m:c.1a.2R.3m+\'4C\',2H:2H+\'4C\'}).2k();c.1a.3u.4n(\'bl\',{4u:0.2},$.1j(j(){c.1a.bm();c.1a.6m()},c))},fW:j(){c.1a.3u.2c({2R:\'6l\',3m:c.1a.2R.3m+\'4C\',2H:(c.1a.1c.9l()+c.1a.2R.2H)+\'4C\'}).2k();c.1a.3u.4n(((c.F.3z)?\'bl\':\'2k\'),{4u:0.2},$.1j(j(){c.1a.bm();c.1a.6m()},c))},6m:j(){$(1p).1N(\'4p.G-1a\',$.1j(c.1a.6Z,c));c.L.T().1N(\'5E.G-1a\',$.1j(c.1a.6Z,c));$(1p).1N(\'3l.G-1a\',$.1j(c.1a.86,c))},bm:j(){c.L.1m(\'lh\',{1a:c.1a.3u,1f:c.1a.1f,1c:c.1a.1c})},fU:j(){c.1a.2R=c.1a.1c.2S();q bn=c.1a.3u.2M();if((c.1a.2R.3m+bn)>$(1p).2M()){c.1a.2R.3m=fX.93(0,c.1a.2R.3m-bn+bo(c.1a.1c.7J()))}},86:j(e){if(e.68!==c.2z.7H){E}c.1a.6Z(e);c.L.T().2q()},6Z:j(e,1f){if(c.2h.3G()){c.1e.85()}if(e!==J&&$(e.1T).2A(\'.G-1a\').1b!==0){E}q $3I=(1g 1f===\'1k\')?c.1c.1o().1z(\'a.78\'):c.1c.1o().1z(\'a.78\').6a(\'.4j-\'+1f);q $87=(1g 1f===\'1k\')?$(\'.G-1a-\'+c.1S):$(\'.G-1a-\'+c.1S).6a(\'.G-1a-2d-\'+1f);if($87.1b!==0){$(1p).2b(\'.G-1a\');c.L.T().2b(\'.G-1a\');$.1F($87,$.1j(j(i,s){q $el=$(s);c.L.1m(\'fY\',$el);$el.29();$el.2b(\'bi bk\').2b(\'.G-1a\')},c));$3I.2Q(\'G-7W 78\');c.1a.1c=J;c.1a.1f=J;c.1a.3u=J}},29:j(){if(c.1a.3u===J){E}if(c.2h.3G()){c.1e.85()}c.1a.3u.4n(((c.F.3z)?\'bp\':\'29\'),{4u:0.2},$.1j(j(){$(1p).2b(\'.G-1a\');c.L.T().2b(\'.G-1a\');c.1a.fZ()},c))},fZ:j(){c.L.1m(\'fY\',c.1a.3u);c.1a.1c.2Q(\'G-7W 78\');c.1a.3u.2b(\'bi bk\').2b(\'.G-1a\');c.1a.1c=J;c.1a.1f=J;c.1a.3u=J}}},1P:j(){E{bq:J,9m:1i,6n:J,9n:J,9g:j(){c.1P.9n=1i},9h:j(){q 2w=c;3C(j(){2w.1P.9n=J},1)},6o:j(e){e.2i();e.9k();if(e.1T.1r===\'6p\'){$(e.1T).2m(\'G-1n-6o\')}},9o:j(e){c.L.T().1z(\'2B\').2Q(\'G-1n-6o\')},5l:j(e){e=e.88||e;c.L.T().1z(\'2B\').2Q(\'G-1n-6o\');if(c.F.V===\'14\'||c.F.V===\'1G\'){e.2i();E J}if(2G.4Z===1k||!e.9p){E 1i}if(e.9p.4v.1b===0){E c.1P.9q(e)}R{c.1P.g0(e)}c.L.1m(\'5l\',e)},26:j(e){q 84=c.L.77();q V=(84===\'26\'||84===\'4G\')?J:\'26\';c.L.83(V);c.1e.79();c.L.1m(\'26\',e)},2q:j(e){if(c.7a){E}if(c.1P.bs(\'2q\')){c.L.1m(\'2q\',e)}c.1P.bq=1i;c.1P.9m=J;if(c.N.1v()===J){q 1u=c.N.1h();q 15=c.N.15(1u);15.70(c.L.T()[0],0);15.9b(c.L.T()[0],0);c.N.3M(1u,15)}},5F:j(e){if(c.1Z||c.7a){E}if($(e.1T).2A(\'#\'+c.L.id()+\', .G-1o, .G-1a, #G-1d-2d\').g1()!==0){E}if(!c.1P.9m&&c.1P.bs(\'5F\')){c.L.1m(\'5F\',e)}c.1P.bq=J;c.1P.9m=1i},g2:j(){q 9r=-1;c.1P.9s=J;$(2G).1N(\'fI.G.\'+c.1S,$.1j(j(){c.1P.9s=1i;if(9r!==-1){bt(9r)}9r=3C($.1j(j(){c.1P.9s=J},c),g3)},c))},2X:j(){c.L.T().1N(\'6o.G lj.G\',$.1j(c.1P.6o,c));c.L.T().1N(\'9o.G\',$.1j(c.1P.9o,c));c.L.T().1N(\'5l.G\',$.1j(c.1P.5l,c));c.L.T().1N(\'26.G\',$.1j(c.1P.26,c));c.L.T().1N(\'47.G\',$.1j(c.47.2X,c));c.L.T().1N(\'1q.G\',$.1j(c.1q.2X,c));c.L.T().1N(\'3l.G\',$.1j(c.3l.2X,c));c.L.T().1N(\'2q.G\',$.1j(c.1P.2q,c));$(1p).1N(\'4p.G-5F.\'+c.1S,$.1j(c.1P.5F,c));c.1P.g2();c.1P.g4();c.1P.g5()},g4:j(){q 2w=c;c.1P.g6=1O lk(j(g7){g7.ll($.1j(2w.1P.g8,2w))})},g8:j(g9){q 6q=J;c.1X.3K();if((c.F.V===\'3a\'||c.F.V===\'1y\')&&g9.1T===c.L.T()[0]){6q=1i}if(!6q){c.1P.ga()}},g5:j(){c.1P.g6.1X(c.L.T()[0],{4q:1i,lm:1i,ln:1i,lo:1i,lp:1i})},ga:j(){if(c.1P.9n){E}c.23.5M();if(c.3d.is()){bt(c.8U);c.8U=3C($.1j(c.3d.4D,c),lq)}},g0:j(e){e.2i();e.9k();if((!c.F.8B&&!c.F.8C)||(c.F.48===21&&c.F.57===21)){E}if(e.1T.1r===\'6p\'){c.1P.6n=e.1T}q 4v=e.9p.4v;c.1s.gb(4v[0],e)},9q:j(e){c.L.1m(\'5l\',e)},bs:j(1U){E(1g c.F.4K[1U]!==\'1k\'&&$.6B(c.F.4K[1U]))},lr:j(){c.1P.9g()},ls:j(){c.1P.9h()}}},1Q:j(){E{is:j(){E!(!c.F.57||!c.F.57&&!c.F.3S)},2k:j(){c.1d.3K(\'1Q\',c.1I.1h(\'1Q\'),gc);c.1s.2X(\'#G-1d-1Q-1s\',c.F.57,c.1Q.1L);$(\'#G-6M\').2J(c.N.1h().7N());c.1d.2k()},1L:j(2r,3H,e){if(1g 2r.6C!==\'1k\'){c.1d.41();c.L.1m(\'lu\',2r);E}c.1Q.gd(e,3H);c.2j.2v();c.1W.6S();q 1l=c.1Q.1l(2r);q $O=$(\'<a />\').12(\'2e\',2r.1x).1l(1l);q id=(1g 2r.id===\'1k\')?\'\':2r.id;q V=(1g 2r.3S===\'1k\')?\'1Q\':\'3S\';$O.12(\'Y-\'+V,id);$O=$(c.1L.K($O));c.1R.2x($O);c.3Y.5D({V:V,K:$O[0],1x:$O[0].2e,id:id});if(3H!==21){c.L.1m(\'57\',$O,2r)}},gd:j(e,3H){if(3H){c.1H.1B();c.1L.9t(e,c.1H.1h());c.N.2U()}R{c.1d.41()}},1l:j(2r){q 1l=$(\'#G-6M\').2J();E(1g 1l===\'1k\'||1l===\'\')?2r.1U:1l}}},2q:j(){E{1Z:j(){c.L.T().2q();if(c.F.V===\'14\'){E}q $2D=c.2q.2D();if($2D!==J){c.1R.1Z($2D)}},2E:j(){c.L.T().2q();q 2o=(c.F.14)?c.L.T():c.2q.2o();if(2o.1b===0){E}q 4H=c.2q.74(2o);if(!c.2h.bg()&&4H!==J){c.1R.2E(4H)}R{q 1u=c.N.1h();q 15=c.N.15(1u);if(15!==21){15.72(2o[0]);15.4b(J);c.N.3M(1u,15)}R{c.1R.2E(2o)}}},2D:j(){q $2D=c.L.T().6r().2D();if($2D.1b===0&&($2D[0].1b===0||$2D[0].1r===\'6b\'||$2D[0].1r===\'ge\'||$2D[0].6d===3)){E J}if($2D[0].1r===\'6f\'||$2D[0].1r===\'6g\'){E $2D.1z(\'li\').2D()}E $2D},2o:j(){E c.L.T().6r().2o()},74:j(2o){q 4H=2o[0].74;E(4H!==21&&c.1e.7Y(4H.1r))?4H:J},is:j(){E(c.L.T()[0]===1p.gf)}}},1n:j(){E{is:j(){E!(!c.F.48||!c.F.48&&!c.F.3S)},2k:j(){c.1d.3K(\'1n\',c.1I.1h(\'1n\'),gc);c.1s.2X(\'#G-1d-1n-3V\',c.F.48,c.1n.1L);c.1d.2k()},1L:j(2r,3H,e){q $2B;if(1g 2r.6C!==\'1k\'){c.1d.41();c.1P.6n=J;c.L.1m(\'lv\',2r,e);E}if(c.1P.6n!==J){$2B=$(c.1P.6n);c.L.1m(\'gg\',$2B[0].3x,$2B);$2B.12(\'3x\',2r.1x);c.1P.6n=J;c.L.1m(\'48\',$2B,2r);E}c.1V.29();q $2T=$(\'<2T>\');$2B=$(\'<2B>\');$2B.12(\'3x\',2r.1x);q id=(1g 2r.id===\'1k\')?\'\':2r.id;q V=(1g 2r.3S===\'1k\')?\'1n\':\'3S\';$2B.12(\'Y-\'+V,id);$2T.1D($2B);q 1G=c.1e.4o(c.N.1v(),\'1G\');if(3H){c.1W.6S();c.1H.1B();q K=c.1L.9t(e,c.1H.1h());q $1E=$(K).1E();c.N.2U();c.2j.2v();if(1g $1E!==\'1k\'&&$1E.1b!==0&&$1E[0].1r===\'6p\'){c.L.1m(\'gg\',$1E[0].3x,$1E);$1E.2A(\'2T, p\',c.L.T()[0]).3h($2T);c.1R.2x($2T)}R{if(1G){$(1G).2x($2T)}R{c.1L.K($2T)}c.1R.2x($2T)}}R{c.1d.41();c.2j.2v();c.1W.6S();if(1G){$(1G).2x($2T)}R{c.1L.K($2T)}c.1R.2x($2T)}c.1P.6n=J;c.3Y.5D({V:V,K:$2B[0],1x:$2B[0].3x,id:id});if(3H!==21){c.L.1m(\'48\',$2B,2r)}},gh:j($1n){$1n.1N(\'lw\',j(e){e.2i()});$1n.2b(\'26.G 5E.G\').1N(\'26.G 5E.G\',$.1j(j(e){3C($.1j(j(){c.1n.gj($1n)},c),8T)},c))},gj:j($1n){if(c.1P.9s){E}c.1X.1n=$1n;q $O=$1n.2A(\'a\',c.$T[0]);c.1d.3K(\'1n-3i\',c.1I.1h(\'3i\'),lx);c.1n.gk=c.1d.gl().1l(c.1I.1h(\'5Z\'));c.1n.gm=c.1d.9u().1l(c.1I.1h(\'3q\'));c.1n.gk.1N(\'26\',$.1j(c.1n.1B,c));c.1n.gm.1N(\'26\',$.1j(c.1n.3M,c));if(c.F.d4===J){$(\'#G-1n-4B\').2J(\'\').29()}R{q $1E=$1n.1E();if($1E.1b!==0&&$1E[0].1r===\'gn\'){$(\'#G-1n-4B\').2J($1E.1l()).2k()}}$(\'#G-1n-go\').C($(\'<2B 3x="\'+$1n.12(\'3x\')+\'" 3j="93-2M: 5B%;">\'));$(\'#G-1n-1J\').2J($1n.12(\'9v\'));q $bu=$(\'#G-1n-O\');$bu.12(\'2e\',$1n.12(\'3x\'));if($O.1b!==0){$bu.2J($O.12(\'2e\'));if($O.12(\'1T\')===\'89\'){$(\'#G-1n-O-7b\').9w(\'9x\',1i)}}$(\'.G-O-4m\').1B();c.1d.2k();if(c.2h.3G()){$(\'#G-1n-1J\').2q()}},3M:j(){q $1n=c.1X.1n;q $O=$1n.2A(\'a\',c.L.T()[0]);q 1J=$(\'#G-1n-1J\').2J().Q(/(<([^>]+)>)/ig,"");$1n.12(\'9v\',1J).12(\'1J\',1J);q O=$.3c($(\'#G-1n-O\').2J()).Q(/(<([^>]+)>)/ig,"");if(O!==\'\'){q 7c=\'((gp--)?[a-ba-9]+(-[a-ba-9]+)*\\\\.)+[a-z]{2,}\';q 4j=1O 2l(\'^(8a|9y|5v)://\'+7c,\'i\');q 7d=1O 2l(\'^\'+7c,\'i\');if(O.3y(4j)===-1&&O.3y(7d)===0&&c.F.9z){O=c.F.9z+\'://\'+O}q 1T=($(\'#G-1n-O-7b\').9w(\'9x\'))?1i:J;if($O.1b===0){q a=$(\'<a 2e="\'+O+\'">\'+c.1e.8b($1n)+\'</a>\');if(1T){a.12(\'1T\',\'89\')}$1n.3h(a)}R{$O.12(\'2e\',O);if(1T){$O.12(\'1T\',\'89\')}R{$O.2O(\'1T\')}}}R if($O.1b!==0){$O.3h(c.1e.8b($1n))}q 4B=$(\'#G-1n-4B\').2J();q $3A=$1n.1E();if($3A.1b===0||$3A[0].1r!==\'gn\'){$3A=J}if(4B!==\'\'){if($3A===J){$3A=$(\'<3A />\').1l(4B);$1n.2x($3A)}R{$3A.1l(4B)}}R if($3A!==J){$3A.1B()}c.1d.41();c.2j.2v()},1B:j(e,$1n,5C){$1n=(1g $1n===\'1k\')?$(c.1X.1n):$1n;if(1g e!==\'gq\'){c.2j.2v()}c.1P.9g();q $O=$1n.2A(\'a\',c.L.T()[0]);q $2T=$1n.2A(\'2T, p\',c.L.T()[0]);q $1M=$1n.1M();if($(\'#G-1n-2d\').1b!==0){$1M=$(\'#G-1n-2d\').1M()}q $1E;if($2T.1b!==0){$1E=$2T.1E();$2T.1B()}R if($O.1b!==0){$1M=$O.1M();$O.1B()}R{$1n.1B()}$(\'#G-1n-2d\').1B();if(e!==J){if($2T.1b!==0&&$1E.1b!==0){c.1R.1Z($1E)}R if($1M.1b!==0){c.1R.1Z($1M)}}if(1g e!==\'gq\'){c.1d.41()}c.1e.9B();c.1X.1n=J;c.1P.9h();c.1V.5I();c.23.5M()}}},3r:j(){E{95:j(){if(!c.28.1h()){E}q $1v=$(c.N.1v()).2A(\'li\');q $28=$1v.2A(\'3E, ol\');q $li=$1v.2A(\'li\');q $2y=$li.2y();if($2y.1b===0||$2y[0].1r!==\'6s\'){E}c.2j.2v();if(c.1e.4h()){q gr=$28[0].1r;q $bv=$(\'<\'+gr+\' />\');c.N.3q();$bv.1D($1v);$2y.1D($bv);c.N.2U()}R{1p.4T(\'3r\');c.N.3q();c.3r.bw();c.3r.9f();c.N.2U()}},7U:j(){if(!c.28.1h()){E}q $1v=$(c.N.1v()).2A(\'li\');q $28=$1v.2A(\'3E, ol\');c.2j.2v();1p.4T(\'8H\');q $2F=$(c.N.1v()).2A(\'li\',c.L.T()[0]);if(c.1e.4h()){c.3r.gs($2F)}if($2F.1b===0){1p.4T(\'gu\',J,\'p\');$2F=$(c.N.1v());q $1E=$2F.1E();if($1E.1b!==0&&$1E[0].1r===\'6b\'){$1E.1B()}}c.N.3q();c.3r.bw();c.3r.9f();c.N.2U()},gs:j($2F){q $2y=$2F.2y();if($2y.1b!==0&&$2y[0].1r!==\'6s\'){c.N.3q();q $li=$2F.7e(\'li\',c.L.T()[0]);$li.2x($2F);c.N.2U()}},9f:j(){c.L.T().1z(\'li\').1F($.1j(j(i,s){q $el=$(s);$el.1z(c.F.60.4g(\',\')).1F(j(){$(c).2O(\'3j\')});q $1M=$el.1M();if($1M.1b!==0&&$1M[0].1r===\'6s\'){$1M.2x($el);E}q $1E=$el.1E();if($1E.1b!==0&&($1E[0].1r===\'6f\'||$1E[0].1r===\'6g\')){$el.1D($1E)}},c))},bw:j($28){q $4A=c.L.T().1z(\'3E, ol\');q $7f=c.L.T().1z(\'li\');$7f.1F($.1j(j(i,s){c.3r.9C(s)},c));$4A.1F($.1j(j(i,s){c.3r.9C(s)},c));$7f.1F($.1j(j(i,s){c.3r.9C(s)},c))},9C:j(s){q C=s.3D.Q(/[\\t\\s\\n]/g,\'\');C=C.Q(/<2f><\\/2f>/g,\'\');if(C===\'\'){$(s).1B()}}}},14:j(){E{2u:j(1t,12,1C,V){1t=1t.3J();if(1t===\'2f\'){E}if(c.1e.4X([\'6P\'])){E}q 1K=[\'b\',\'4y\',\'i\',\'4z\',\'6J\',\'gv\',\'4L\',\'de\',\'df\'];q 3w=[\'6G\',\'6G\',\'em\',\'em\',\'u\',\'4x\',\'4x\',\'am\',\'an\'];31(q i=0;i<1K.1b;i++){if(1t===1K[i]){1t=3w[i]}}c.1V.29();c.2j.2v();E(c.1e.4h())?c.14.8V(1t,12,1C,V):c.14.8W(1t,12,1C,V)},8V:j(1t,12,1C,V){q 14=c.N.14();if(14){q 4i=14.1r.3J();if(4i===1t){if(c.1e.3Q(14.3D)){c.1R.2x(14);$(14).1B()}R{q $2D=c.14.bx(14,4i);c.1R.2x($2D)}}R{c.14.by(1t,12,1C,V)}}R{c.14.by(1t,12,1C,V)}},by:j(1t,12,1C,V){q K=1p.3N(1t);K=c.14.4R(K,12,1C,V);c.1L.K(K);c.1R.1Z(K)},ly:j(1t,12,1C,V,14,4i){q K=1p.3N(1t);K=c.14.4R(K,12,1C,V);q $2D=c.14.bx(14,4i);$2D.2x(K);c.1R.1Z(K)},8W:j(1t,12,1C,V){q 2w=c;c.14.gw(1t);c.N.3q();1p.4T(\'gv\');q $gx=c.L.T().1z(\'6I\');$gx.1F(j(i,s){q $9D=$(s);q 7g=1p.3N(1t);if(!$9D.3b(\'G-14-bz\')){7g=2w.14.4R(7g,12,1C,V)}q $7g=$(7g);$9D.3h($7g.C($9D.3g()))});if(1t!==\'4x\'){c.L.T().1z(\'14\').1F(j(i,s){2w.1e.4E(s,\'4x\')})}if(1t!==\'u\'){c.L.T().1z(\'gy\').1F(j(i,s){2w.1e.4E(s,\'u\')})}c.L.T().1z(\'1G\').6r(1t).3h(j(){E $(c).3g()});c.$T.1z(c.F.60.4g(\', \')).1F($.1j(j(i,s){q $el=$(s);q 8R=$el.2c(\'1l-gz\');if($el.3b(\'G-N-1H\')){E}R if(c.1Y.bb(s.3D)===\'\'){$el.1B();E}R if(s.1r===\'gA\'&&$el.3b(\'G-14-bz\')){$el.3h($el.3g());E}R if(8R===\'4w-lz\'){if(s.1r===\'gA\'||(s.1r===\'U\'&&s.4q.1b===0)){$el.3h($el.3g())}R{$el.2c(\'1l-gz\',\'\');c.1e.gB($el,\'3j\')}}},c));c.N.2U()},gw:j(1t){c.N.3q();q 2w=c;if(1t!==\'4x\'){c.L.T().1z(\'4x\').1F(j(i,s){2w.1e.4E(s,\'14\')})}if(1t!==\'u\'){c.L.T().1z(\'u\').1F(j(i,s){2w.1e.4E(s,\'gy\')})}c.L.T().1z(1t).1F(j(){q $el=$(c);$el.3h($(\'<6I />\').2m(\'G-14-bz\').C($el.3g()))});c.N.2U()},bx:j(14,4i){q 7h=1p.3N(\'2f\');7h.id=\'G-14-7h\';7h=c.1L.K(7h);q 2E=c.1e.5m(14);q 23=c.1e.8b(14);q gC=(2E)?\'\':\'<\'+4i+\'>\';23=23.Q(/<2f(.*?[^>])id="G-14-7h">​<\\/2f>/i,\'</\'+4i+\'>\'+gC);q $23=$(23);$(14).3h($23);E $23.2D()},4R:j(14,12,1C,V){if(1g 12===\'1k\'){E 14}q 1A=(1g V===\'1k\')?\'Q\':V;if(12===\'22\'){14=c.14[1A+\'ed\'](1C,14)}R{if(1A===\'1B\'){14=c.14[1A+\'6W\'](12,14)}R if(1A===\'ee\'){14=c.14[1A+\'6W\'](14)}R{14=c.14[1A+\'6W\'](12,1C,14)}}E 14},4I:j(14){E(1g 14===\'1k\')?c.N.3W():14},3M:j(1t,12,1C,V){q 3W=c.N.3W();q 9E=[];q 2w=c;$.1F(3W,j(i,s){if($.8c(1t)){if($.3U(s.1r.3J(),1t)===-1){E}}R{if(1t!==\'*\'&&s.1r.3J()!==1t){E}}9E.3k(2w.14.4R(s,12,1C,V))});E 9E},ef:j(1C,14){E $(c.14.4I(14)).2O(\'22\').2m(1C)[0]},7O:j(1C,14){E $(c.14.4I(14)).7O(1C)[0]},2m:j(1C,14){E $(c.14.4I(14)).2m(1C)[0]},2Q:j(1C,14){E $(c.14.4I(14)).2Q(1C)[0]},eg:j(14){E $(c.14.4I(14)).2O(\'22\')[0]},eh:j(14,12,1C){14=c.14.2O(12,c.14.4I(14));E $(14).12(12,1C)[0]},ei:j(12,1C,14){14=c.14.4I(14);q 2w=c;q 3B=[];$.1F(14,j(i,s){q $el=$(s);if($el.12(12)){3B.3k(2w.14.2O(12,s))}R{3B.3k(2w.14.8Y(12,1C,s))}});E 3B},8Y:j(12,1C,14){E $(c.14.4I(14)).12(12,1C)[0]},2O:j(12,14){E $(c.14.4I(14)).2O(12)[0]},ej:j(14){14=c.14.4I(14);q 3B=[];$.1F(14,j(i,s){if(1g s.4q===\'1k\'){3B.3k(s)}q $el=$(s);q 2g=s.4q.1b;31(q z=0;z<2g;z++){$el.2O(s.4q[z].1U)}3B.3k($el[0])});E 3B},ax:j(){1p.4T(\'ax\')}}},1L:j(){E{2v:j(C){c.1V.29();c.23.2v(C);c.2q.2E();c.1V.5I()},C:j(C,Y){c.1V.29();c.L.T().2q();q M=c.N.M();q 14=c.N.14();if(1g Y===\'1k\'){Y=c.1Y.b6(C,1i);C=c.1Y.b4(C,Y,1i)}q 1u=c.N.1h();q 15=c.N.15(1u);15.5z();c.N.3M(1u,15);if(Y.4A){q $28=$($.9c(C));if($28.1b!==0&&($28[0].1r===\'6f\'||$28[0].1r===\'6g\')){c.1L.gD(M,$28);E}}if(Y.2N&&M){if(c.1e.6t()){c.L.T().C(C);c.2q.2E()}R{q 44=c.1e.6u();if(44===J){c.1L.bA(C)}R{C=$(C).1D(c.1H.1h());if(44.V===\'1Z\'){44.$M.4F(C)}R{44.$M.2x(C)}c.N.2U();c.L.T().1z(\'p\').1F(j(){if($.3c(c.3D)===\'\'){$(c).1B()}})}}}R{if(14){q $1y=$("<1y/>").C($.9c(C,1p,1i));$1y.1z(14.1r.3J()).1F(j(){$(c).3g().8X()});C=$1y.C()}if(c.1e.6t()){q $K=$(c.F.42);c.L.T().C(\'\').1D($K);$K.C(C);c.1R.2E($K)}R{c.1L.bA(C)}}c.1e.79();c.2Y.2u();if(Y.1G){c.1Y.b8()}},1l:j(1l){1l=1l.7N();1l=$.3c(1l);q 4t=1p.3N(\'1y\');4t.3D=1l;1l=4t.fy||4t.fz;if(1g 1l===\'1k\'){E}c.1V.29();q 2N=c.N.2N();1l=1l.Q(/\\n/g,\' \');if(c.1e.6t()){q $K=$(c.F.42);c.L.T().C(\'\').1D($K);$K.C(1l);c.1R.2E($K)}R{q 1u=c.N.1h();q K=1p.5K(1l);if(1u.7i&&1u.9F){q 15=1u.7i(0);15.5z();15.4l(K);15.7Z(K);15.4b(1i);c.N.3M(1u,15)}if(2N.1b>1){$(K).bB(\'<p>\');c.1R.2x(K)}}c.1e.79();c.2Y.2u();c.1Y.fD()},9G:j(C){c.1V.29();q 1u=c.N.1h();q 15=c.N.15(1u);15.5z();q el=1p.3N("1y");el.3D=C;q bC=1p.lA(),K,4H;50((K=el.gE)){4H=bC.bD(K)}15.4l(bC);if(4H){15=15.9H();15.7Z(4H);15.4b(1i);1u.5i();1u.5L(15)}},K:j(K,8d){c.1V.29();if(1g c.1Z!==\'1k\'){c.L.T().2q()}K=K[0]||K;q M=c.N.M();q bE=c.1e.6e(K.1r);if(c.1e.6t()){if(bE){c.L.T().C(K)}R{c.L.T().C($(\'<p>\').C(K))}c.23.5M()}R if(bE&&M){q 44=c.1e.6u();if(44===J){c.1L.bF(K,8d)}R{if(44.V===\'1Z\'){44.$M.4F(K)}R{44.$M.2x(K)}c.L.T().1z(\'p:lB\').1B()}}R{c.1L.bF(K,8d)}c.1e.79();c.1R.2E(K);E K},gD:j(M,$28){q $M=$(M);q 2o;q 3Q=c.1e.3Q(M.3D);if(3Q||c.1e.5m(M)){2o=$M;$28.1z(\'li\').1F(j(){2o.2x(c);2o=$(c)});if(3Q){$M.1B()}}R if(c.1e.7j(M)){$28.1z(\'li\').1F(j(){$M.4F(c);2o=$(c)})}R{q 9I=c.N.bG(M);$M.2x($(\'<li>\').1D(9I));$M.1D($28);2o=$28}c.1H.1B();if(2o){c.1R.2E(2o)}c.2Y.2u()},bA:j(C){q 1H=1p.3N(\'2f\');1H.id=\'G-1L-1H\';1H=c.1L.K(1H);$(1H).4F(C);c.N.2U();c.1R.2x(1H);$(1H).1B()},bF:j(K,8d){q 1u=c.N.1h();q 15=c.N.15(1u);if(8d!==J){15.5z()}15.4l(K);15.4b(J);c.N.3M(1u,15)},9t:j(e,K){c.1V.29();K=K[0]||K;if(c.1e.3Q()){K=(c.1e.9J(K))?K:$(\'<p />\').1D(K);c.L.T().C(K);E K}q 15;q x=e.aN,y=e.dZ;if(1p.gF){q 7k=1p.gF(x,y);q 1u=1p.5h();15=1u.7i(0);15.70(7k.lC,7k.2S);15.4b(1i);15.4l(K)}R if(1p.gG){15=1p.gG(x,y);15.4l(K)}R if(1g 1p.3f.gH!=="1k"){15=1p.3f.gH();15.gI(x,y);q bH=15.lD();bH.gI(x,y);15.lE("lF",bH);15.dB()}E K},lG:j(e,K){c.1L.9t(e,K)},1H:j(){c.1H.1L()}}},1q:j(){E{2X:j(e){if(c.7a){E}q 1f=e.68;q 4G=(1f>=37&&1f<=40);c.1q.3F=e.69||e.5A;c.1q.1M=c.N.1M();c.1q.1v=c.N.1v();c.1q.M=c.N.M();c.1q.1G=c.1e.4o(c.1q.1v,\'1G\');c.1q.2C=c.1e.4o(c.1q.1v,\'2C\');c.1q.3A=c.1e.4o(c.1q.1v,\'3A\');c.1q.2T=c.1e.4o(c.1q.1v,\'2T\');q gJ=c.L.1m(\'1q\',e);if(gJ===J){e.2i();E J}c.4e.2X(e,1f);c.1q.gK(4G,1f);c.1q.gL(e,1f);if(c.1e.6t()&&(1f===c.2z.5c||1f===c.2z.5b||1f===c.2z.4O)){e.2i();c.23.2v(c.F.42);E}c.1q.gM(4G);c.1q.gN(e,1f);if(!c.F.6F&&1f===c.2z.5c){e.2i();q 1u=c.N.1h();q 15=c.N.15(1u);if(!15.6S){15.5z()}E}if(c.F.6F&&1f===c.2z.dJ){c.1q.gO()}if(c.F.6F&&1f===c.2z.dI){c.1q.gP()}if((c.F.V===\'3a\'||c.F.V===\'1y\')&&c.1q.1v&&c.1q.1v.6d===3&&$(c.1q.1M).3b(\'G-in\')){c.1q.gQ()}if(1f===c.2z.aE&&(e.69||e.5f)){e.2i();E c.1q.gR()}if(1f===c.2z.5c&&(e.69||e.5f)){e.2i();E c.1q.gS(e)}if(1f===c.2z.5c&&!e.5f&&!e.69&&!e.5A){E c.1q.gT(e)}if(1f===c.2z.aF||e.5A&&1f===bI||e.5A&&1f===bJ){E c.1q.gU(e,1f)}if(1f===c.2z.5b||1f===c.2z.4O){c.1q.gV()}if(1f===c.2z.4O){q $1E=$(c.1q.M).1E();if(c.1e.5m(c.1q.M)&&$1E.1b!==0&&$1E[0].1r===\'bK\'){$1E.1B();E J}q gW=(c.1q.M&&c.1q.M.1r===\'6s\')?c.1q.M:J;if(gW){q $28=$(c.1q.M).7e(\'3E, ol\').2o();q $7l=$28.1E();if(c.1e.51($28)&&c.1e.5m($28)&&$7l.1b!==0&&($7l[0].1r===\'6f\'||$7l[0].1r===\'6g\')){e.2i();$28.1D($7l.3g());$7l.1B();E J}}if(c.1e.5m(c.1q.M)&&$1E.1b!==0&&$1E[0].1r===\'6P\'){$(c.1q.M).1D($1E.1l());$1E.1B();E J}}if(1f===c.2z.4O&&$(\'#G-1n-2d\').1b!==0){c.1n.1B()}if(1f===c.2z.5b){if(c.2h.6k()){c.4w.gX(e)}q M=c.N.M();if(M&&M.1r===\'6s\'&&c.1e.4h()&&c.1e.7j()){c.3r.7U();e.2i();E}c.1q.gY();c.1q.gZ(e)}if(1f===c.2z.5b||1f===c.2z.4O){c.1q.h0(e)}},gR:j(){c.2j.2v();c.1L.9G(\'&5j;\');E J},gS:j(e){c.2j.2v();E(c.1q.1G)?c.1q.bL(e):c.1L.9G(\'<br>\')},gV:j(){c.1e.9K()},h0:j(e){3C($.1j(j(){c.23.6R=J;c.1q.h7();c.L.T().1z(\'*[3j]\').6a(\'#G-1n-2d, #G-1n-lH\').2O(\'3j\');c.1q.h8(e);c.23.6R=1i},c),1)},gT:j(e){q 6q=c.L.1m(\'lI\',e);if(6q===J){e.2i();E J}if(c.1q.2C&&c.1q.h9(e)===1i){E J}if(c.1q.1G){E c.1q.bL(e)}R if(c.1q.2C||c.1q.3A){E c.1q.ha(e)}R if(c.1q.2T){3C($.1j(j(){c.1q.bM(\'bK\')},c),1)}R if(c.1q.M){3C($.1j(j(){c.1q.bM(\'8N\')},c),1);if(c.1q.M.1r===\'6s\'){q 1v=c.N.1v();q $1M=$(1v).2A(\'li\',c.$T[0]);q $28=$1M.7e(\'3E,ol\',c.$T[0]).2o();if($1M.1b!==0&&c.1e.3Q($1M.C())&&$28.1E().1b===0&&c.1e.3Q($28.1z("li").2o().C())){$28.1z("li").2o().1B();q K=$(c.F.42);$28.2x(K);c.1R.1Z(K);E J}}}R if(!c.1q.M){E c.1q.hb(e)}3C($.1j(j(){q 14=c.N.14();if(14&&c.1e.3Q(14.3D)){q 1M=c.N.M();$(14).1B();c.1R.1Z(1M)}},c),1)},gK:j(4G,1f){if(!4G&&(c.L.77()===\'26\'||c.L.77()===\'4G\')){c.L.83(J);if(c.1q.hc(1f)){c.2j.2v()}}},hc:j(1f){q k=c.2z;q 4J=[k.5b,k.4O,k.5c,k.7H,k.aF,k.dK,k.dL,k.dN,k.dM];E($.3U(1f,4J)===-1)?1i:J},gM:j(4G){if(!4G){E}if((c.L.77()===\'26\'||c.L.77()===\'4G\')){c.L.83(J);E}c.L.83(\'4G\')},gL:j(e,1f){if(c.1q.3F&&1f===90&&!e.5f&&!e.aO&&c.F.2j.1b){e.2i();c.2j.8Z();E}R if(c.1q.3F&&1f===90&&e.5f&&!e.aO&&c.F.7D.1b!==0){e.2i();c.2j.aR();E}R if(!c.1q.3F){if(1f===c.2z.5b||1f===c.2z.4O||(1f===c.2z.5c&&!e.69&&!e.5f)){c.2j.2v()}}},h9:j(e){if(!c.1e.5m(c.1q.2C)){E}q 4t=c.1Y.bb($(c.1q.2C).C());if(4t.3y(/(<br\\s?\\/?>){3}$/i)!==-1){e.2i();q $2o=$(c.1q.2C).6r().2o().2y();$2o.2y().5e(\'br\').1B();$2o.5e(\'br\').1B();$(c.1q.2C).6r().2o().5e(\'br\').1B();$(c.1q.2C).6r().2o().5e(\'2f\').1B();q K=$(c.F.42);$(c.1q.2C).2x(K);c.1R.1Z(K);E 1i}E},gO:j(){q 1K=[c.1q.2C,c.1q.1G,c.1q.3A];31(q i=0;i<1K.1b;i++){if(1K[i]){c.1q.hd(1K[i]);E J}}},gP:j(){q 1K=[c.1q.2C,c.1q.1G,c.1q.3A];31(q i=0;i<1K.1b;i++){if(1K[i]){c.1q.he(1K[i]);E J}}},hd:j(1w){if(!c.1e.5m(1w)){E}q 2o=c.L.T().3g().2o();q $1E=$(c.1q.M).1E();if($1E.1b!==0){E}R if(2o.1b===0&&2o[0]!==1w){c.1R.1Z(2o);E}R{q K=$(c.F.42);$(1w).2x(K);c.1R.1Z(K)}},he:j(1w){if(!c.1e.7j()){E}if(c.L.T().3g().1b>1&&c.L.T().3g().2D()[0]!==1w){E}q K=$(c.F.42);$(1w).4F(K);c.1R.1Z(K)},gU:j(e,1f){if(!c.F.d1){E 1i}if(c.1e.3Q(c.23.1h())&&c.F.8y===J){E 1i}e.2i();c.2j.2v();q K;if(c.1q.1G&&!e.5f){K=(c.F.5X)?1p.5K(7y(c.F.5X+1).4g(\'\\hf\')):1p.5K(\'\\t\');c.1L.K(K)}R if(c.F.8y!==J){K=1p.5K(7y(c.F.8y+1).4g(\'\\hf\'));c.1L.K(K)}R{if(e.5A&&1f===bJ){c.3r.7U()}R if(e.5A&&1f===bI){c.3r.95()}R if(!e.5f){c.3r.95()}R{c.3r.7U()}}E J},gN:j(e,1f){if(c.1q.3F&&1f===65){c.1e.hg()}R if(1f!==c.2z.dO&&!c.1q.3F){c.1e.79()}},bL:j(e){e.2i();q K=1p.5K(\'\\n\');q 1u=c.N.1h();q 15=c.N.15(1u);15.5z();15.4l(K);c.1R.2x(K);E J},hb:j(e){e.2i();q p=1p.3N(\'p\');p.3D=c.F.aD;q 1u=c.N.1h();q 15=c.N.15(1u);15.5z();15.4l(p);c.1R.1Z(p);E J},ha:j(e){E c.1q.bN(e)},lJ:j(e){E c.1q.bN(e,1i)},bN:j(e,hh){e.9k();q hi=1p.3N(\'br\');c.1L.K(hi);if(hh===1i){q hj=1p.3N(\'br\');c.1L.K(hj)}E J},gQ:j(){q $1v=$(c.1q.1v);q K=$(\'<p>\').1D($1v.9L());$1v.3h(K);q 1E=$(K).1E();if(1g(1E[0])!==\'1k\'&&1E[0].1r===\'6b\'){1E.1B()}c.1R.2E(K)},bM:j(1t){q 6v=c.N.M();q hk=6v.3D.Q(/<br\\s?\\/?>/gi,\'\');if(6v.1r===1t&&c.1e.3Q(hk)&&!$(6v).3b(\'G-in\')){q p=1p.3N(\'p\');$(6v).3h(p);c.1R.1Z(p);E J}R if(6v.1r===\'P\'){$(6v).2O(\'22\').2O(\'3j\')}},gY:j(){q $1v=$(c.1q.1v);if($1v.1l().3y(/^\\4s$/g)===0){$1v.1B()}},gZ:j(e){q $1v=$(c.1q.1v);q $1M=$(c.1q.1M);q 3R=$1v.2A(\'3R\',c.$T[0]);if(3R.1b!==0&&$1v.2A(\'li\',c.$T[0])&&$1M.6r(\'li\').1b===1){if(!c.1e.3Q($1v.1l())){E}e.2i();$1v.1B();$1M.1B();c.1R.1Z(3R)}},h7:j(){q bO=j(){q C=$.3c(c.3D).Q(/\\/t\\/n/g,\'\');if(C===\'\'){$(c).1B()}};c.L.T().1z(\'li\').1F(bO);c.L.T().1z(\'3E, ol\').1F(bO)},h8:j(e){q C=$.3c(c.L.T().C());if(!c.1e.3Q(C)){E}e.2i();if(c.F.V===\'14\'||c.F.V===\'1G\'){c.L.T().C(c.1H.C());c.N.2U()}R{c.L.T().C(c.F.42);c.2q.1Z()}E J}}},3l:j(){E{2X:j(e){if(c.7a){E}q 1f=e.68;c.3l.M=c.N.M();c.3l.1v=c.N.1v();c.3l.1M=c.N.1M();q 6q=c.L.1m(\'3l\',e);if(6q===J){e.2i();E J}if(1f===c.2z.5b||1f===c.2z.4O){if(c.1e.6t()){c.2q.1Z();E}if(c.3l.M&&c.3l.M.1r===\'P\'){q hl=$(c.3l.M).1z(\'2B\').1b;q 1l=$(c.3l.M).1l().Q(/\\4s/g,\'\');if(1l===\'\'&&hl!==0){c.1e.4E(c.3l.M,\'2T\')}}if(c.3l.M&&c.3l.M.1r===\'bK\'&&$(c.3l.M).1z(\'2B\').1b===0){c.N.3q();c.1e.4E(c.3l.M,\'p\');c.N.2U()}}if(c.2Y.hm(1f)){c.2Y.2u()}}}},1I:j(){E{3K:j(){c.F.7T=c.F.5t[c.F.1I]},1h:j(1U){E(1g c.F.7T[1U]!==\'1k\')?c.F.7T[1U]:\'\'}}},4w:j(){E{1L:j(){c.2j.2v();c.1L.C(c.4w.hn());q $hr=c.L.T().1z(\'#G-hr-4t-id\');$hr.2O(\'id\');c.L.1m(\'lK\',$hr);E $hr},hn:j(){q C=\'<hr id="G-hr-4t-id" />\';if(!c.2h.6k()&&c.1e.3Q()){C+=\'<p>\'+c.F.42+\'</p>\'}E C},gX:j(e){if(!c.1e.4h()){E}q $M=$(c.N.M());if($M.1b===0||!c.1e.7j($M)){E}q $2y=$M.2y();if($2y&&$2y[0].1r===\'ge\'){e.2i();$2y.1B()}}}},O:j(){E{1h:j(){E $(c.N.3W(\'a\'))},is:j(){q 4c=c.N.4c();q $O=$(c.N.1v()).2A(\'a\',c.L.T()[0]);E($O.1b===0||4c.1b>1)?J:$O},4N:j(e){if(1g e!==\'1k\'&&e.2i){e.2i()}c.2j.2v();q 3O=c.N.3W(\'a\');if(3O.1b===0){E}q $3O=c.O.ho(3O);c.1X.9M();c.L.1m(\'lL\',$3O)},1L:j(O,7S){q $el=c.O.is();if(7S!==1i){O=c.O.hp($el,O);if(O===J){E J}}c.2j.2v();if($el===J){$el=$(\'<a />\');$el=c.O.3M($el,O);$el=$(c.1L.K($el));q $1M=$el.1M();if(c.1e.51($1M)===J){$el.bB(\'<p>\')}if($1M.3b(\'G-4N\')){$1M.3h(j(){E $(c).3g()})}c.1R.2x($el);c.L.1m(\'hq\',$el)}R{$el=c.O.3M($el,O);c.1R.2x($el)}},3M:j($el,O){$el.1l(O.1l);$el.12(\'2e\',O.1x);c.O.1T($el,O.1T);E $el},1T:j($el,1T){E(1T)?$el.12(\'1T\',1T):$el.2O(\'1T\')},2k:j(e){if(1g e!==\'1k\'&&e.2i){e.2i()}c.1X.9M();q $el=c.O.is();c.O.hs($el);q O=c.O.ht($el);O.1x=c.O.bP(O.1x);c.O.hu(O);c.1d.2k();if(c.2h.3G()){$(\'#G-O-1x\').2q()}},hu:j(O){$(\'#G-O-7b\').9w(\'9x\',O.1T);$(\'#G-O-1x\').2J(O.1x);$(\'#G-O-1x-1l\').2J(O.1l)},hs:j($el){c.1d.3K(\'O\',c.1I.1h(($el===J)?\'O-1L\':\'O-3i\'),lM);q $2p=c.1d.9u();$2p.1l(c.1I.1h(($el===J)?\'1L\':\'3q\')).1N(\'26\',$.1j(c.O.1m,c))},1m:j(){q O=c.O.hv();if(O===J){E J}c.1d.41();c.O.1L(O,1i)},bQ:j(1x){E(1g 1x===\'1k\')?\'\':$.3c(1x.Q(/[^\\W\\w\\D\\d+&@#/%?=~hw|!:,.;\\(\\)]/gi,\'\'))},bR:j(1l){E(1g 1l===\'1k\')?\'\':$.3c(1l.Q(/(<([^>]+)>)/gi,\'\'))},bS:j(O){E(O.1l===\'\'&&O.1x!==\'\')?c.O.hx(O.1x.Q(/<|>/g,\'\')):O.1l},hy:j(1x){q 7c=\'((gp--)?[\\\\W\\\\w\\\\D\\\\d]+(-[\\\\W\\\\w\\\\D\\\\d]+)*\\\\.)+[\\\\W\\\\w]{2,}\';q 8e=1O 2l(\'^(8a|9y|5v)://\'+7c,\'i\');q 7d=1O 2l(\'^\'+7c,\'i\');q 9N=1O 2l(\'\\.(C|lN)$\',\'i\');q hz=1O 2l(\'^/\',\'i\');if(1x.3y(8e)===-1&&1x.3y(7d)!==-1){1x=\'8a://\'+1x}if(1x.3y(8e)!==-1||1x.3y(9N)!==-1||1x.3y(hz)!==-1){E 1x}E J},hA:j(1x){E(1x.3y(\'@\')!==-1&&/(8a|9y|5v):\\/\\//i.5N(1x)===J)},3Q:j(O){E(O.1x===\'\'||(O.1l===\'\'&&O.1x===\'\'))},hx:j(1x){E(1x.1b>c.F.7B)?1x.bT(0,c.F.7B)+\'...\':1x},bU:j(O){if(c.O.hA(O.1x)){O.1x=\'bV:\'+O.1x.Q(\'bV:\',\'\')}R if(O.1x.3y(\'#\')!==0){O.1x=c.O.hy(O.1x)}E(c.O.3Q(O)||O.1x===J)?J:O},hv:j(){q O={};O.1x=c.O.bQ($(\'#G-O-1x\').2J());O.1l=c.O.bR($(\'#G-O-1x-1l\').2J());O.1l=c.O.bS(O);O.1T=($(\'#G-O-7b\').9w(\'9x\'))?1i:J;E c.O.bU(O)},hp:j($el,O){O.1x=c.O.bQ(O.1x);O.1l=(1g O.1l===\'1k\'&&c.N.is())?c.N.1l():c.O.bR(O.1l);O.1l=c.O.bS(O);O.1T=($el===J)?O.1T:c.O.bW($el);E c.O.bU(O)},ht:j($el){q O={1x:\'\',1l:(c.N.is())?c.N.1l():\'\',1T:J};if($el!==J){O.1x=$el.12(\'2e\');O.1l=$el.1l();O.1T=c.O.bW($el)}E O},bW:j($el){E(1g $el.12(\'1T\')!==\'1k\'&&$el.12(\'1T\')===\'89\')?1i:J},bP:j(1x){q 2e=2w.lO.2e.Q(\'#\',\'\').Q(/\\/$/i,\'\');E 1x.Q(/^\\/\\#/,\'#\').Q(2e,\'\').Q(\'bV:\',\'\')},ho:j(3O){q $2D;q $3O=$.1F(3O,j(i,s){q $el=$(s);q $bX=$(\'<2f 22="G-4N" />\').1D($el.3g());$el.3h($bX);if(i===0){$2D=$bX}E $el});if(3O.1b===1&&c.N.4h()){c.1R.2x($2D)}E $3O}}},2Y:j(){E{hm:j(1f){E 1f===c.2z.5c||1f===c.2z.aE},hB:j(K){E(K.5P.3n(c.F.4a.7F)||K.5P.3n(c.F.4a.7G)||K.5P.3n(c.F.4a.8K)||K.5P.3n(c.F.4a.1x))},hC:j(i,K){E K.6d===3&&$.3c(K.5P)!==""&&!$(K).1M().is("1G")&&(c.2Y.hB(K))},4Y:j(i,K){q $el=$(K);q 1l=$el.1l();q C=1l;if(C.3n(c.F.4a.7F)||C.3n(c.F.4a.7G)){C=c.2Y.hD(C)}R if(C.3n(c.F.4a.8K)){C=c.2Y.hE(C)}R{C=c.2Y.hF(C)}$el.4F(1l.Q(1l,C)).1B()},2u:j(){if(!c.F.2Y||c.1e.4X(\'1G\')){E}c.L.T().1z(":6a(62,2B,a,1G,.G-4N)").lP().3g().5e($.1j(c.2Y.hC,c)).1F($.1j(c.2Y.4Y,c));q $hG=c.L.T().1z(\'.G-2Y-3v\').1F($.1j(j(i,s){q $el=$(s);$el.2Q(\'G-2Y-3v\');if($el.12(\'22\')===\'\'){$el.2O(\'22\')}if(s.1r===\'8N\'){c.2Y.6u($el,\'ar\')}R if(s.1r===\'6p\'){c.2Y.6u($el,\'1n\')}R if(s.1r===\'A\'){c.L.1m(\'hq\',$el)}E $el},c));3C($.1j(j(){c.23.5M();c.L.1m(\'2Y\',$hG)},c),5B)},6u:j($el,V){q 44=c.1e.6u();if(44===J){E}q $8f=$el;if(V===\'1n\'){$8f=$(\'<2T />\').1D($el)}if(44.V===\'1Z\'){44.$M.4F($8f)}R{44.$M.2x($8f)}if(V===\'1n\'){c.1R.2x($8f)}},hD:j(C){q bY=\'<1y 22="\'+c.F.db+\' G-2Y-3v"><62 22="G-2Y-3v" 2M="g3" 4r="lQ" 3x="\';q bZ=\'" lR="0" lS></62></1y>\';if(C.3n(c.F.4a.7F)){C=C.Q(c.F.4a.7F,bY+\'//6O.dG.8J/lT/$1\'+bZ)}if(C.3n(c.F.4a.7G)){C=C.Q(c.F.4a.7G,bY+\'//lU.dH.8J/ar/$2\'+bZ)}E C},hE:j(C){q 52=C.3n(c.F.4a.8K);if(!52){E C}E C.Q(C,\'<2B 3x="\'+52+\'" 22="G-2Y-3v" />\')},hF:j(C){q 52=C.3n(c.F.4a.1x);if(!52){E C}52=$.lV(52,j(v,k){E $.3U(v,52)===k});q 1b=52.1b;31(q i=0;i<1b;i++){q 2e=52[i],1l=2e;q 9z=(2e.3n(/(5v?|9y):\\/\\//i)!==21)?\'\':\'8a://\';if(1l.1b>c.F.7B){1l=1l.bT(0,c.F.7B)+\'...\'}if(1l.3y(\'%\')===-1){1l=hH(1l)}q c0="\\\\b";if($.3U(2e.cQ(-1),["/","&","="])!==-1){c0=""}q hI=1O 2l(\'(\'+2e.Q(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,"\\\\$&")+c0+\')\',\'g\');C=C.Q(hI,\'<a 2e="\'+9z+$.3c(2e)+\'" 22="G-2Y-3v">\'+$.3c(1l)+\'</a>\')}E C}}},28:j(){E{4M:j(c1){if(c.1e.hJ([\'8w\',\'3R\',\'5p\',\'cV\'])){E}q 1t=(c1===\'7C\')?\'6g\':\'6f\';q $28=$(c.N.1v()).lW(\'.G-in\',\'3E, ol\').2D();c.1V.29();c.2j.2v();if($28.1b!==0&&$28[0].1r===1t&&c.1e.51($28)){c.N.3q();$28.1z(\'3E, ol\').1F(j(){q 1M=$(c).2A(\'li\');$(c).1z(\'li\').1F(j(){$(1M).2x(c)})});$28.1z(\'3E, ol\').1B();$28.1z(\'li\').1F(j(){E $(c).3h(j(){E $(\'<p />\').1D($(c).3g())})});$28.3h(j(){E $(c).3g()});c.N.2U();E}c.N.3q();1p.4T(\'1L\'+c1);c.N.2U();q $8g=c.28.1h();if(!$8g){if(!c.N.M()){1p.4T(\'gu\',J,\'p\')}E}$8g.1z(\'2f\').3h(j(){E $(c).3g()});$8g.1z(c.F.60.4g(\',\')).1F(j(){$(c).2O(\'3j\')});q $7m=$8g.1M();if(c.1e.51($7m)&&$7m[0].1r!==\'6s\'&&c.1e.9J($7m)){c.N.3q();$7m.3h($7m.3g());c.N.2U()}},1h:j(){q 1v=c.N.1v();q $28=$(1v).2A(\'3E, ol\',c.L.T()[0]);E($28.1b===0)?J:$28}}},1H:j(){E{1h:j(3X){3X=(1g 3X===\'1k\')?1:3X;q 1H=1p.3N(\'2f\');1H.id=\'N-1H-\'+3X;1H.b1=\'G-N-1H\';1H.3D=c.F.aD;E 1H},C:j(3X){E c.1e.8b(c.1H.1h(3X))},1z:j(3X){3X=(1g 3X===\'1k\')?1:3X;E c.L.T().1z(\'2f#N-1H-\'+3X)},1L:j(){q 1u=c.N.1h();q 15=c.N.15(1u);c.1H.4l(15,c.1H.1h(1),1i);if(15&&15.6S===J){c.1H.4l(15,c.1H.1h(2),J)}},1B:j(){c.L.T().1z(\'.G-N-1H\').1F(c.1H.hK)},4l:j(15,K,4b){q 1M=c.N.1M();if(15===21||$(1M).2A(\'.G-in\').1b===0){E}15=15.9H();6U{15.4b(4b);15.4l(K)}6V(e){c.2q.1Z()}},hK:j(i,el){q $el=$(el);q 1l=$el.1l().Q(/\\4s/g,\'\');E(1l===\'\')?$el.1B():$el.3h(j(){E $(c).3g()})}}},1d:j(){E{4K:{},eI:j(){c.F.1d={\'1n-3i\':76()+\'<1y 22="G-1d-4f G-lX" Y-1J="hL">\'+\'<1y id="G-1n-go" 22="G-1d-4f-lY">\'+\'</1y>\'+\'<1y 22="G-1d-4f-dC">\'+\'<2L>\'+\'<2n>\'+c.1I.1h(\'1J\')+\'</2n>\'+\'<3s V="1l" id="G-1n-1J" />\'+\'</2L>\'+\'<2L>\'+\'<2n>\'+c.1I.1h(\'4B\')+\'</2n>\'+\'<3s V="1l" id="G-1n-4B" 3L-2n="\'+c.1I.1h(\'4B\')+\'" />\'+\'</2L>\'+\'<2L>\'+\'<2n>\'+c.1I.1h(\'O\')+\'</2n>\'+\'<3s V="1l" id="G-1n-O" 3L-2n="\'+c.1I.1h(\'O\')+\'" />\'+\'</2L>\'+\'<2L>\'+\'<2n 22="9O"><3s V="9O" id="G-1n-O-7b" 3L-2n="\'+c.1I.1h(\'O-in-1O-4f\')+\'"> \'+c.1I.1h(\'O-in-1O-4f\')+\'</2n>\'+\'</2L>\'+\'<2L>\'+\'<1c id="G-1d-1c-6w">8G</1c>\'+\'<1c id="G-1d-1c-6K">ay</1c>\'+\'<1c id="G-1d-1c-5Z" 22="G-1d-1c-2S">dk</1c>\'+\'</2L>\'+\'</1y>\'+\'</1y>\',\'1n\':76()+\'<1y 22="G-1d-4f" Y-1J="hM">\'+\'<2L>\'+\'<1y id="G-1d-1n-3V"></1y>\'+\'</2L>\'+\'</1y>\',\'1Q\':76()+\'<1y 22="G-1d-4f" Y-1J="hM">\'+\'<2L>\'+\'<2n>\'+c.1I.1h(\'6M\')+\' <2f 22="lZ">(\'+c.1I.1h(\'aA\')+\')</2f></2n>\'+\'<3s V="1l" id="G-6M" 3L-2n="\'+c.1I.1h(\'6M\')+\'" /><br><br>\'+\'</2L>\'+\'<2L>\'+\'<1y id="G-1d-1Q-1s"></1y>\'+\'</2L>\'+\'</1y>\',\'O\':76()+\'<1y 22="G-1d-4f" Y-1J="hL">\'+\'<2L>\'+\'<2n>hN</2n>\'+\'<3s V="1x" id="G-O-1x" 3L-2n="hN" />\'+\'</2L>\'+\'<2L>\'+\'<2n>\'+c.1I.1h(\'1l\')+\'</2n>\'+\'<3s V="1l" id="G-O-1x-1l" 3L-2n="\'+c.1I.1h(\'1l\')+\'" />\'+\'</2L>\'+\'<2L>\'+\'<2n 22="9O"><3s V="9O" id="G-O-7b"> \'+c.1I.1h(\'O-in-1O-4f\')+\'</2n>\'+\'</2L>\'+\'<2L>\'+\'<1c id="G-1d-1c-6w">8G</1c>\'+\'<1c id="G-1d-1c-6K">ay</1c>\'+\'</2L>\'+\'</1y>\'};$.5w(c.F,c.F.1d)},aX:j(1U,1m){c.1d.4K[1U]=1m},m0:j(1U,hO){c.F.1d[1U]=hO},hP:j(1U){E c.F.1d[1U]},m1:j(){E c.$5Q},9u:j(){E c.$5Q.1z(\'#G-1d-1c-6w\')},hQ:j(){E c.$5Q.1z(\'#G-1d-1c-6K\')},gl:j(){E c.$5Q.1z(\'#G-1d-1c-5Z\')},3K:j(5R,1J,2M){if(1g c.$43!==\'1k\'&&c.$43.3b(\'7n\')){E}c.1d.5R=5R;c.1d.2M=2M;c.1d.2a();c.1d.6m();c.1d.hR(1J);c.1d.hS();c.1d.hT();if(1g c.1d.4K[5R]!==\'1k\'){c.1d.4K[5R].55(c)}},2k:j(){if(!c.2h.3G()){1p.gf.5F()}c.N.3q();c.1d.hU();if(c.2h.5y()){c.1d.2M=\'96%\'}3C($.1j(c.1d.c2,c),0);$(2G).1N(\'9P.G-1d\',$.1j(c.1d.c2,c));c.$6j.4n(\'c3\',{4u:0.25});c.$43.2m(\'7n\').2k();c.$1d.4n(\'c3\',{5n:\'hV-hW(0.c4, 0.hX, 0.hY, 1.hZ)\'},$.1j(j(){c.1e.9K();c.1e.bj();c.L.1m(\'m2\',c.1d.5R,c.$1d);$(1p).2b(\'m3.1d\');q $87=c.$1d.1z(\'3s[V=1l],3s[V=1x],3s[V=m4]\');$87.1N(\'1q.G-1d\',$.1j(c.1d.i0,c))},c))},c2:j(){q c5=$(2G).4r();q 7o=$(2G).2M();q 9Q=(1g c.1d.2M===\'9Q\');if(!9Q&&c.1d.2M.3n(/%$/)){c.$1d.2c({\'2M\':c.1d.2M,\'7Q-c6\':\'c7\'})}R if(bo(c.1d.2M)>7o){c.$1d.2c({\'2M\':\'96%\',\'7Q-c6\':\'2%\'})}R{if(9Q){c.1d.2M+=\'4C\'}c.$1d.2c({\'2M\':c.1d.2M,\'7Q-c6\':\'c7\'})}q 4r=c.$1d.i1();q 2H=(c5/2-4r/2)+\'4C\';if(c.2h.5y()){2H=\'2%\'}R if(4r>c5){2H=\'c7\'}c.$1d.2c(\'7Q-2H\',2H)},hU:j(){c.1d.8h=c.$1d.1z(\'.G-1d-4f\');if(c.1d.8h.1b<2){E}c.1d.$c8=$(\'<1y id="G-1d-i2" />\');$.1F(c.1d.8h,$.1j(j(i,s){q a=$(\'<a 2e="#" 4k="\'+i+\'" />\').1l($(s).12(\'Y-1J\'));a.1N(\'26\',$.1j(c.1d.i3,c));if(i===0){a.2m(\'3u\')}c.1d.$c8.1D(a)},c));c.$5Q.6X(c.1d.$c8)},i3:j(e){e.2i();q $el=$(e.1T);q 5C=$el.12(\'4k\');c.1d.8h.29();c.1d.8h.eq(5C).2k();$(\'#G-1d-i2\').1z(\'a\').2Q(\'3u\');$el.2m(\'3u\');E J},hR:j(1J){c.$8i.C(1J)},hT:j(){c.$5Q.C(c.1d.hP(c.1d.5R));c.1d.hQ().1N(\'4p\',$.1j(c.1d.41,c))},hS:j(){if(1g $.fn.i4===\'1k\'){E}c.$1d.i4({m5:c.$8i});c.$8i.2c(\'m6\',\'m7\')},i0:j(e){if(e.68!==13){E}e.2i();c.1d.9u().26()},2a:j(){c.1d.i5();c.$43=$(\'<1y id="G-1d-2d"/>\').29();c.$1d=$(\'<1y id="G-1d" 67="m8" />\');c.$8i=$(\'<1y id="G-1d-aB" />\');c.$8j=$(\'<1c V="1c" id="G-1d-41" 3L-2n="\'+c.1I.1h(\'41\')+\'" />\').C(\'&m9;\');c.$5Q=$(\'<1y id="G-1d-3f" />\');c.$1d.1D(c.$8i);c.$1d.1D(c.$5Q);c.$1d.1D(c.$8j);c.$43.1D(c.$1d);c.$43.aL(1p.3f)},i5:j(){c.$6j=$(\'<1y id="G-1d-ma">\').29();$(\'3f\').6X(c.$6j)},6m:j(){c.$8j.1N(\'4p.G-1d\',$.1j(c.1d.41,c));$(1p).1N(\'3l.G-1d\',$.1j(c.1d.86,c));c.L.T().1N(\'3l.G-1d\',$.1j(c.1d.86,c));c.$43.1N(\'26.G-1d\',$.1j(c.1d.41,c))},9R:j(){c.$8j.2b(\'4p.G-1d\');$(1p).2b(\'3l.G-1d\');c.L.T().2b(\'3l.G-1d\');c.$43.2b(\'26§.G-1d\');$(2G).2b(\'9P.G-1d\')},86:j(e){if(e.68!==c.2z.7H){E}c.1d.41(J)},41:j(e){if(e){if($(e.1T).12(\'id\')!==\'G-1d-1c-6K\'&&e.1T!==c.$8j[0]&&e.1T!==c.$43[0]){E}e.2i()}if(!c.$43){E}c.N.2U();c.1d.9R();c.1e.85();c.1e.9B();c.$6j.4n(\'7L\',{4u:0.4},$.1j(j(){c.$6j.1B()},c));c.$1d.4n(\'7L\',{4u:0.3,5n:\'hV-hW(0.c4, 0.hX, 0.hY, 1.c4)\'},$.1j(j(){if(1g c.$43!==\'1k\'){c.$43.1B();c.$43=1k}$(1p.3f).2c(\'c9\',c.1d.mb);c.L.1m(\'mc\',c.1d.5R)},c))}}},1X:j(){E{3K:j(){if(1g c.F.fH!==\'1k\'){E}c.1X.3O();c.1X.4W()},md:j($el,$1v){if(1g $1v===\'1k\'){$1v=$(c.N.1v())}E $1v.is($el)||$1v.7e($el).1b>0},1o:j(){c.1X.3I();c.1X.7E()},3I:j(e,2s){q 1v=c.N.1v();q 1M=c.N.1M();if(e!==J){c.1c.7K()}R{c.1c.7K(2s)}if(e===J&&2s!==\'C\'){if($.3U(2s,c.F.dh)!==-1){c.1c.me(2s)}E}if(!c.1e.51(1v)){E}if(c.1e.bd()||c.1e.4X([\'8w\',\'1G\',\'2C\',\'li\'])){c.1c.aP(\'6H\')}R{c.1c.5I(\'6H\')}$.1F(c.F.di,$.1j(j(1f,1C){q 9S=$(1M).2A(1f,c.$T[0]);q ca=$(1v).2A(1f,c.$T[0]);if(9S.1b!==0&&!c.1e.51(9S)){E}if(!c.1e.51(ca)){E}if(9S.1b!==0||ca.2A(1f,c.$T[0]).1b!==0){c.1c.aZ(1C)}},c))},7E:j(){q $1v=$(c.N.1v());q cb=c.1e.51($1v);$.1F(c.F.1X.7E,$.1j(j(1f,1C){q 1X=1C.1X,1w=1X.1w,$2F=1C.2F,cc=1g 1X.in!==\'1k\'?1X.in:J,cd=1g 1X.6Y!==\'1k\'?1X.6Y:J;if($1v.2A(1w).g1()>0&&cb){c.1X.ce($2F,cc,cd)}R{c.1X.ce($2F,cd,cc)}},c))},ce:j($2F,8k,9T){if(9T&&1g 9T.12!==\'1k\'){c.1X.cf($2F,9T.12,1i)}if(1g 8k.12!==\'1k\'){c.1X.cf($2F,8k.12)}if(1g 8k.1J!==\'1k\'){$2F.1z(\'2f\').1l(8k.1J)}},cf:j($2F,i6,cg){$.1F(i6,j(1f,1C){if(1f===\'22\'){if(!cg){$2F.2m(1C)}R{$2F.2Q(1C)}}R{if(!cg){$2F.12(1f,1C)}R{$2F.2O(1f)}}})},aY:j($2F,2s,2t){if(1g 2t.1X==="1k"){E}2t.2F=$2F;c.F.1X.7E.3k(2t)},4W:j(){c.L.T().1z(\'2B\').1F($.1j(j(i,2B){q $2B=$(2B);$2B.2A(\'a\',c.$T[0]).1N(\'26\',j(e){e.2i()});c.1n.gh($2B)},c))},3O:j(){if(!c.F.d9){E}c.L.T().1z(\'a\').1N(\'5E.G.\'+c.1S+\' 26.G.\'+c.1S,$.1j(c.1X.i7,c));c.L.T().1N(\'5E.G.\'+c.1S+\' 26.G.\'+c.1S,$.1j(c.1X.ch,c));$(1p).1N(\'5E.G.\'+c.1S+\' 26.G.\'+c.1S,$.1j(c.1X.ch,c))},i8:j($O){E $O.2S()},i7:j(e){q $el=$(e.1T);if($el[0].1r===\'6p\'){E}if($el[0].1r!==\'A\'){$el=$el.2A(\'a\',c.$T[0])}if($el[0].1r!==\'A\'){E}q $O=$el;q 7k=c.1X.i8($O);q 4m=$(\'<2f 22="G-O-4m"></2f>\');q 2e=$O.12(\'2e\');if(2e===1k){2e=\'\'}if(2e.1b>24){2e=2e.bT(0,24)+\'...\'}q i9=$(\'<a 2e="\'+$O.12(\'2e\')+\'" 1T="89" />\').C(2e).2m(\'G-O-4m-6w\');q ib=$(\'<a 2e="#" />\').C(c.1I.1h(\'3i\')).1N(\'26\',$.1j(c.O.2k,c)).2m(\'G-O-4m-6w\');q ic=$(\'<a 2e="#" />\').C(c.1I.1h(\'4N\')).1N(\'26\',$.1j(c.O.4N,c)).2m(\'G-O-4m-6w\');4m.1D(i9).1D(\' | \').1D(ib).1D(\' | \').1D(ic);4m.2c({2H:(7k.2H+bo($O.2c(\'4w-4r\'),10))+\'4C\',3m:7k.3m+\'4C\'});$(\'.G-O-4m\').1B();$(\'3f\').1D(4m)},9M:j(){$(\'.G-O-4m\').1B()},ch:j(e){e=e.88||e;q 1T=e.1T;q $1M=$(1T).2A(\'a\',c.$T[0]);if($1M.1b!==0&&$1M[0].1r===\'A\'&&1T.1r!==\'A\'){E}R if((1T.1r===\'A\'&&c.1e.51(1T))||$(1T).3b(\'G-O-4m-6w\')){E}c.1X.9M()}}},2S:j(){E{1h:j(K){q 6x=c.2S.9L(K);if(6x===J){E 0}q 1y=1p.3N(\'1y\');1y.bD(6x.ih());1y.3D=1y.3D.Q(/<2B(.*?[^>])>$/gi,\'i\');q 1l=$.3c($(1y).1l()).Q(/[\\t\\n\\r\\n]/g,\'\').Q(/\\4s/g,\'\');E 1l.1b},9L:j(K){q 1u=c.N.1h();q 15=c.N.15(1u);if(15===21&&1g K===\'1k\'){E J}K=(1g K===\'1k\')?c.$T:K;if(K===J){E J}K=K[0]||K;q 6x=15.9H();6x.72(K);6x.9b(15.ci,15.ii);E 6x},2v:j(1Z,2E){2E=(1g 2E===\'1k\')?1Z:2E;if(!c.2q.is()){c.2q.1Z()}q 1u=c.N.1h();q 15=c.N.15(1u);q K,2S=0;q ij=1p.mf(c.$T[0],mg.mh,21,21);50((K=ij.cj())!==21){2S+=K.5P.1b;if(2S>1Z){15.70(K,K.5P.1b+1Z-2S);1Z=mi}if(2S>=2E){15.9b(K,K.5P.1b+2E-2S);ik}}15.4b(J);c.N.3M(1u,15)}}},3e:j(){E{3K:j(C){if(c.F.3e===J||c.F.V===\'14\'||c.F.V===\'1G\'){E C}if(C===\'\'||C===\'<p></p>\'){E c.F.42}C=C+"\\n";c.3e.ck=[];c.3e.z=0;C=C.Q(/(<br\\s?\\/?>){1,}\\n?<\\/2C>/gi,\'</2C>\');C=C.Q(/<\\/1G>/gi,"</1G>\\n\\n");C=c.3e.il(C);C=c.3e.im(C);C=c.3e.io(C);C=c.3e.ip(C);C=C.Q(1O 2l(\'<br\\\\s?/?>\\n?<(\'+c.F.aC.4g(\'|\')+\')(.*?[^>])>\',\'gi\'),\'<p><br /></p>\\n<$1$2>\');E $.3c(C)},il:j(C){q $1y=$(\'<1y />\').1D(C);$1y.1z(\'2C p\').3h(j(){E $(c).1D(\'<br />\').3g()});C=$1y.C();$1y.1z(c.F.aC.4g(\', \')).1F($.1j(j(i,s){c.3e.z++;c.3e.ck[c.3e.z]=s.iq;C=C.Q(s.iq,\'\\n{Q\'+c.3e.z+\'}\\n\')},c));E C},ip:j(C){$.1F(c.3e.ck,j(i,s){s=(1g s!==\'1k\')?s.Q(/\\$/g,\'&#36;\'):s;C=C.Q(\'{Q\'+i+\'}\',s)});E C},im:j(C){C=C.Q(/\\r\\n/g,"9U");C=C.Q(/\\n/g,"9U");C=C.Q(/\\r/g,"9U");q 8e=/\\s+/g;C=C.Q(8e," ");C=$.3c(C);q 7d=/mj/gi;C=C.Q(7d,"</p><p>");q 9N=/9U/gi;C=C.Q(9N,"<br>");C=\'<p>\'+C+\'</p>\';C=C.Q("<p></p>","");C=C.Q("\\r\\n\\r\\n","");C=C.Q(/<\\/p><p>/g,"</p>\\r\\n\\r\\n<p>");C=C.Q(1O 2l("<br\\\\s?/?></p>","g"),"</p>");C=C.Q(1O 2l("<p><br\\\\s?/?>","g"),"<p>");C=C.Q(1O 2l("<p><br\\\\s?/?>","g"),"<p>");C=C.Q(1O 2l("<br\\\\s?/?></p>","g"),"</p>");C=C.Q(/<p>&5j;<\\/p>/gi,"");C=C.Q(/<p>\\s?<br>&5j;<\\/p>/gi,\'\');C=C.Q(/<p>\\s?<br>/gi,\'<p>\');E C},io:j(C){C=C.Q(/<p>(.*?){Q(.*?)\\}\\s?<\\/p>/gi,\'{Q$2}\');C=C.Q(1O 2l(\'</2C></p>\',\'gi\'),\'</2C>\');C=C.Q(1O 2l(\'<p></2C>\',\'gi\'),\'</2C>\');C=C.Q(1O 2l(\'<p><2C>\',\'gi\'),\'<2C>\');C=C.Q(1O 2l(\'<2C></p>\',\'gi\'),\'<2C>\');C=C.Q(1O 2l(\'<p><p \',\'gi\'),\'<p \');C=C.Q(1O 2l(\'<p><p>\',\'gi\'),\'<p>\');C=C.Q(1O 2l(\'</p></p>\',\'gi\'),\'</p>\');C=C.Q(1O 2l(\'<p>\\\\s?</p>\',\'gi\'),\'\');C=C.Q(1O 2l("\\n</p>",\'gi\'),\'</p>\');C=C.Q(1O 2l(\'<p>\\t?\\t?\\n?<p>\',\'gi\'),\'<p>\');C=C.Q(1O 2l(\'<p>\\t*</p>\',\'gi\'),\'\');E C}}},47:j(){E{2X:j(e){c.7a=1i;q 1G=(c.F.V===\'1G\'||c.1e.4X(\'1G\'));if(!c.47.1G&&c.F.aq&&c.F.48&&c.47.ir(e)){if(c.2h.5G()){3C($.1j(c.47.cl,c),5B)}E}c.1e.9K();c.N.3q();c.47.it(1G);$(2G).1N(\'6i.G-iu\',$.1j(j(){$(2G).3T(c.mk)},c));3C($.1j(j(){q C=c.47.iv(1G);c.2j.2v();c.N.2U();c.1e.9B();q Y=c.1Y.b6(C);C=c.1Y.b4(C,Y);q 3B=c.L.1m(\'47\',C);C=(1g 3B===\'1k\')?C:3B;c.47.1L(C,Y);c.7a=J;if(1G){c.1Y.b8()}$(2G).2b(\'6i.G-iu\')},c),1)},iv:j(1G){q C=(1G)?c.$5S.2J():c.$5S.C();c.$5S.1B();E C},it:j(1G){q 2c={2R:\'5k\',2M:0,2H:0,3m:\'-ml\'};c.$5S=(1G)?$(\'<3a>\').2J(\'\').2c(2c):$(\'<1y>\').C(\'\').12(\'aT\',\'1i\').2c(2c);c.47.iw();c.$5S[0].2q()},iw:j(){if(c.2h.5G()){c.L.2d().1D(c.$5S)}R{q $cm=$(\'.1d-3f:9V\');if($cm.1b>0){$cm.1D(c.$5S)}R{$(\'3f\').1D(c.$5S)}}},ir:j(e){e=e.88||e;q 6y=e.mm;if(c.2h.5G()){E 1i}if(c.2h.6k()){E J}q cn=6y.cn;if(cn.4Q(\'ix.mn\')!==-1){e.2i();E J}if(!6y.7f||!6y.7f.1b){E}q 1Q=6y.7f[0].mo();if(1Q===21){E J}q co=1O mp();co.mq(1Q);co.iy=$.1j(c.47.iz,c);E 1i},cl:j(){q iA=c.$T.1z(\'2B\');$.1F(iA,$.1j(j(i,s){if(s.3x.3y(/^Y\\:1n/i)===-1){E}q 2V=!!2G.4Z?1O 4Z():21;if(!2G.4Z){E}c.2j.2v();c.1s.3H=1i;c.1s.V=\'1n\';c.1s.1x=c.F.48;c.1s.1m=$.1j(j(Y){if(c.2h.5G()){$(s).bB($(\'<2T />\'))}R{q $1M=$(s).1M();c.1e.4E($1M,\'2T\')}s.3x=Y.mr;c.L.1m(\'48\',$(s),Y)},c);q 9W=c.1e.cp(s.3x);2V.1D(\'6y\',1);2V.1D(c.F.8A,9W);c.2K.2k();c.1s.4D(2V,J);c.23.5M()},c))},iz:j(e){q 2V=!!2G.4Z?1O 4Z():21;if(!2G.4Z){E}c.2j.2v();c.1s.3H=1i;c.1s.V=\'1n\';c.1s.1x=c.F.48;c.1s.1m=c.1n.1L;q 9W=c.1e.cp(e.1T.9E);2V.1D(\'6y\',1);2V.1D(c.F.8A,9W);c.2K.2k();c.1s.4D(2V,e)},1L:j(C,Y){if(Y.1G){c.1L.9G(C)}R if(Y.1l){c.1L.1l(C)}R{c.1L.C(C,Y)}if(c.2h.6k()&&c.F.aq){3C($.1j(c.47.cl,c),5B)}}}},1V:j(){E{5I:j(){3C($.1j(j(){E(c.1V.iB())?c.1V.2k():c.1V.29()},c),5)},2k:j(){c.L.T().2m(\'G-1V\')},3M:j(1l){c.F.1V=1l;c.L.T().12(\'1V\',1l)},29:j(){c.L.T().2Q(\'G-1V\')},is:j(){E c.L.T().3b(\'G-1V\')},2X:j(){if(!c.1V.4P()){E}if(!c.1e.iC()){c.1e.iD()}c.1V.2a();c.1V.iE();c.1V.5I();c.1V.6m()},4P:j(){E(c.F.1V)?c.L.1w().12(\'1V\',c.F.1V):c.1V.iF()},6m:j(){c.L.T().1N(\'1q.G-1V.\'+c.1S,$.1j(c.1V.5I,c))},9R:j(){c.L.T().2b(\'.G-1V.\'+c.1S)},2a:j(){c.L.T().12(\'1V\',c.L.1w().12(\'1V\'))},iE:j(){q $3j=$(\'<3j />\');$3j.2m(\'G-1V-3j-1t\');$3j.C(\'#\'+c.L.id()+\'.G-1V::2x \'+c.1V.iG());$(\'eZ\').1D($3j)},iG:j(){E\'{ 2H: \'+c.L.T().2c(\'9X-2H\')+\'; 3m: \'+c.L.T().2c(\'9X-3m\')+\'; }\'},iB:j(){q C=$.3c(c.L.T().C()).Q(/[\\t\\n]/g,\'\');q iH=[\'\',\'<p>​</p>\',\'<p>​<br></p>\'];E($.3U(C,iH)!==-1)},iF:j(){E(1g c.L.1w().12(\'1V\')!==\'1k\'&&c.L.1w().12(\'1V\')!==\'\')},5d:j(){c.L.T().2O(\'1V\');c.1V.29();c.1V.9R();$(\'.G-1V-3j-1t\').1B()}}},2K:j(){E{$2d:21,$8l:21,1T:1p.3f,2k:j(){if(!c.2K.is()){c.2K.2a();c.2K.$2d.4n(\'c3\')}R{c.2K.$2d.2k()}},29:j(){if(c.2K.is()){c.2K.$2d.4n(\'7L\',{4u:0.35},$.1j(c.2K.5d,c))}},3M:j(1C){c.2K.2k();c.2K.$8l.2c(\'2M\',1C+\'%\')},is:j(){E(c.2K.$2d===21)?J:1i},2a:j(){c.2K.$8l=$(\'<2f />\');c.2K.$2d=$(\'<1y id="G-2K" />\');c.2K.$2d.1D(c.2K.$8l);$(c.2K.1T).1D(c.2K.$2d)},5d:j(){if(c.2K.is()){c.2K.$2d.1B()}c.2K.$2d=21;c.2K.$8l=21}}},N:j(){E{1h:j(){if(2G.5h){E 2G.5h()}R if(1p.N&&1p.N.V!=="ms"){E 1p.N}E 21},15:j(1u){if(1g 1u===\'1k\'){1u=c.N.1h()}if(1u.7i&&1u.9F){E 1u.7i(0)}E 21},is:j(){E(c.N.4h())?J:1i},cb:j(){q 15=c.N.15();if(15!==21){q el=15.cq.6z;if($(el).3b(\'G-in\')||$(el).7e(\'.G-in\').1b!==0){E 1i}}E J},4h:j(){q 1u=c.N.1h();E(1u===21)?J:1u.4h},3M:j(1u,15){if(15===21){E}1u.5i();1u.5L(15)},1v:j(){q 1u=c.N.1h();E(1u===21)?J:1u.mt},1M:j(){q 1v=c.N.1v();E(1v===21)?J:1v.6z},M:j(K){K=K||c.N.1v();50(K){if(c.1e.6e(K.1r)){E($(K).3b(\'G-in\'))?J:K}K=K.6z}E J},14:j(K){K=K||c.N.1v();50(K){if(c.1e.7Y(K.1r)){E($(K).3b(\'G-in\'))?J:K}K=K.6z}E J},1w:j(K){if(!K){K=c.N.1v()}50(K){if(K.6d===1){if($(K).3b(\'G-in\')){E J}E K}K=K.6z}E J},2y:j(){q 1v=c.N.1v();E(1v===21)?J:c.N.1v().mu},1E:j(){q 1v=c.N.1v();E(1v===21)?J:c.N.1v().cr},2N:j(1t){q 2N=[];q 4c=c.N.4c(1t);$.1F(4c,$.1j(j(i,K){if(c.1e.9J(K)){2N.3k(K)}},c));q M=c.N.M();if(2N.1b===0&&M===J){E[]}R if(2N.1b===0&&M!==J){E[M]}R{E 2N}},3W:j(1t){q 3W=[];q 4c=c.N.4c(1t);$.1F(4c,$.1j(j(i,K){if(c.1e.8M(K)){3W.3k(K)}},c));q 14=c.N.14();if(3W.1b===0&&14===J){E[]}R if(3W.1b===0&&14!==J){E[14]}R{E 3W}},4c:j(1t){q 5e=(1g 1t===\'1k\')?[]:(($.8c(1t))?1t:[1t]);q 1u=c.N.1h();q 15=c.N.15(1u);if(c.1e.4h()){E[c.N.1v()]}R{q K=15.cq;q cs=15.ci;if(K===cs){E[K]}q 4c=[];50(K&&K!==cs){4c.3k(K=c.N.cj(K))}K=15.cq;50(K&&K!==15.mv){4c.mw(K);K=K.6z}q 9Y=[];$.1F(4c,j(i,s){q 1r=(s.6d!==1)?J:s.1r.3J();if($(s).3b(\'G-3Z-1t, G-N-1H\')){E}R if(1r&&5e.1b!==0&&$.3U(1r,5e)===-1){E}R{9Y.3k(s)}});E(9Y.1b===0)?[]:9Y}},cj:j(K){if(K.mx()){E K.gE}R{50(K&&!K.cr){K=K.6z}if(!K){E 21}E K.cr}},3q:j(){c.1H.1L();c.iI=c.L.T().C()},2U:j(81){q 4U=c.1H.1z(1);q 5J=c.1H.1z(2);if(c.2h.6k()){c.L.T().2q()}if(4U.1b!==0&&5J.1b!==0){c.1R.2v(4U,5J)}R if(4U.1b!==0){c.1R.1Z(4U)}R{c.L.T().2q()}if(81!==J){c.1H.1B();c.iI=J}},K:j(K){$(K).6X(c.1H.1h(1));$(K).1D(c.1H.1h(2));c.N.2U()},eO:j(){c.L.T().2q();q 1u=c.N.1h();q 15=c.N.15(1u);15.72(c.L.T()[0]);c.N.3M(1u,15)},1B:j(){c.N.1h().5i()},Q:j(C){c.1L.C(C)},1l:j(){E c.N.1h().7N()},C:j(){q C=\'\';q 1u=c.N.1h();if(1u.9F){q 8D=1p.3N(\'1y\');q 2g=1u.9F;31(q i=0;i<2g;++i){8D.bD(1u.7i(i).ih())}C=c.1Y.b3(8D.3D)}E C},bG:j(K){q 1u=c.N.1h();q 15=c.N.15(1u);q 9Z=15.9H();9Z.72(K);9Z.70(15.ci,15.ii);E 9Z.my()},81:j(){c.1H.1B()},1H:j(3X){E c.1H.1h(3X)},mz:j(3X){E c.1H.C(3X)}}},4e:j(){E{iJ:{8:"mA",9:"4f",10:"E",13:"E",16:"5q",17:"3F",18:"9v",19:"mB",20:"mC",27:"mD",32:"4V",33:"mE",34:"mF",35:"2E",36:"mG",37:"3m",38:"mH",39:"a0",40:"mI",45:"1L",46:"4x",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",5B:"4",mJ:"5",mK:"6",mL:"7",mM:"8",hZ:"9",mN:"*",mO:"+",mP:"-",mQ:".",mR:"/",mS:"f1",mT:"f2",mU:"f3",mV:"f4",mW:"f5",mX:"f6",mY:"f7",mZ:"f8",n0:"f9",n1:"n2",n3:"n4",n5:"n6",n7:"n8",n9:"6i",na:"-",nb:";",nc:"=",nd:",",ne:"-",nf:".",ng:"/",nh:"`",bJ:"[",ni:"\\\\",bI:"]",nj:"\'"},ct:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"hw","=":"+",";":": ","\'":"\\"",",":"<",".":">","/":"?","\\\\":"|"},2X:j(e,1f){if(c.F.4e===J){if((e.69||e.5A)&&(1f===66||1f===73)){e.2i()}E J}R{$.1F(c.F.4e,$.1j(j(3P,2I){c.4e.2a(e,3P,2I)},c))}},2a:j(e,3P,2I){q 4Y=$.1j(j(){c.4e.iK(2I)},c);q 4J=3P.4d(\',\');q 2g=4J.1b;31(q i=0;i<2g;i++){if(1g 4J[i]===\'ac\'){c.4e.4Y(e,$.3c(4J[i]),4Y)}}},iK:j(2I){q 1A;if(2I.1A.3y(/\\./)!==\'-1\'){1A=2I.1A.4d(\'.\');if(1g c[1A[0]]!==\'1k\'){c[1A[0]][1A[1]].5U(c,2I.5s)}}R{c[2I.1A].5U(c,2I.5s)}},4Y:j(e,4J,iL){4J=4J.3J().4d(" ");q a1=c.4e.iJ[e.2z];q 8m=76.nk(e.68).3J();q 7p="",7q={};$.1F(["9v","3F","5r","5q"],j(5C,a2){if(e[a2+\'nl\']&&a1!==a2){7p+=a2+\'+\'}});if(a1){7q[7p+a1]=1i}if(8m){7q[7p+8m]=1i;7q[7p+c.4e.ct[8m]]=1i;if(7p==="5q+"){7q[c.4e.ct[8m]]=1i}}q 2g=4J.1b;31(q i=0;i<2g;i++){if(7q[4J[i]]){e.2i();E iL.5U(c,cR)}}}}},3Y:j(){E{Y:[],5D:j(Y){Y.5o=1i;Y.1x=iM(c.O.bP(Y.1x));c.3Y.Y[Y.1x]=Y},5o:j(1x,5o){c.3Y.Y[iM(1x)].5o=5o},1X:j(){q a3=c;q $4W=c.L.T().1z(\'[Y-1n]\');$4W.1F(j(i,s){a3.3Y.5D({V:\'1n\',K:s,1x:s.3x,id:$(s).12(\'Y-1n\')})});q $4v=c.L.T().1z(\'[Y-1Q]\');$4v.1F(j(i,s){a3.3Y.5D({V:\'1Q\',K:s,1x:s.2e,id:$(s).12(\'Y-1Q\')})});q $3S=c.L.T().1z(\'[Y-3S]\');$3S.1F(j(i,s){q 1x=(s.1r===\'6p\')?s.3x:s.2e;a3.3Y.5D({V:\'3S\',K:s,1x:1x,id:$(s).12(\'Y-3S\')})})},nm:j(){31(q 1f in c.3Y.Y){q Y=c.3Y.Y[1f];q 12=(Y.K.1r===\'6p\')?\'3x\':\'2e\';q $el=c.L.T().1z(\'[Y-\'+Y.V+\'][\'+12+\'="\'+Y.1x+\'"]\');if($el.1b===0){c.3Y.5o(Y.1x,J)}R{c.3Y.5o(Y.1x,1i)}}E c.3Y.Y}}},1o:j(){E{2a:j(){c.1c.aI();c.1c.aJ();if(c.F.3I.1b===0){E}c.$1o=c.1o.8S();c.1o.1D();c.1c.$1o=c.$1o;c.1c.aK();c.1c.3K(c.$1o);c.1o.iN()},8S:j(){E $(\'<3E>\').2m(\'G-1o\').12({\'id\':\'G-1o-\'+c.1S,\'67\':\'1o\'})},1D:j(){if(c.F.8E){c.$1o.2m(\'G-1o-nn\');$(c.F.8E).C(c.$1o)}R{if(c.F.V===\'3a\'){c.$2d.6X(c.$1o)}R{c.$1w.4F(c.$1o)}}},iN:j(){if(!c.F.dc||c.F.8E){E}if(c.F.49!==1p){q $el=$(c.F.49);c.iO=($el.1b===0)?0:c.L.2d().2S().2H-$el.2S().2H}q iP=(c.L.2d().2A(\'.1d-3f\').1b!==0)?no:0;3C($.1j(j(){c.1o.a4(J);if(c.2h.3G()){$(c.F.49).1N(\'6i.G.\'+c.1S,$.1j(c.1o.a4,c))}R{q 2w=c;$(c.F.49).1N(\'6i.G.\'+c.1S,j(){2w.L.1o().29();bt($.Y(c,"iQ"));$.Y(c,"iQ",3C(j(){2w.L.1o().2k();2w.1o.a4()},np))})}},c),iP)},iR:j(){E(c.F.49===1p)?c.L.2d().2S().2H:c.iO},a4:j(1Z){q cu=0;if(1Z!==J){cu=(c.F.49===1p)?20:0}q 3T=$(c.F.49).3T();q 6A=c.1o.iR();if((3T+c.F.5Y+cu)>6A){c.1o.iS(3T,6A)}R{c.1o.cv()}},iT:j(){c.$1o.2c({2M:c.L.2d().7J(),3m:c.L.2d().2S().3m})},iS:j(3T,6A){if(1g c.iU!==\'1k\'&&c.iU.nq===J){c.1o.cv();E}q 2E=6A+c.L.2d().i1()-32;q 2M=c.L.2d().7J();q 2R=(c.2h.3G())?\'5k\':\'6l\';q 2H=(c.2h.3G())?c.F.5Y:($(c.F.49).3T()-6A);q 3m=(c.2h.3G())?c.L.2d().2S().3m:0;if(c.F.49!==1p){2R=\'6l\';2H=c.F.5Y+$(c.F.49).3T()-6A;3m=0}c.$1o.2m(\'1o-5k-2d\');c.$1o.2c({2R:2R,2M:2M,2H:2H,3m:3m});if(3T>2E){$(\'.G-1a-\'+c.1S+\':9V\').29()}c.1o.iV();c.$1o.2c(\'iW\',(3T<2E)?\'9V\':\'aS\');$(2G).1N(\'9P.G-1o.\'+c.1S,$.1j(c.1o.iT,c))},cv:j(){c.$1o.2c({2R:\'cw\',2M:\'eF\',2H:0,3m:0,iW:\'9V\'});c.1o.iX();c.$1o.2Q(\'1o-5k-2d\');$(2G).2b(\'9P.G-1o.\'+c.1S)},iV:j(){q 2R=(c.F.49===1p&&c.2h.3G())?\'5k\':\'6l\';c.1o.cx(2R)},iX:j(){c.1o.cx(\'6l\')},cx:j(2R){q 2w=c;$(\'.G-1a-\'+c.1S).1F(j(){q $el=$(c);q $1c=2w.1c.1h($el.12(\'4k\'));q 2H=(2R===\'5k\')?2w.F.5Y:$1c.2S().2H;$el.2c({2R:2R,2H:($1c.9l()+2H)+\'4C\'})})}}},1s:j(){E{2X:j(id,1x,1m){c.1s.3H=J;c.1s.1m=1m;c.1s.1x=1x;c.1s.$el=$(id);c.1s.$3V=$(\'<1y id="G-3V" />\');c.1s.$cy=$(\'<1y id="G-3V-1V" />\').1l(c.1I.1h(\'1s-2n\'));c.1s.$3s=$(\'<3s V="1Q" 1U="1Q" />\');c.1s.$cy.1D(c.1s.$3s);c.1s.$3V.1D(c.1s.$cy);c.1s.$el.1D(c.1s.$3V);c.1s.$3V.2b(\'G.1s\');c.1s.$3s.2b(\'G.1s\');c.1s.$3V.1N(\'6o.G.1s\',$.1j(c.1s.iY,c));c.1s.$3V.1N(\'9o.G.1s\',$.1j(c.1s.iZ,c));c.1s.$3s.1N(\'bf.G.1s\',$.1j(j(e){e=e.88||e;c.1s.8n(c.1s.$3s[0].4v[0],e)},c));c.1s.$3V.1N(\'5l.G.1s\',$.1j(j(e){e.2i();c.1s.$3V.2Q(\'7r-cz\').2m(\'7r-5l\');c.1s.9q(e)},c))},gb:j(1Q,e){c.1s.3H=1i;c.1s.8n(1Q,e)},9q:j(e){e=e.88||e;q 4v=e.9p.4v;if(c.F.d5){q 2g=4v.1b;31(q i=0;i<2g;i++){c.1s.8n(4v[i],e)}}R{c.1s.8n(4v[0],e)}},8n:j(1Q,e){if(c.F.3S){c.1s.cA(1Q);c.6D.4D(1Q,e);E}q 2V=!!2G.4Z?1O 4Z():21;if(2G.4Z){c.1s.cA(1Q);q 1U=(c.1s.V===\'1n\')?c.F.8A:c.F.d6;2V.1D(1U,1Q)}c.2K.2k();c.L.1m(\'nr\',e,2V);c.1s.4D(2V,e)},cA:j(1Q){c.1s.j0(1Q);if(c.1s.3H){c.1s.1x=(c.1s.V===\'1n\')?c.F.48:c.F.57;c.1s.1m=(c.1s.V===\'1n\')?c.1n.1L:c.1Q.1L}},j0:j(1Q){c.1s.V=(c.F.dD.4Q(1Q.V)===-1)?\'1Q\':\'1n\';if(c.F.48===21&&c.F.57!==21){c.1s.V=\'1Q\'}},7M:j(53,fd){if(53===J||1g 53!==\'3v\'){E fd}$.1F(53,$.1j(j(k,v){if(v!==21&&v.7N().4Q(\'#\')===0){v=$(v).2J()}fd.1D(k,v)},c));E fd},4D:j(2V,e){if(c.1s.V===\'1n\'){2V=c.1e.7s(c.F.d2,2V);2V=c.1e.7t(c.F.d3,2V);2V=c.1s.7M(c.1s.a5,2V)}R{2V=c.1e.7s(c.F.d7,2V);2V=c.1e.7t(c.F.d8,2V);2V=c.1s.7M(c.1s.a6,2V)}q 2P=1O a7();2P.7n(\'ns\',c.1s.1x);2P.cB("X-nt-nu","a7");2P.j1=$.1j(j(){if(2P.j2===4){q Y=2P.j3;Y=Y.Q(/^\\[/,\'\');Y=Y.Q(/\\]$/,\'\');q 2r;6U{2r=(1g Y===\'ac\'?$.e3(Y):Y)}6V(nv){2r={6C:1i}}c.2K.29();if(!c.1s.3H){c.1s.$3V.2Q(\'7r-5l\')}c.1s.1m(2r,c.1s.3H,e)}},c);2P.4D(2V)},iY:j(e){e.2i();c.1s.$3V.2m(\'7r-cz\')},iZ:j(e){e.2i();c.1s.$3V.2Q(\'7r-cz\')},nw:j(){c.1s.a5={}},nx:j(1U,1C){c.1s.a5[1U]=1C},ny:j(1U){5Z c.1s.a5[1U]},nz:j(){c.1s.a6={}},nA:j(1U,1C){c.1s.a6[1U]=1C},nB:j(1U){5Z c.1s.a6[1U]}}},6D:j(){E{4D:j(1Q,e){c.6D.j4(1Q,$.1j(j(j5){c.6D.j6(1Q,j5,e)},c))},j4:j(1Q,1m){q 2P=1O a7();q 8x=(c.F.3S.3y(/\\?/)===-1)?\'?\':\'&\';2P.7n(\'nC\',c.F.3S+8x+\'1U=\'+1Q.1U+\'&V=\'+1Q.V,1i);if(2P.j7){2P.j7(\'1l/nD; nE=x-nF-nG\')}q j8=c;2P.j1=j(e){if(c.j2===4&&c.5o===8T){j8.2K.2k();1m(hH(c.j3))}};2P.4D()},j9:j(8v,1x){q 2P=1O a7();if("nH"in 2P){2P.7n(8v,1x,1i)}R if(1g ja!=="1k"){2P=1O ja();2P.7n(8v,1x)}R{2P=21}E 2P},j6:j(1Q,1x,e){q 2P=c.6D.j9(\'nI\',1x);if(!2P){E}2P.iy=$.1j(j(){q 2r;c.2K.29();if(2P.5o!==8T){2r={6C:1i};c.1s.1m(2r,c.1s.3H,2P);E}q 8o=1x.4d(\'?\');if(!8o[0]){E J}if(!c.1s.3H){c.1s.$3V.2Q(\'7r-5l\')}2r={1x:8o[0],id:8o[0],3S:1i};if(c.1s.V===\'1Q\'){q 2Z=8o[0].4d(\'/\');2r.1U=2Z[2Z.1b-1]}c.1s.1m(2r,c.1s.3H,e)},c);2P.nJ=j(){};2P.1s.nK=j(e){};2P.cB(\'nL-nM\',1Q.V);2P.cB(\'x-nN-nO\',\'ix-nP\');2P.4D(1Q)}}},1e:j(){E{3Q:j(C){C=(1g C===\'1k\')?c.L.T().C():C;C=C.Q(/[\\4s-\\nQ\\nR]/g,\'\');C=C.Q(/&5j;/gi,\'\');C=C.Q(/<\\/?br\\s?\\/?>/g,\'\');C=C.Q(/\\s/g,\'\');C=C.Q(/^<p>[^\\W\\w\\D\\d]*?<\\/p>$/i,\'\');C=C.Q(/<62(.*?[^>])>$/i,\'62\');C=C.Q(/<6T(.*?[^>])>$/i,\'6T\');C=C.Q(/<[^\\/>][^>]*><\\/[^>]+>/gi,\'\');C=C.Q(/<[^\\/>][^>]*><\\/[^>]+>/gi,\'\');C=$.3c(C);E C===\'\'},nS:j(53){6U{E 53 nT nU}6V(e){E(1g 53==="3v")&&(53.6d===1)&&(1g 53.3j==="3v")&&(1g 53.nV==="3v")}},nW:j(jb,jc,2S){q i=jb.4Q(jc,2S);E i>=0?i:J},cp:j(8p){q 7u;if(8p.4d(\',\')[0].4Q(\'nX\')>=0){7u=nY(8p.4d(\',\')[1])}R{7u=nZ(8p.4d(\',\')[1])}q jd=8p.4d(\',\')[0].4d(\':\')[1].4d(\';\')[0];q ia=1O o0(7u.1b);31(q i=0;i<7u.1b;i++){ia[i]=7u.o1(i)}E 1O o2([ia],{V:jd})},8b:j(el){E $(\'<1y>\').1D($(el).eq(0).9L()).C()},je:j(8q,3t){8q=8q[0]||8q;3t=$(3t);q cC=8q.4q;q 2g=cC.1b;50(2g--){q 12=cC[2g];3t.12(12.1U,12.1C)}E 3t},6u:j(){q M=c.N.M();if(c.1e.7j(M)){E{$M:$(M),$1E:$(M).1E(),V:\'1Z\'}}R if(c.1e.5m(M)){E{$M:$(M),$1E:$(M).1E(),V:\'2E\'}}R{q 1t=M.1r.3J();if(1t===\'1G\'||1t===\'li\'||1t===\'3R\'||1t===\'5p\'){E J}q 9I=c.N.bG(M);q $8r=$(\'<\'+1t+\' />\').1D(9I);$8r=c.1e.je(M,$8r);$(M).2x($8r);E{$M:$(M),$1E:$8r,V:\'ik\'}}},hJ:j(1K){1K=($.8c(1K))?1K:[1K];q 2N=c.N.2N();q 2g=2N.1b;q 7v=J;31(q i=0;i<2g;i++){if(2N[i]!==J){q 1t=2N[i].1r.3J();if($.3U(1t,1K)!==-1){7v=1i}}}E 7v},o3:j(1K){1K=($.8c(1K))?1K:[1K];q 3W=c.N.3W();q 2g=3W.1b;q 7v=J;31(q i=0;i<2g;i++){q 1t=3W[i].1r.3J();if($.3U(1t,1K)!==-1){7v=1i}}E 7v},4o:j(1v,1t){q 1w=$(1v).2A(1t,c.L.T()[0]);if(1w.1b===1){E 1w[0]}E J},9J:j(M){if(M===21){E J}M=M[0]||M;E M&&c.1e.6e(M.1r)},6e:j(1t){E(1g 1t===\'1k\')?J:c.dS.5N(1t)},8M:j(14){14=14[0]||14;E 14&&c.1e.7Y(14.1r)},7Y:j(1t){E(1g 1t===\'1k\')?J:c.dT.5N(1t)},51:j(el){if(!el){E J}if($(el).7e(\'.G-in\').1b===0||$(el).3b(\'G-in\')){E J}E el},bd:j(){E c.1e.4X([\'e6\',\'e7\',\'e8\',\'e9\',\'ea\',\'eb\'])},4X:j(1r){q 1M=c.N.1M();q 1v=c.N.1v();if($.8c(1r)){q cD=0;$.1F(1r,$.1j(j(i,s){if(c.1e.cE(1v,1M,s)){cD++}},c));E(cD===0)?J:1i}R{E c.1e.cE(1v,1M,1r)}},cE:j(1v,1M,1r){1r=1r.8L();E 1M&&1M.1r===1r?1M:1v&&1v.1r===1r?1v:J},iC:j(){q 2R=c.L.T().2c(\'2R\');q 2Z=[\'6l\',\'5k\',\'cw\'];E($.3U(2Z,2R)!==-1)},iD:j(){c.L.T().2m(\'G-cw\')},eL:j(){c.a8=$(1p).3T();$(1p).3T(c.a8)},eN:j(){if(1g c.a8===\'1k\'){E}$(1p).3T(c.a8)},9K:j(){c.cF=$(1p).3T()},9B:j(){if(1g c.cF===\'1k\'){E}$(1p).3T(c.cF)},7j:j(1w){if(1g 1w===\'1k\'){1w=c.N.M();if(!1w){E J}}E(c.2S.1h(1w)===0)?1i:J},5m:j(1w){if(1g 1w===\'1k\'){1w=c.N.M();if(!1w){E J}}q 1l=$.3c($(1w).1l()).Q(/[\\t\\n\\r\\n]/g,\'\').Q(/\\4s/g,\'\');q 2S=c.2S.1h(1w);E(2S===1l.1b)?1i:J},gB:j(el,12){q $el=$(el);if(1g $el.12(12)===\'1k\'){E 1i}if($el.12(12)===\'\'){$el.2O(12);E 1i}E J},4E:j(K,1t){q 6h;$(K).3h(j(){6h=$(\'<\'+1t+\' />\').1D($(c).3g());31(q i=0;i<c.4q.1b;i++){6h.12(c.4q[i].1U,c.4q[i].1C)}E 6h});E 6h},6t:j(){E c.cG},hg:j(){c.cG=1i},79:j(){c.cG=J},bj:j(){q $3f=$(\'C\');q 7o=2G.7J;if(!7o){q cH=1p.o4.o5();7o=cH.a0-fX.o6(cH.3m)}q jf=1p.3f.jg<7o;q a9=c.1e.jh();$3f.2c(\'c9\',\'aS\');if(jf){$3f.2c(\'9X-a0\',a9)}},jh:j(){q $3f=$(\'3f\');q 7w=1p.3N(\'1y\');7w.b1=\'G-ji-jj\';$3f.1D(7w);q a9=7w.o7-7w.jg;$3f[0].o8(7w);E a9},85:j(){$(\'C\').2c({\'c9\':\'\',\'9X-a0\':\'\'});$(\'3f\').1B(\'G-ji-jj\')},7s:j(7s,Y){if(!7s){E Y}q $cI=$(7s);if($cI.1b===0){E Y}R{q 3P=\'\';$cI.1F(j(){Y.1D($(c).12(\'1U\'),$(c).2J())});E Y}},7t:j(7t,Y){if(!7t){E Y}q $cJ=$(7t);if($cJ.1b===0){E Y}R{q 2V=$cJ.o9();$.1F(2V,j(z,f){Y.1D(f.1U,f.1C)});E Y}},4h:j(){E c.N.4h()},5y:j(){E c.2h.5y()},3G:j(){E c.2h.3G()},oa:j(){E c.2h.fO()}}},cS:j(){E{9j:j(){E c.2h.bg()},ff:j(){E c.2h.6k()},ie:j(){E c.2h.5G()}}}};$(2G).1N(\'3K.jk.G\',j(){$(\'[Y-jk="G"]\').G()});3p.54.2X.54=3p.54})(jl);(j($){$.fn.4n=j(3z,2W,1m){E c.1F(j(){1O 4n(c,3z,2W,1m)})};j 4n(1w,3z,2W,1m){q F={4u:0.5,aa:1,8s:0,ab:\'G-\',5n:\'cK\'};c.3z=3z;c.cL=(c.3z===\'bl\'||c.3z===\'bp\');c.$1w=$(1w);c.7x=[\'\',\'-ob-\',\'-o-3z-\',\'-9j-\'];c.5T=[];if(1g 2W===\'j\'){1m=2W;c.F=F}R{c.F=$.5w(F,2W)}if(c.cL){c.$1w.4r(c.$1w.4r())}c.2X(1m)}4n.54={2X:j(1m){c.5T.3k(c.3z);c.1Y();if(c.3z===\'2k\'){c.F.5n=\'cK\';c.$1w.2Q(\'29\').2k();if(1g 1m===\'j\'){1m(c)}}R if(c.3z===\'29\'){c.F.5n=\'cK\';c.$1w.29();if(1g 1m===\'j\'){1m(c)}}R{c.cM(1m)}},cM:j(1m){c.$1w.2m(\'jm\').2c(\'9a\',\'\').2Q(\'29\');c.$1w.2m(c.F.ab+c.5T[0]);c.2v(c.F.4u+\'s\',c.F.8s+\'s\',c.F.aa,c.F.5n);q jn=(c.5T.1b>1)?21:1m;c.jo(\'oc\',$.1j(j(){if(c.$1w.3b(c.F.ab+c.5T[0])){c.1Y();c.5T.5q();if(c.5T.1b){c.cM(1m)}}},c),jn)},2v:j(4u,8s,aa,5n){q 2g=c.7x.1b;50(2g--){c.$1w.2c(c.7x[2g]+\'3z-4u\',4u);c.$1w.2c(c.7x[2g]+\'3z-8s\',8s);c.$1w.2c(c.7x[2g]+\'3z-od-oe\',aa);c.$1w.2c(c.7x[2g]+\'3z-5n-j\',5n)}},1Y:j(){c.$1w.2Q(\'jm\');c.$1w.2Q(c.F.ab+c.5T[0]);c.2v(\'\',\'\',\'\',\'\')},jo:j(V,cN,1m){c.$1w.of(V.3J()+\' 9j\'+V+\' o\'+V+\' og\'+V,$.1j(j(){if(1g cN===\'j\'){cN()}if(1g 1m===\'j\'){1m(c)}q jp=[\'7L\',\'bp\',\'oh\',\'oi\',\'oj\',\'ok\'];if($.3U(c.3z,jp)!==-1){c.$1w.2c(\'9a\',\'aW\')}if(c.cL){c.$1w.2c(\'4r\',\'\')}},c))}}})(jl);',62,1510,'||||||||||||this|||||||function|||||||var||||||||||||html||return|opts|redactor|||false|node|core|block|selection|link||replace|else||editor||type|||data||||attr||inline|range|||||dropdown|length|button|modal|utils|key|typeof|get|true|proxy|undefined|text|callback|image|toolbar|document|keydown|tagName|upload|tag|sel|current|element|url|div|find|func|remove|value|append|next|each|pre|marker|lang|title|tags|insert|parent|on|new|events|file|caret|uuid|target|name|placeholder|air|observe|clean|start||null|class|code|||click||list|hide|build|off|css|box|href|span|len|detect|preventDefault|buffer|show|RegExp|addClass|label|last|btn|focus|json|btnName|btnObject|format|set|self|after|prev|keyCode|closest|img|blockquote|first|end|item|window|top|command|val|progress|section|width|blocks|removeAttr|xhr|removeClass|position|offset|figure|restore|formData|options|init|linkify|arr||for|||||||||textarea|hasClass|trim|autosave|paragraphize|body|contents|replaceWith|edit|style|push|keyup|left|match|args|Redactor|save|indent|input|to|active|object|replaced|src|search|animation|figcaption|returned|setTimeout|innerHTML|ul|ctrl|isDesktop|direct|buttons|toLowerCase|load|aria|update|createElement|links|str|isEmpty|td|s3|scrollTop|inArray|droparea|inlines|num|storage|script||close|emptyHtml|modalBox|breaked|||paste|imageUpload|toolbarFixedTarget|regexps|collapse|nodes|split|shortcuts|tab|join|isCollapsed|currentTag|re|rel|insertNode|tooltip|redactorAnimation|isTag|mousedown|attributes|height|u200B|tmp|duration|files|line|del|bold|italic|lists|caption|px|send|replaceToTag|before|arrow|lastNode|getInlines|keys|callbacks|deleted|toggle|unlink|DELETE|enabled|indexOf|setAttr|getBlocks|execCommand|node1|space|images|isCurrentOrParent|handler|FormData|while|isRedactorParent|matches|obj|prototype|call|settings|fileUpload|blockTags||userAgent|BACKSPACE|ENTER|destroy|filter|shiftKey|disabled|getSelection|removeAllRanges|nbsp|fixed|drop|isEndOfElement|timing|status|th|shift|meta|params|langs|abbr|https|extend|methods|isMobile|deleteContents|metaKey|100|index|add|touchstart|blur|isIe|btns|enable|node2|createTextNode|addRange|sync|test|dropdownObject|nodeValue|modalBody|templateName|pasteBox|queue|apply|instance|plugins|preSpaces|toolbarFixedTopOffset|delete|inlineTags||iframe|form|module|||role|which|ctrlKey|not|BR|textNode|nodeType|isBlockTag|UL|OL|replacement|scroll|modalOverlay|isFirefox|absolute|enableEvents|dropImage|dragover|IMG|stop|children|LI|isSelectAll|breakBlockTag|blockElem|action|cloned|clipboard|parentNode|boxTop|isFunction|error|uploads3|structure|enterKey|strong|horizontalrule|strike|underline|cancel|Heading|filename|navigator|www|PRE|initToEdit|syncFire|collapsed|source|try|catch|Attr|prepend|out|hideAll|setStart|createRange|selectNodeContents||lastChild|quot|String|getEvent|dropact|disableSelectAll|rtePaste|blank|pattern|re2|parents|items|newEl|breakpoint|getRangeAt|isStartOfElement|pos|nextList|listParent|open|windowWidth|modif|possible|drag|appendFields|appendForms|byteString|contains|scrollDiv|prefixes|Array|tabindex|pasteInlineTags|linkSize|orderedlist|rebuffer|dropdowns|linkyoutube|linkvimeo|ESC|namespace|innerWidth|setInactiveAll|fadeOut|getHiddenFields|toString|toggleClass|onSync|margin|toolbarsButtons|cleaned|curLang|decrease|returnValue|act|prepare|isInlineTag|setStartAfter|amp|removeMarkers|htmlCleaned|addEvent|event|enableBodyScroll|closeHandler|elements|originalEvent|_blank|http|getOuterHtml|isArray|deleteContent|re1|newBlock|insertedList|tabs|modalHeader|modalClose|addProperties|bar|character|traverseFile|s3file|dataURI|from|nextPart|delay|bind|methodVal|method|table|mark|tabAsSpaces|autosaveFields|imageUploadParam|dragImageUpload|dragFileUpload|container|toolbarExternal|unorderedlist|Insert|outdent|x200b|com|linkimage|toUpperCase|isInline|DIV|clickToCancelStorage|clickToCancel|clickToSave|property|createContainer|200|autosaveTimeout|formatCollapsed|formatUncollapsed|unwrap|addAttr|undo|||voice|max|inactive|increase|||||display|setEnd|parseHTML|encode|encodeEntities|normalize|stopDetectChanges|startDetectChanges|plugin|webkit|stopPropagation|innerHeight|blured|stopChanges|dragleave|dataTransfer|onDrop|scrollTimer|imageEditing|nodeToPoint|getActionButton|alt|prop|checked|ftp|linkProtocol||restoreScroll|removeItemEmpty|oldEl|result|rangeCount|raw|cloneRange|endOfNode|isBlock|saveScroll|clone|closeAllTooltip|re3|checkbox|resize|number|disableEvents|parentEl|deleteProperties|xparagraphmarkerz|visible|blob|padding|resultNodes|clonedRange|right|special|specialKey|_this|observeScroll|imageFields|fileFields|XMLHttpRequest|freezeScrollTop|scrollbarWidth|iterate|prefix|string|modules|direction|minHeight|maxHeight|maxWidth|pastePlainText|pasteImages|pasteLinks|pasteBlockTags|sup|sub|preClass|autosaveName|clipboardImageUpload|video|airWidth|formatting|formattingAdd|buttonsHide|buttonsHideOnMobile|removeFormat|Cancel|quote|optional|header|paragraphizeBlocks|invisibleSpace|SPACE|TAB|getModuleMethods|collapseToStart|hideButtons|hideButtonsOnMobile|setFormatting|appendTo|leftFix|clientX|altKey|disable|removeInlineTags|redo|hidden|contenteditable|RedactorPlugins|hideButtonsSlicer|none|addCallback|addDropdown|setActive|textnode|className|onSet|onGet|onPaste|getPlainText|getCurrentType|isHtmlBlocked|cleanPre|denied|z0|removeSpacesHard|heading|isCurrentOrParentHeader||change|isWebkit|itemContainer|mouseover|disableBodyScroll|mouseout|slideDown|enableCallback|dropdownWidth|parseInt|slideUp|focused||isCallback|clearTimeout|redactorImageLink|newList|removeEmpty|insertBreakpoint|formatSet|converted|placeHtml|wrap|frag|appendChild|gap|placeNode|extractEndOfNode|endRange|221|219|FIGURE|insertNewLine|replaceToParagraph|insertBreakLineProcessing|removeIt|removeSelfHostFromUrl|cleanUrl|cleanText|getText|substring|parse|mailto|buildTarget|unlinked|iframeStart|iframeEnd|regexB|cmd|buildWidth|fadeIn|175|windowHeight|bottom|16px|tabsBox|overflow|currentEl|isRedactor|inValues|outValues|setDropdownProperties|setDropdownAttr|isDelete|closeTooltip|endContainer|nextNode|safes|clipboardUpload|visibleModals|types|reader|dataURItoBlob|startContainer|nextSibling|endNode|hotkeysShiftNums|tolerance|observeScrollDisable|relative|setDropdownPosition|placeholdler|hover|setConfig|setRequestHeader|attrs|matched|isCurrentOrParentOne|tmpScrollTop|selectAll|documentElementRect|fields|forms|linear|slide|animate|make|Function|scope|slice|arguments|browser|focusEnd|clickToEdit|tr|ins|samp|kbd|cite|small|tabKey|imageUploadFields|imageUploadForms|imageCaption|multipleImageUpload|fileUploadParam|fileUploadFields|fileUploadForms|linkTooltip|linkNofollow|videoContainerClass|toolbarFixed||superscript|subscript|shortcutsAdd|activeButtons|activeButtonsStates|Edit|Delete||paragraph|heading1|heading2|heading3|heading4|heading5|heading6||List|accessibility|help|address|footer|aside|article|select|area|imageTypes|png|gif|youtube|vimeo|UP|DOWN|CTRL|META|SHIFT|ALT|LEFT_WIN|loadOptions|loadModules|loadToEdit|reIsBlock|reIsInline|detectType|startToEdit|bindModuleMethods|collapseToEnd|mouseup|clientY|bindHide|jsxhr|success|parseJSON|callbackName|clearInterval|H1|H2|H3|H4|H5|H6|splice|Class|removeAll|replaceClass|removeAllClass|replaceAttr|toggleAttr|removeAllAttr|setUndo||||setRedo|getUndo||pop|getRedo|startTextarea|setIn|setId|enableEditor|setOptions|callEditor|createContainerBox|getName|loadFromTextarea|toolbarMobile|dir|min|auto|disableBrowsersEditing|setHelpers|templates|setEvent|haspopup|freezeScroll|clickCallback|unfreezeScroll|all|afterkey|beforekey|icon|invisible|setStartBefore|TABLE|savePreCode|saveFormTags|marker1|marker2|head|stripTags||||||||||restoreFormTags|nofollow|chars||msword||isHtmlMsWord|cleanMsWord|replaceBrToNl|removeTagsInsidePre|removeSpans|removeEmptyInlineTags|convertTags||reconvertTags|replaceNbspToSpaces|encodeHtml|isHtmlLine|match1|match2|matchBR|matchNL|bmso|concat|textContent|innerText|savePreFormatting|saveCodeFormatting|restoreSelectionMarkers|normalizeCurrentHeading|isSync|startSync|eventNamespace|destroyed|touchmove|iPhone|iPod|BlackBerry|Android|iPad|isIpad|buildFormatting|buildItem|itemSpan|buildClick|buildCommand|getButtonPosition|showIsFixedToolbar|showIsUnFixedToolbar|Math|dropdownHide|hideOut|onDropUpload|size|touchImageEditing|500|createObserver|setupObserver|observer|mutations|iterateObserver|mutation|changeHandler|directUpload|700|release|HR|activeElement|imageDelete|setEditable||showEdit|buttonDelete|getDeleteButton|buttonSave|FIGCAPTION|preview|xn|boolean|listTag|repositionItem||formatblock|strikethrough|formatConvert|formatted|unline|decoration|SPAN|removeEmptyAttr|endTag|appendLists|firstChild|caretPositionFromPoint|caretRangeFromPoint|createTextRange|moveToPoint|keydownStop|checkEvents|setupBuffer|addArrowsEvent|setupSelectAll|onArrowDown|onArrowUp|wrapToParagraph|onShiftSpace|onShiftEnter|onEnter|onTab|onBackspaceAndDeleteBefore|tagLi|removeOnBackspace|removeInvisibleSpace|removeEmptyListInTable|onBackspaceAndDeleteAfter|||||||removeEmptyLists|formatEmpty|exitFromBlockquote|insertBreakLine|insertParagraph|checkKeyEvents|insertAfterLastElement|insertBeforeFirstElement|u00a0|enableSelectAll|dbl|br1|br2|blockHtml|isContainImage|isKey|getLineHtml|replaceLinksToText|buildLinkFromObject|insertedLink||buildModal|buildLinkFromElement|setModalValues|buildLinkFromModal|_|truncateUrl|isUrl|re4|isMailto|isLink|isFiltered|convertVideoLinks|convertImages|convertLinks|objects|decodeURIComponent|regexp|inBlocks|iterateRemove|General|Upload|URL|template|getTemplate|getCancelButton|setTitle|setDraggable|setContent|buildTabber|cubic|bezier|885|320|105|setEnter|outerHeight|tabber|showTab|draggable|buildOverlay|properties|showTooltip|getTooltipPosition|aLink||aEdit|aUnlink|||||cloneContents|endOffset|walker|break|getSafes|convert||clear|restoreSafes|outerHTML|detectClipboardUpload||createPasteBox|freeze|getPasteBoxCode|appendPasteBox|public|onload|insertFromClipboard|imgs|isEditorEmpty|isEditorRelative|setEditorRelative|buildPosition|isAttr|getPosition|states|savedSel|hotkeysSpecialKeys|buildHandler|origHandler|decodeURI|setFixed|toolbarOffsetTop|late|scrollCheck|getBoxTop|observeScrollEnable|observeScrollResize|fullscreen|setDropdownsFixed|visibility|unsetDropdownsFixed|onDrag|onDragLeave|getType|onreadystatechange|readyState|responseText|executeOnSignedUrl|signedURL|sendToS3|overrideMimeType|that|createCORSRequest|XDomainRequest|haystack|needle|mimeString|cloneAttributes|isOverflowing|clientWidth|measureScrollbar|scrollbar|measure|tools|jQuery|animated|_callback|complete|effects|use|strict|No|such|VERSION|ltr|tbody|thead|tfoot|Format|Image|File|Link|Bold|Italic|Strikethrough|Underline|Lists|Open|Unlink|Close|Save|Text|Title|Normal|Quote|Code|Name|Unordered|Ordered|Outdent|Indent|Line|Drop|here|or|Caption|Rich|output|option|map|math|fieldset|legend|hgroup|nav|details|menu|summary|jpeg|youtu|jpe|RIGHT|LEFT|Object|getOwnPropertyNames|collapsedEnd|bindMousemoveHide|mousemove|ajax|post|done|autosaveError|application|content|insertAfter|labelledby|presentation|TEXTAREA|40px|enableObjectResizing|enableInlineTableEditing|AutoUrlDetect|bull|javascript|void|getButtons|getButtonsKeys|addFirst|addAfter|addBefore|setIcon|setInactive|disableAll|enableAll|setEndBefore|reg|font|applet|u2122|trade|u00a9|copy|u2026|hellip|u2014|mdash|u2010|dash|Mso|WordDocument|replaceNlToBr|colspan|rowspan|removeSpaces|syncBefore|_data|removeData|firefox|msie|isNaN|Trident|rv|getDropdown|dropdownShow|dropdownShown||dragenter|MutationObserver|forEach|subtree|childList|characterData|characterDataOldValue|300|stopDetect|startDetect||fileUploadError|imageUploadError|dragstart|705|formatBreak|through|createDocumentFragment|empty|offsetNode|duplicate|setEndPoint|EndToEnd|nodeToCaretPositionFromPoint|editter|enter|insertDblBreakLine|insertedLine|deletedLink|600|php|location|addBack|281|frameborder|allowfullscreen|embed|player|grep|parentsUntil|group|side|desc|addTemplate|getModal|modalOpened|focusin|email|handle|cursor|move|dialog|times|overlay|bodyOveflow|modalClosed|isCurrent|toggleActive|createTreeWalker|NodeFilter|SHOW_TEXT|Infinity|xparagraphmarkerzxparagraphmarkerz|saveBodyScroll|9999px|clipboardData|tiff|getAsFile|FileReader|readAsDataURL|filelink|Control|anchorNode|previousSibling|commonAncestorContainer|unshift|hasChildNodes|extractContents|markerHtml|backspace|pause|capslock|esc|pageup|pagedown|home|up|down|101|102|103|104|106|107|109|110|111|112|113|114|115|116|117|118|119|120|121|f10|122|f11|123|f12|144|numlock|145|173|186|187|188|189|190|191|192|220|222|fromCharCode|Key|changes|external|1000|250|isOpened|uploadStart|POST|Requested|With|err|clearImageFields|addImageFields|removeImageFields|clearFileFields|addFileFields|removeFileFields|GET|plain|charset|user|defined|withCredentials|PUT|onerror|onprogress|Content|Type|amz|acl|read|u200D|uFEFF|isElement|instanceof|HTMLElement|ownerDocument|strpos|base64|atob|unescape|Uint8Array|charCodeAt|Blob|inInlines|documentElement|getBoundingClientRect|abs|offsetWidth|removeChild|serializeArray|isPad|moz|AnimationEnd|iteration|count|one|MS|zoomOut|slideOutUp|slideOutRight|slideOutLeft|'.split('|'),0,{}))
\ No newline at end of file