upfront-editable
Version:
Friendly contenteditable API
2 lines • 172 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jQuery")):"function"==typeof define&&define.amd?define(["jQuery"],t):"object"==typeof exports?exports.Editable=t(require("jQuery")):e.Editable=t(e.jQuery)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}var o=n(1),a=i(o),s=n(2),u=i(s),c=n(3),l=i(c),f=n(7),d=i(f),h=n(8),g=r(h),p=n(32),v=i(p),m=n(15),y=r(m),b=n(46),S=r(b),C=n(9),w=r(C),N=n(47),R=r(N),_=n(69),E=i(_),O=n(25),x=i(O),k=n(30),M=i(k),T=n(70),A=i(T),P=n(68),B=i(P),F=n(54),I=i(F),L=e.exports=function(){function e(t){(0,a.default)(this,e);var n={window:window,defaultBehavior:!0,mouseMoveSelectionChanges:!1,browserSpellcheck:!0};this.config=l.default.extend(n,t),this.win=this.config.window,this.editableSelector="."+g.editableClass,d.default.initialized||d.default.init(),this.dispatcher=new E.default(this),this.config.defaultBehavior===!0&&this.dispatcher.on((0,B.default)(this))}return(0,u.default)(e,[{key:"add",value:function(e){return this.enable((0,l.default)(e)),this}},{key:"remove",value:function(e){var t=(0,l.default)(e);return this.disable(t),t.removeClass(g.editableDisabledClass),this}},{key:"disable",value:function(e){var t=this.win.document.body;return e=e||(0,l.default)("."+g.editableClass,t),e.each(function(e,t){return S.disable(t)}),this}},{key:"enable",value:function(e,t){var n=this,r=this.win.document.body;e=e||(0,l.default)("."+g.editableDisabledClass,r);var i=this.config.browserSpellcheck;return e.each(function(e,r){S.init(r,{normalize:t,shouldSpellcheck:i}),n.dispatcher.notify("init",r)}),this}},{key:"suspend",value:function(e){var t=this.win.document.body;return e=e||(0,l.default)("."+g.editableClass,t),e.removeAttr("contenteditable"),this.dispatcher.suspend(),this}},{key:"continue",value:function(e){var t=this.win.document.body;return e=e||(0,l.default)("."+g.editableClass,t),e.attr("contenteditable",!0),this.dispatcher.continue(),this}},{key:"createCursor",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"beginning",n=(0,l.default)(e).closest(this.editableSelector);if(n.length){var r=d.default.createRange();return"beginning"===t||"end"===t?(r.selectNodeContents(e),r.collapse("beginning"===t)):e!==n[0]?"before"===t?(r.setStartBefore(e),r.setEndBefore(e)):"after"===t&&(r.setStartAfter(e),r.setEndAfter(e)):(0,v.default)("EditableJS: cannot create cursor outside of an editable block."),new x.default(n[0],r)}}},{key:"createCursorAtBeginning",value:function(e){return this.createCursor(e,"beginning")}},{key:"createCursorAtEnd",value:function(e){return this.createCursor(e,"end")}},{key:"createCursorBefore",value:function(e){return this.createCursor(e,"before")}},{key:"createCursorAfter",value:function(e){return this.createCursor(e,"after")}},{key:"getContent",value:function(e){return w.extractContent(e)}},{key:"appendTo",value:function(e,t){var n=w.adoptElement(e,this.win.document),r=this.createCursor(n,"end");return r.insertAfter("string"==typeof t?w.createFragmentFromString(t):t),r}},{key:"prependTo",value:function(e,t){var n=w.adoptElement(e,this.win.document),r=this.createCursor(n,"beginning");return r.insertBefore("string"==typeof t?w.createFragmentFromString(t):t),r}},{key:"getSelection",value:function(e){var t=this.dispatcher.selectionWatcher.getFreshSelection();if(!e||!t)return t;var n=t.range;try{n.compareNode(e)!==n.NODE_BEFORE_AND_AFTER&&(t=void 0)}catch(e){t=void 0}return t}},{key:"setupHighlighting",value:function(e){return this.highlighting=new A.default(this,e),this}},{key:"setupSpellcheck",value:function(e){var t=this,n=void 0;e.markerNode&&(n=e.markerNode.outerHTML),this.setupHighlighting({throttle:e.throttle,spellcheck:{marker:n,spellcheckService:e.spellcheckService}}),this.spellcheck={checkSpelling:function(e){t.highlighting.highlight(e)}}}},{key:"highlight",value:function(e){var t=e.editableHost,n=e.text,r=e.highlightId,i=e.textRange,o=e.raiseEvents;return i?"number"!=typeof i.start||"number"!=typeof i.end?((0,v.default)("Error in Editable.highlight: You passed a textRange object with invalid keys. Expected shape: { start: Number, end: Number }"),-1):i.start===i.end?((0,v.default)("Error in Editable.highlight: You passed a textRange object with equal start and end offsets, which is considered a cursor and therefore unfit to create a highlight."),-1):M.default.highlightRange(t,r,i.start,i.end,o?this.dispatcher:void 0):M.default.highlightText(t,n,r)}},{key:"getHighlightPositions",value:function(e){var t=e.editableHost;return M.default.extractHighlightedRanges(t)}},{key:"removeHighlight",value:function(e){var t=e.editableHost,n=e.highlightId,r=e.raiseEvents;M.default.removeHighlight(t,n,r?this.dispatcher:void 0)}},{key:"decorateHighlight",value:function(e){var t=e.editableHost,n=e.highlightId,r=e.addCssClass,i=e.removeCssClass;M.default.updateHighlight(t,n,r,i)}},{key:"on",value:function(e,t){return this.dispatcher.on(e,t),this}},{key:"off",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.dispatcher.off.apply(this.dispatcher,t),this}},{key:"unload",value:function(){return this.dispatcher.unload(),this}}],[{key:"getGlobalConfig",value:function(){return g}},{key:"globalConfig",value:function(e){l.default.extend(g,e),R.updateConfig(g)}}]),e}();L.parser=y,L.content=w,L.browser=I.default,["focus","blur","flow","selection","cursor","newline","insert","split","merge","empty","change","switch","move","clipboard","paste"].forEach(function(e){L.prototype[e]=function(t){return this.on(e,t)}})},function(e,t){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(81),o=r(i);t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,o.default)(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()},function(t,n){t.exports=e},function(e,t){var n=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(41)("wks"),i=n(29),o=n(10).Symbol,a="function"==typeof o,s=e.exports=function(e){return r[e]||(r[e]=a&&o[e]||(a?o:i)("Symbol."+e))};s.store=r},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.elementNode=1,t.attributeNode=2,t.textNode=3,t.cdataSectionNode=4,t.entityReferenceNode=5,t.entityNode=6,t.processingInstructionNode=7,t.commentNode=8,t.documentNode=9,t.documentTypeNode=10,t.documentFragmentNode=11,t.notationNode=12},function(e,t,n){var r,i;!function(o,a){r=o,i="function"==typeof r?r.call(t,n,t,e):r,!(void 0!==i&&(e.exports=i))}(function(){function e(e,t){var n=typeof e[t];return n==S||!(n!=b||!e[t])||"unknown"==n}function t(e,t){return!(typeof e[t]!=b||!e[t])}function n(e,t){return typeof e[t]!=C}function r(e){return function(t,n){for(var r=n.length;r--;)if(!e(t,n[r]))return!1;return!0}}function i(e){return e&&E(e,_)&&x(e,R)}function o(e){return t(e,"body")?e.body:e.getElementsByTagName("body")[0]}function a(t){typeof console!=C&&e(console,"log")&&console.log(t)}function s(e,t){T&&t?alert(e):a(e)}function u(e){P.initialized=!0,P.supported=!1,s("Rangy is not supported in this environment. Reason: "+e,P.config.alertOnFail)}function c(e){s("Rangy warning: "+e,P.config.alertOnWarn)}function l(e){return e.message||e.description||String(e)}function f(){if(T&&!P.initialized){var t,n=!1,r=!1;e(document,"createRange")&&(t=document.createRange(),E(t,N)&&x(t,w)&&(n=!0));var s=o(document);if(!s||"body"!=s.nodeName.toLowerCase())return void u("No body element found");if(s&&e(s,"createTextRange")&&(t=s.createTextRange(),i(t)&&(r=!0)),!n&&!r)return void u("Neither Range nor TextRange are available");P.initialized=!0,P.features={implementsDomRange:n,implementsTextRange:r};var c,f;for(var d in M)(c=M[d])instanceof p&&c.init(c,P);for(var h=0,g=I.length;h<g;++h)try{I[h](P)}catch(e){f="Rangy init listener threw an exception. Continuing. Detail: "+l(e),a(f)}}}function d(e,t,n){n&&(e+=" in module "+n.name),P.warn("DEPRECATED: "+e+" is deprecated. Please use "+t+" instead.")}function h(e,t,n,r){e[t]=function(){return d(t,n,r),e[n].apply(e,A.toArray(arguments))}}function g(e){e=e||window,f();for(var t=0,n=L.length;t<n;++t)L[t](e)}function p(e,t,n){this.name=e,this.dependencies=t,this.initialized=!1,this.supported=!1,this.initializer=n}function v(e,t,n){var r=new p(e,t,function(t){if(!t.initialized){t.initialized=!0;try{n(P,t),t.supported=!0}catch(t){var r="Module '"+e+"' failed to load: "+l(t);a(r),t.stack&&a(t.stack)}}});return M[e]=r,r}function m(){}function y(){}var b="object",S="function",C="undefined",w=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],N=["setStart","setStartBefore","setStartAfter","setEnd","setEndBefore","setEndAfter","collapse","selectNode","selectNodeContents","compareBoundaryPoints","deleteContents","extractContents","cloneContents","insertNode","surroundContents","cloneRange","toString","detach"],R=["boundingHeight","boundingLeft","boundingTop","boundingWidth","htmlText","text"],_=["collapse","compareEndPoints","duplicate","moveToElementText","parentElement","select","setEndPoint","getBoundingClientRect"],E=r(e),O=r(t),x=r(n),k=[].forEach?function(e,t){e.forEach(t)}:function(e,t){for(var n=0,r=e.length;n<r;++n)t(e[n],n)},M={},T=typeof window!=C&&typeof document!=C,A={isHostMethod:e,isHostObject:t,isHostProperty:n,areHostMethods:E,areHostObjects:O,areHostProperties:x,isTextRange:i,getBody:o,forEach:k},P={version:"1.3.0",initialized:!1,isBrowser:T,supported:!0,util:A,features:{},modules:M,config:{alertOnFail:!1,alertOnWarn:!1,preferTextRange:!1,autoInitialize:typeof rangyAutoInitialize==C||rangyAutoInitialize}};P.fail=u,P.warn=c;var B;({}).hasOwnProperty?(A.extend=B=function(e,t,n){var r,i;for(var o in t)t.hasOwnProperty(o)&&(r=e[o],i=t[o],n&&null!==r&&"object"==typeof r&&null!==i&&"object"==typeof i&&B(r,i,!0),e[o]=i);return t.hasOwnProperty("toString")&&(e.toString=t.toString),e},A.createOptions=function(e,t){var n={};return B(n,t),e&&B(n,e),n}):u("hasOwnProperty not supported"),T||u("Rangy can only run in a browser"),function(){var e;if(T){var t=document.createElement("div");t.appendChild(document.createElement("span"));var n=[].slice;try{1==n.call(t.childNodes,0)[0].nodeType&&(e=function(e){return n.call(e,0)})}catch(e){}}e||(e=function(e){for(var t=[],n=0,r=e.length;n<r;++n)t[n]=e[n];return t}),A.toArray=e}();var F;T&&(e(document,"addEventListener")?F=function(e,t,n){e.addEventListener(t,n,!1)}:e(document,"attachEvent")?F=function(e,t,n){e.attachEvent("on"+t,n)}:u("Document does not have required addEventListener or attachEvent method"),A.addListener=F);var I=[];A.deprecationNotice=d,A.createAliasForDeprecatedMethod=h,P.init=f,P.addInitListener=function(e){P.initialized?e(P):I.push(e)};var L=[];P.addShimListener=function(e){L.push(e)},T&&(P.shim=P.createMissingNativeApi=g,h(P,"createMissingNativeApi","shim")),p.prototype={init:function(){for(var e,t,n=this.dependencies||[],r=0,i=n.length;r<i;++r){if(t=n[r],e=M[t],!(e&&e instanceof p))throw new Error("required module '"+t+"' not found");if(e.init(),!e.supported)throw new Error("required module '"+t+"' not supported")}this.initializer(this)},fail:function(e){throw this.initialized=!0,this.supported=!1,new Error(e)},warn:function(e){P.warn("Module "+this.name+": "+e)},deprecationNotice:function(e,t){P.warn("DEPRECATED: "+e+" in module "+this.name+" is deprecated. Please use "+t+" instead")},createError:function(e){return new Error("Error in Rangy "+this.name+" module: "+e)}},P.createModule=function(e){var t,n;2==arguments.length?(t=arguments[1],n=[]):(t=arguments[2],n=arguments[1]);var r=v(e,n,t);P.initialized&&P.supported&&r.init()},P.createCoreModule=function(e,t,n){v(e,t,n)},P.RangePrototype=m,P.rangePrototype=new m,P.selectionPrototype=new y,P.createCoreModule("DomUtil",[],function(e,t){function n(e){var t;return typeof e.namespaceURI==T||null===(t=e.namespaceURI)||"http://www.w3.org/1999/xhtml"==t}function r(e){var t=e.parentNode;return 1==t.nodeType?t:null}function i(e){for(var t=0;e=e.previousSibling;)++t;return t}function o(e){switch(e.nodeType){case 7:case 10:return 0;case 3:case 8:return e.length;default:return e.childNodes.length}}function a(e,t){var n,r=[];for(n=e;n;n=n.parentNode)r.push(n);for(n=t;n;n=n.parentNode)if(I(r,n))return n;return null}function s(e,t,n){for(var r=n?t:t.parentNode;r;){if(r===e)return!0;r=r.parentNode}return!1}function u(e,t){return s(e,t,!0)}function c(e,t,n){for(var r,i=n?e:e.parentNode;i;){if(r=i.parentNode,r===t)return i;i=r}return null}function l(e){var t=e.nodeType;return 3==t||4==t||8==t}function f(e){if(!e)return!1;var t=e.nodeType;return 3==t||8==t}function d(e,t){var n=t.nextSibling,r=t.parentNode;return n?r.insertBefore(e,n):r.appendChild(e),e}function h(e,t,n){var r=e.cloneNode(!1);if(r.deleteData(0,t),e.deleteData(t,e.length-t),d(r,e),n)for(var o,a=0;o=n[a++];)o.node==e&&o.offset>t?(o.node=r,o.offset-=t):o.node==e.parentNode&&o.offset>i(e)&&++o.offset;return r}function g(e){if(9==e.nodeType)return e;if(typeof e.ownerDocument!=T)return e.ownerDocument;if(typeof e.document!=T)return e.document;if(e.parentNode)return g(e.parentNode);throw t.createError("getDocument: no document found for node")}function p(e){var n=g(e);if(typeof n.defaultView!=T)return n.defaultView;if(typeof n.parentWindow!=T)return n.parentWindow;throw t.createError("Cannot get a window object for node")}function v(e){if(typeof e.contentDocument!=T)return e.contentDocument;if(typeof e.contentWindow!=T)return e.contentWindow.document;throw t.createError("getIframeDocument: No Document object found for iframe element")}function m(e){if(typeof e.contentWindow!=T)return e.contentWindow;if(typeof e.contentDocument!=T)return e.contentDocument.defaultView;throw t.createError("getIframeWindow: No Window object found for iframe element")}function y(e){return e&&A.isHostMethod(e,"setTimeout")&&A.isHostObject(e,"document")}function b(e,t,n){var r;if(e?A.isHostProperty(e,"nodeType")?r=1==e.nodeType&&"iframe"==e.tagName.toLowerCase()?v(e):g(e):y(e)&&(r=e.document):r=document,!r)throw t.createError(n+"(): Parameter must be a Window object or DOM node");return r}function S(e){for(var t;t=e.parentNode;)e=t;return e}function C(e,n,r,o){var s,u,l,f,d;if(e==r)return n===o?0:n<o?-1:1;if(s=c(r,e,!0))return n<=i(s)?-1:1;if(s=c(e,r,!0))return i(s)<o?-1:1;if(u=a(e,r),!u)throw new Error("comparePoints error: nodes have no common ancestor");if(l=e===u?u:c(e,u,!0),f=r===u?u:c(r,u,!0),l===f)throw t.createError("comparePoints got to case 4 and childA and childB are the same!");for(d=u.firstChild;d;){if(d===l)return-1;if(d===f)return 1;d=d.nextSibling}}function w(e){var t;try{return t=e.parentNode,!1}catch(e){return!0}}function N(e){if(!e)return"[No node]";if(L&&w(e))return"[Broken node]";if(l(e))return'"'+e.data+'"';if(1==e.nodeType){var t=e.id?' id="'+e.id+'"':"";return"<"+e.nodeName+t+">[index:"+i(e)+",length:"+e.childNodes.length+"]["+(e.innerHTML||"[innerHTML not supported]").slice(0,25)+"]"}return e.nodeName}function R(e){for(var t,n=g(e).createDocumentFragment();t=e.firstChild;)n.appendChild(t);return n}function _(e,t,n){var r=P(e),i=e.createElement("div");i.contentEditable=""+!!n,t&&(i.innerHTML=t);var o=r.firstChild;return o?r.insertBefore(i,o):r.appendChild(i),i}function E(e){return e.parentNode.removeChild(e)}function O(e){this.root=e,this._next=e}function x(e){return new O(e)}function k(e,t){this.node=e,this.offset=t}function M(e){this.code=this[e],this.codeName=e,this.message="DOMException: "+this.codeName}var T="undefined",A=e.util,P=A.getBody;A.areHostMethods(document,["createDocumentFragment","createElement","createTextNode"])||t.fail("document missing a Node creation method"),A.isHostMethod(document,"getElementsByTagName")||t.fail("document missing getElementsByTagName method");var B=document.createElement("div");A.areHostMethods(B,["insertBefore","appendChild","cloneNode"]||!A.areHostObjects(B,["previousSibling","nextSibling","childNodes","parentNode"]))||t.fail("Incomplete Element implementation"),A.isHostProperty(B,"innerHTML")||t.fail("Element is missing innerHTML property");var F=document.createTextNode("test");A.areHostMethods(F,["splitText","deleteData","insertData","appendData","cloneNode"]||!A.areHostObjects(B,["previousSibling","nextSibling","childNodes","parentNode"])||!A.areHostProperties(F,["data"]))||t.fail("Incomplete Text Node implementation");var I=function(e,t){for(var n=e.length;n--;)if(e[n]===t)return!0;return!1},L=!1;!function(){var t=document.createElement("b");t.innerHTML="1";var n=t.firstChild;t.innerHTML="<br />",L=w(n),e.features.crashyTextNodes=L}();var D;typeof window.getComputedStyle!=T?D=function(e,t){return p(e).getComputedStyle(e,null)[t]}:typeof document.documentElement.currentStyle!=T?D=function(e,t){return e.currentStyle?e.currentStyle[t]:""}:t.fail("No means of obtaining computed style properties found"),O.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){var e,t,n=this._current=this._next;if(this._current)if(e=n.firstChild)this._next=e;else{for(t=null;n!==this.root&&!(t=n.nextSibling);)n=n.parentNode;this._next=t}return this._current},detach:function(){this._current=this._next=this.root=null}},k.prototype={equals:function(e){return!!e&&this.node===e.node&&this.offset==e.offset},inspect:function(){return"[DomPosition("+N(this.node)+":"+this.offset+")]"},toString:function(){return this.inspect()}},M.prototype={INDEX_SIZE_ERR:1,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INVALID_STATE_ERR:11,INVALID_NODE_TYPE_ERR:24},M.prototype.toString=function(){return this.message},e.dom={arrayContains:I,isHtmlNamespace:n,parentElement:r,getNodeIndex:i,getNodeLength:o,getCommonAncestor:a,isAncestorOf:s,isOrIsAncestorOf:u,getClosestAncestorIn:c,isCharacterDataNode:l,isTextOrCommentNode:f,insertAfter:d,splitDataNode:h,getDocument:g,getWindow:p,getIframeWindow:m,getIframeDocument:v,getBody:P,isWindow:y,getContentDocument:b,getRootContainer:S,comparePoints:C,isBrokenNode:w,inspectNode:N,getComputedStyleProperty:D,createTestElement:_,removeNode:E,fragmentFromNodeChildren:R,createIterator:x,DomPosition:k},e.DOMException=M}),P.createCoreModule("DomRange",["DomUtil"],function(e,t){function n(e,t){return 3!=e.nodeType&&(W(e,t.startContainer)||W(e,t.endContainer))}function r(e){return e.document||V(e.startContainer)}function i(e){return $(e.startContainer)}function o(e){return new L(e.parentNode,j(e))}function a(e){return new L(e.parentNode,j(e)+1)}function s(e,t,n){var r=11==e.nodeType?e.firstChild:e;return H(t)?n==t.length?F.insertAfter(e,t):t.parentNode.insertBefore(e,0==n?t:q(t,n)):n>=t.childNodes.length?t.appendChild(e):t.insertBefore(e,t.childNodes[n]),r}function u(e,t,n){if(_(e),_(t),r(t)!=r(e))throw new D("WRONG_DOCUMENT_ERR");var i=z(e.startContainer,e.startOffset,t.endContainer,t.endOffset),o=z(e.endContainer,e.endOffset,t.startContainer,t.startOffset);return n?i<=0&&o>=0:i<0&&o>0}function c(e){for(var t,n,i,o=r(e.range).createDocumentFragment();n=e.next();){if(t=e.isPartiallySelectedSubtree(),n=n.cloneNode(!t),t&&(i=e.getSubtreeIterator(),n.appendChild(c(i)),i.detach()),10==n.nodeType)throw new D("HIERARCHY_REQUEST_ERR");o.appendChild(n)}return o}function l(e,t,n){var r,i;n=n||{stop:!1};for(var o,a;o=e.next();)if(e.isPartiallySelectedSubtree()){if(t(o)===!1)return void(n.stop=!0);if(a=e.getSubtreeIterator(),l(a,t,n),a.detach(),n.stop)return}else for(r=F.createIterator(o);i=r.next();)if(t(i)===!1)return void(n.stop=!0)}function f(e){for(var t;e.next();)e.isPartiallySelectedSubtree()?(t=e.getSubtreeIterator(),f(t),t.detach()):e.remove()}function d(e){for(var t,n,i=r(e.range).createDocumentFragment();t=e.next();){if(e.isPartiallySelectedSubtree()?(t=t.cloneNode(!1),n=e.getSubtreeIterator(),t.appendChild(d(n)),n.detach()):e.remove(),10==t.nodeType)throw new D("HIERARCHY_REQUEST_ERR");i.appendChild(t)}return i}function h(e,t,n){var r,i=!(!t||!t.length),o=!!n;i&&(r=new RegExp("^("+t.join("|")+")$"));var a=[];return l(new p(e,!1),function(t){if((!i||r.test(t.nodeType))&&(!o||n(t))){var s=e.startContainer;if(t!=s||!H(s)||e.startOffset!=s.length){var u=e.endContainer;t==u&&H(u)&&0==e.endOffset||a.push(t)}}}),a}function g(e){var t="undefined"==typeof e.getName?"Range":e.getName();return"["+t+"("+F.inspectNode(e.startContainer)+":"+e.startOffset+", "+F.inspectNode(e.endContainer)+":"+e.endOffset+")]"}function p(e,t){if(this.range=e,this.clonePartiallySelectedTextNodes=t,!e.collapsed){this.sc=e.startContainer,this.so=e.startOffset,this.ec=e.endContainer,this.eo=e.endOffset;var n=e.commonAncestorContainer;this.sc===this.ec&&H(this.sc)?(this.isSingleCharacterDataNode=!0,this._first=this._last=this._next=this.sc):(this._first=this._next=this.sc!==n||H(this.sc)?U(this.sc,n,!0):this.sc.childNodes[this.so],this._last=this.ec!==n||H(this.ec)?U(this.ec,n,!0):this.ec.childNodes[this.eo-1])}}function v(e){return function(t,n){for(var r,i=n?t:t.parentNode;i;){if(r=i.nodeType,K(e,r))return i;i=i.parentNode}return null}}function m(e,t){if(ie(e,t))throw new D("INVALID_NODE_TYPE_ERR")}function y(e,t){if(!K(t,e.nodeType))throw new D("INVALID_NODE_TYPE_ERR")}function b(e,t){if(t<0||t>(H(e)?e.length:e.childNodes.length))throw new D("INDEX_SIZE_ERR")}function S(e,t){if(ne(e,!0)!==ne(t,!0))throw new D("WRONG_DOCUMENT_ERR")}function C(e){if(re(e,!0))throw new D("NO_MODIFICATION_ALLOWED_ERR")}function w(e,t){if(!e)throw new D(t)}function N(e,t){return t<=(H(e)?e.length:e.childNodes.length)}function R(e){return!!e.startContainer&&!!e.endContainer&&!(Q&&(F.isBrokenNode(e.startContainer)||F.isBrokenNode(e.endContainer)))&&$(e.startContainer)==$(e.endContainer)&&N(e.startContainer,e.startOffset)&&N(e.endContainer,e.endOffset)}function _(e){if(!R(e))throw new Error("Range error: Range is not valid. This usually happens after DOM mutation. Range: ("+e.inspect()+")")}function E(e,t){_(e);var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset,a=n===i;H(i)&&o>0&&o<i.length&&q(i,o,t),H(n)&&r>0&&r<n.length&&(n=q(n,r,t),a?(o-=r,i=n):i==n.parentNode&&o>=j(n)&&o++,r=0),e.setStartAndEnd(n,r,i,o)}function O(e){_(e);var t=e.commonAncestorContainer.parentNode.cloneNode(!1);return t.appendChild(e.cloneContents()),t.innerHTML}function x(e){e.START_TO_START=ce,e.START_TO_END=le,e.END_TO_END=fe,e.END_TO_START=de,e.NODE_BEFORE=he,e.NODE_AFTER=ge,e.NODE_BEFORE_AND_AFTER=pe,e.NODE_INSIDE=ve}function k(e){x(e),x(e.prototype)}function M(e,t){return function(){_(this);var n,r,i=this.startContainer,o=this.startOffset,s=this.commonAncestorContainer,u=new p(this,!0);i!==s&&(n=U(i,s,!0),r=a(n),i=r.node,o=r.offset),l(u,C),u.reset();var c=e(u);return u.detach(),t(this,i,o,i,o),c}}function T(t,r){function i(e,t){return function(n){y(n,Z),y($(n),J);var r=(e?o:a)(n);(t?s:u)(this,r.node,r.offset)}}function s(e,t,n){var i=e.endContainer,o=e.endOffset;t===e.startContainer&&n===e.startOffset||($(t)==$(i)&&1!=z(t,n,i,o)||(i=t,o=n),r(e,t,n,i,o))}function u(e,t,n){var i=e.startContainer,o=e.startOffset;t===e.endContainer&&n===e.endOffset||($(t)==$(i)&&z(t,n,i,o)!=-1||(i=t,o=n),r(e,i,o,t,n))}var c=function(){};c.prototype=e.rangePrototype,t.prototype=new c,I.extend(t.prototype,{setStart:function(e,t){m(e,!0),b(e,t),s(this,e,t)},setEnd:function(e,t){m(e,!0),b(e,t),u(this,e,t)},setStartAndEnd:function(){var e=arguments,t=e[0],n=e[1],i=t,o=n;switch(e.length){case 3:o=e[2];break;case 4:i=e[2],o=e[3]}r(this,t,n,i,o)},setBoundary:function(e,t,n){this["set"+(n?"Start":"End")](e,t)},setStartBefore:i(!0,!0),setStartAfter:i(!1,!0),setEndBefore:i(!0,!1),setEndAfter:i(!1,!1),collapse:function(e){_(this),e?r(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset):r(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)},selectNodeContents:function(e){m(e,!0),r(this,e,0,e,G(e))},selectNode:function(e){m(e,!1),y(e,Z);var t=o(e),n=a(e);r(this,t.node,t.offset,n.node,n.offset)},extractContents:M(d,r),deleteContents:M(f,r),canSurroundContents:function(){_(this),C(this.startContainer),C(this.endContainer);var e=new p(this,!0),t=e._first&&n(e._first,this)||e._last&&n(e._last,this);return e.detach(),!t},splitBoundaries:function(){E(this)},splitBoundariesPreservingPositions:function(e){E(this,e)},normalizeBoundaries:function(){_(this);var e,t=this.startContainer,n=this.startOffset,i=this.endContainer,o=this.endOffset,a=function(e){var t=e.nextSibling;t&&t.nodeType==e.nodeType&&(i=e,o=e.length,e.appendData(t.data),Y(t))},s=function(e){var r=e.previousSibling;if(r&&r.nodeType==e.nodeType){t=e;var a=e.length;if(n=r.length,e.insertData(0,r.data),Y(r),t==i)o+=n,i=t;else if(i==e.parentNode){var s=j(e);o==s?(i=e,o=a):o>s&&o--}}},u=!0;if(H(i))o==i.length?a(i):0==o&&(e=i.previousSibling,e&&e.nodeType==i.nodeType&&(o=e.length,t==i&&(u=!1),e.appendData(i.data),Y(i),i=e));else{if(o>0){var c=i.childNodes[o-1];c&&H(c)&&a(c)}u=!this.collapsed}if(u){if(H(t))0==n?s(t):n==t.length&&(e=t.nextSibling,e&&e.nodeType==t.nodeType&&(i==e&&(i=t,o+=t.length),t.appendData(e.data),Y(e)));else if(n<t.childNodes.length){var l=t.childNodes[n];l&&H(l)&&s(l)}}else t=i,n=o;r(this,t,n,i,o)},collapseToPoint:function(e,t){m(e,!0),b(e,t),this.setStartAndEnd(e,t)}}),k(t)}function A(e){e.collapsed=e.startContainer===e.endContainer&&e.startOffset===e.endOffset,e.commonAncestorContainer=e.collapsed?e.startContainer:F.getCommonAncestor(e.startContainer,e.endContainer)}function P(e,t,n,r,i){e.startContainer=t,e.startOffset=n,e.endContainer=r,e.endOffset=i,e.document=F.getDocument(t),A(e)}function B(e){this.startContainer=e,this.startOffset=0,this.endContainer=e,this.endOffset=0,this.document=e,A(this)}var F=e.dom,I=e.util,L=F.DomPosition,D=e.DOMException,H=F.isCharacterDataNode,j=F.getNodeIndex,W=F.isOrIsAncestorOf,V=F.getDocument,z=F.comparePoints,q=F.splitDataNode,U=F.getClosestAncestorIn,G=F.getNodeLength,K=F.arrayContains,$=F.getRootContainer,Q=e.features.crashyTextNodes,Y=F.removeNode;p.prototype={_current:null,_next:null,_first:null,_last:null,isSingleCharacterDataNode:!1,reset:function(){this._current=null,this._next=this._first},hasNext:function(){return!!this._next},next:function(){var e=this._current=this._next;return e&&(this._next=e!==this._last?e.nextSibling:null,H(e)&&this.clonePartiallySelectedTextNodes&&(e===this.ec&&(e=e.cloneNode(!0)).deleteData(this.eo,e.length-this.eo),this._current===this.sc&&(e=e.cloneNode(!0)).deleteData(0,this.so))),e},remove:function(){var e,t,n=this._current;!H(n)||n!==this.sc&&n!==this.ec?n.parentNode&&Y(n):(e=n===this.sc?this.so:0,t=n===this.ec?this.eo:n.length,e!=t&&n.deleteData(e,t-e))},isPartiallySelectedSubtree:function(){var e=this._current;return n(e,this.range)},getSubtreeIterator:function(){var e;if(this.isSingleCharacterDataNode)e=this.range.cloneRange(),e.collapse(!1);else{e=new B(r(this.range));var t=this._current,n=t,i=0,o=t,a=G(t);W(t,this.sc)&&(n=this.sc,i=this.so),W(t,this.ec)&&(o=this.ec,a=this.eo),P(e,n,i,o,a)}return new p(e,this.clonePartiallySelectedTextNodes)},detach:function(){this.range=this._current=this._next=this._first=this._last=this.sc=this.so=this.ec=this.eo=null}};var Z=[1,3,4,5,7,8,10],J=[2,9,11],X=[5,6,10,12],ee=[1,3,4,5,7,8,10,11],te=[1,3,4,5,7,8],ne=v([9,11]),re=v(X),ie=v([6,10,12]),oe=document.createElement("style"),ae=!1;try{oe.innerHTML="<b>x</b>",ae=3==oe.firstChild.nodeType}catch(e){}e.features.htmlParsingConforms=ae;var se=ae?function(e){var t=this.startContainer,n=V(t);if(!t)throw new D("INVALID_STATE_ERR");var r=null;return 1==t.nodeType?r=t:H(t)&&(r=F.parentElement(t)),r=null===r||"HTML"==r.nodeName&&F.isHtmlNamespace(V(r).documentElement)&&F.isHtmlNamespace(r)?n.createElement("body"):r.cloneNode(!1),r.innerHTML=e,F.fragmentFromNodeChildren(r)}:function(e){var t=r(this),n=t.createElement("body");return n.innerHTML=e,F.fragmentFromNodeChildren(n)},ue=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],ce=0,le=1,fe=2,de=3,he=0,ge=1,pe=2,ve=3;I.extend(e.rangePrototype,{compareBoundaryPoints:function(e,t){_(this),S(this.startContainer,t.startContainer);var n,r,i,o,a=e==de||e==ce?"start":"end",s=e==le||e==ce?"start":"end";return n=this[a+"Container"],r=this[a+"Offset"],i=t[s+"Container"],o=t[s+"Offset"],z(n,r,i,o)},insertNode:function(e){if(_(this),y(e,ee),C(this.startContainer),W(e,this.startContainer))throw new D("HIERARCHY_REQUEST_ERR");var t=s(e,this.startContainer,this.startOffset);this.setStartBefore(t)},cloneContents:function(){_(this);var e,t;if(this.collapsed)return r(this).createDocumentFragment();if(this.startContainer===this.endContainer&&H(this.startContainer))return e=this.startContainer.cloneNode(!0),e.data=e.data.slice(this.startOffset,this.endOffset),t=r(this).createDocumentFragment(),t.appendChild(e),t;var n=new p(this,!0);return e=c(n),n.detach(),e},canSurroundContents:function(){_(this),C(this.startContainer),C(this.endContainer);var e=new p(this,!0),t=e._first&&n(e._first,this)||e._last&&n(e._last,this);return e.detach(),!t},surroundContents:function(e){if(y(e,te),!this.canSurroundContents())throw new D("INVALID_STATE_ERR");var t=this.extractContents();if(e.hasChildNodes())for(;e.lastChild;)e.removeChild(e.lastChild);s(e,this.startContainer,this.startOffset),e.appendChild(t),this.selectNode(e)},cloneRange:function(){_(this);for(var e,t=new B(r(this)),n=ue.length;n--;)e=ue[n],t[e]=this[e];return t},toString:function(){_(this);var e=this.startContainer;if(e===this.endContainer&&H(e))return 3==e.nodeType||4==e.nodeType?e.data.slice(this.startOffset,this.endOffset):"";var t=[],n=new p(this,!0);return l(n,function(e){3!=e.nodeType&&4!=e.nodeType||t.push(e.data)}),n.detach(),t.join("")},compareNode:function(e){_(this);var t=e.parentNode,n=j(e);if(!t)throw new D("NOT_FOUND_ERR");var r=this.comparePoint(t,n),i=this.comparePoint(t,n+1);return r<0?i>0?pe:he:i>0?ge:ve},comparePoint:function(e,t){return _(this),w(e,"HIERARCHY_REQUEST_ERR"),S(e,this.startContainer),z(e,t,this.startContainer,this.startOffset)<0?-1:z(e,t,this.endContainer,this.endOffset)>0?1:0},createContextualFragment:se,toHtml:function(){return O(this)},intersectsNode:function(e,t){if(_(this),$(e)!=i(this))return!1;var n=e.parentNode,r=j(e);if(!n)return!0;var o=z(n,r,this.endContainer,this.endOffset),a=z(n,r+1,this.startContainer,this.startOffset);return t?o<=0&&a>=0:o<0&&a>0},isPointInRange:function(e,t){return _(this),w(e,"HIERARCHY_REQUEST_ERR"),S(e,this.startContainer),z(e,t,this.startContainer,this.startOffset)>=0&&z(e,t,this.endContainer,this.endOffset)<=0},intersectsRange:function(e){return u(this,e,!1)},intersectsOrTouchesRange:function(e){return u(this,e,!0)},intersection:function(e){if(this.intersectsRange(e)){var t=z(this.startContainer,this.startOffset,e.startContainer,e.startOffset),n=z(this.endContainer,this.endOffset,e.endContainer,e.endOffset),r=this.cloneRange();return t==-1&&r.setStart(e.startContainer,e.startOffset),1==n&&r.setEnd(e.endContainer,e.endOffset),r}return null},union:function(e){if(this.intersectsOrTouchesRange(e)){var t=this.cloneRange();return z(e.startContainer,e.startOffset,this.startContainer,this.startOffset)==-1&&t.setStart(e.startContainer,e.startOffset),1==z(e.endContainer,e.endOffset,this.endContainer,this.endOffset)&&t.setEnd(e.endContainer,e.endOffset),t}throw new D("Ranges do not intersect")},containsNode:function(e,t){return t?this.intersectsNode(e,!1):this.compareNode(e)==ve},containsNodeContents:function(e){return this.comparePoint(e,0)>=0&&this.comparePoint(e,G(e))<=0;
},containsRange:function(e){var t=this.intersection(e);return null!==t&&e.equals(t)},containsNodeText:function(e){var t=this.cloneRange();t.selectNode(e);var n=t.getNodes([3]);if(n.length>0){t.setStart(n[0],0);var r=n.pop();return t.setEnd(r,r.length),this.containsRange(t)}return this.containsNodeContents(e)},getNodes:function(e,t){return _(this),h(this,e,t)},getDocument:function(){return r(this)},collapseBefore:function(e){this.setEndBefore(e),this.collapse(!1)},collapseAfter:function(e){this.setStartAfter(e),this.collapse(!0)},getBookmark:function(t){var n=r(this),i=e.createRange(n);t=t||F.getBody(n),i.selectNodeContents(t);var o=this.intersection(i),a=0,s=0;return o&&(i.setEnd(o.startContainer,o.startOffset),a=i.toString().length,s=a+o.toString().length),{start:a,end:s,containerNode:t}},moveToBookmark:function(e){var t=e.containerNode,n=0;this.setStart(t,0),this.collapse(!0);for(var r,i,o,a,s=[t],u=!1,c=!1;!c&&(r=s.pop());)if(3==r.nodeType)i=n+r.length,!u&&e.start>=n&&e.start<=i&&(this.setStart(r,e.start-n),u=!0),u&&e.end>=n&&e.end<=i&&(this.setEnd(r,e.end-n),c=!0),n=i;else for(a=r.childNodes,o=a.length;o--;)s.push(a[o])},getName:function(){return"DomRange"},equals:function(e){return B.rangesEqual(this,e)},isValid:function(){return R(this)},inspect:function(){return g(this)},detach:function(){}}),T(B,P),I.extend(B,{rangeProperties:ue,RangeIterator:p,copyComparisonConstants:k,createPrototypeRange:T,inspect:g,toHtml:O,getRangeDocument:r,rangesEqual:function(e,t){return e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset}}),e.DomRange=B}),P.createCoreModule("WrappedRange",["DomRange"],function(e,t){var n,r,i=e.dom,o=e.util,a=i.DomPosition,s=e.DomRange,u=i.getBody,c=i.getContentDocument,l=i.isCharacterDataNode;if(e.features.implementsDomRange&&!function(){function r(e){for(var t,n=d.length;n--;)t=d[n],e[t]=e.nativeRange[t];e.collapsed=e.startContainer===e.endContainer&&e.startOffset===e.endOffset}function a(e,t,n,r,i){var o=e.startContainer!==t||e.startOffset!=n,a=e.endContainer!==r||e.endOffset!=i,s=!e.equals(e.nativeRange);(o||a||s)&&(e.setEnd(r,i),e.setStart(t,n))}var l,f,d=s.rangeProperties;n=function(e){if(!e)throw t.createError("WrappedRange: Range must be specified");this.nativeRange=e,r(this)},s.createPrototypeRange(n,a),l=n.prototype,l.selectNode=function(e){this.nativeRange.selectNode(e),r(this)},l.cloneContents=function(){return this.nativeRange.cloneContents()},l.surroundContents=function(e){this.nativeRange.surroundContents(e),r(this)},l.collapse=function(e){this.nativeRange.collapse(e),r(this)},l.cloneRange=function(){return new n(this.nativeRange.cloneRange())},l.refresh=function(){r(this)},l.toString=function(){return this.nativeRange.toString()};var h=document.createTextNode("test");u(document).appendChild(h);var g=document.createRange();g.setStart(h,0),g.setEnd(h,0);try{g.setStart(h,1),l.setStart=function(e,t){this.nativeRange.setStart(e,t),r(this)},l.setEnd=function(e,t){this.nativeRange.setEnd(e,t),r(this)},f=function(e){return function(t){this.nativeRange[e](t),r(this)}}}catch(e){l.setStart=function(e,t){try{this.nativeRange.setStart(e,t)}catch(n){this.nativeRange.setEnd(e,t),this.nativeRange.setStart(e,t)}r(this)},l.setEnd=function(e,t){try{this.nativeRange.setEnd(e,t)}catch(n){this.nativeRange.setStart(e,t),this.nativeRange.setEnd(e,t)}r(this)},f=function(e,t){return function(n){try{this.nativeRange[e](n)}catch(r){this.nativeRange[t](n),this.nativeRange[e](n)}r(this)}}}l.setStartBefore=f("setStartBefore","setEndBefore"),l.setStartAfter=f("setStartAfter","setEndAfter"),l.setEndBefore=f("setEndBefore","setStartBefore"),l.setEndAfter=f("setEndAfter","setStartAfter"),l.selectNodeContents=function(e){this.setStartAndEnd(e,0,i.getNodeLength(e))},g.selectNodeContents(h),g.setEnd(h,3);var p=document.createRange();p.selectNodeContents(h),p.setEnd(h,4),p.setStart(h,2),g.compareBoundaryPoints(g.START_TO_END,p)==-1&&1==g.compareBoundaryPoints(g.END_TO_START,p)?l.compareBoundaryPoints=function(e,t){return t=t.nativeRange||t,e==t.START_TO_END?e=t.END_TO_START:e==t.END_TO_START&&(e=t.START_TO_END),this.nativeRange.compareBoundaryPoints(e,t)}:l.compareBoundaryPoints=function(e,t){return this.nativeRange.compareBoundaryPoints(e,t.nativeRange||t)};var v=document.createElement("div");v.innerHTML="123";var m=v.firstChild,y=u(document);y.appendChild(v),g.setStart(m,1),g.setEnd(m,2),g.deleteContents(),"13"==m.data&&(l.deleteContents=function(){this.nativeRange.deleteContents(),r(this)},l.extractContents=function(){var e=this.nativeRange.extractContents();return r(this),e}),y.removeChild(v),y=null,o.isHostMethod(g,"createContextualFragment")&&(l.createContextualFragment=function(e){return this.nativeRange.createContextualFragment(e)}),u(document).removeChild(h),l.getName=function(){return"WrappedRange"},e.WrappedRange=n,e.createNativeRange=function(e){return e=c(e,t,"createNativeRange"),e.createRange()}}(),e.features.implementsTextRange){var f=function(e){var t=e.parentElement(),n=e.duplicate();n.collapse(!0);var r=n.parentElement();n=e.duplicate(),n.collapse(!1);var o=n.parentElement(),a=r==o?r:i.getCommonAncestor(r,o);return a==t?a:i.getCommonAncestor(t,a)},d=function(e){return 0==e.compareEndPoints("StartToEnd",e)},h=function(e,t,n,r,o){var s=e.duplicate();s.collapse(n);var u=s.parentElement();if(i.isOrIsAncestorOf(t,u)||(u=t),!u.canHaveHTML){var c=new a(u.parentNode,i.getNodeIndex(u));return{boundaryPosition:c,nodeInfo:{nodeIndex:c.offset,containerElement:c.node}}}var f=i.getDocument(u).createElement("span");f.parentNode&&i.removeNode(f);for(var d,h,g,p,v,m=n?"StartToStart":"StartToEnd",y=o&&o.containerElement==u?o.nodeIndex:0,b=u.childNodes.length,S=b,C=S;;){if(C==b?u.appendChild(f):u.insertBefore(f,u.childNodes[C]),s.moveToElementText(f),d=s.compareEndPoints(m,e),0==d||y==S)break;if(d==-1){if(S==y+1)break;y=C}else S=S==y+1?y:C;C=Math.floor((y+S)/2),u.removeChild(f)}if(v=f.nextSibling,d==-1&&v&&l(v)){s.setEndPoint(n?"EndToStart":"EndToEnd",e);var w;if(/[\r\n]/.test(v.data)){var N=s.duplicate(),R=N.text.replace(/\r\n/g,"\r").length;for(w=N.moveStart("character",R);(d=N.compareEndPoints("StartToEnd",N))==-1;)w++,N.moveStart("character",1)}else w=s.text.length;p=new a(v,w)}else h=(r||!n)&&f.previousSibling,g=(r||n)&&f.nextSibling,p=g&&l(g)?new a(g,0):h&&l(h)?new a(h,h.data.length):new a(u,i.getNodeIndex(f));return i.removeNode(f),{boundaryPosition:p,nodeInfo:{nodeIndex:C,containerElement:u}}},g=function(e,t){var n,r,o,a,s=e.offset,c=i.getDocument(e.node),f=u(c).createTextRange(),d=l(e.node);return d?(n=e.node,r=n.parentNode):(a=e.node.childNodes,n=s<a.length?a[s]:null,r=e.node),o=c.createElement("span"),o.innerHTML="&#feff;",n?r.insertBefore(o,n):r.appendChild(o),f.moveToElementText(o),f.collapse(!t),r.removeChild(o),d&&f[t?"moveStart":"moveEnd"]("character",s),f};r=function(e){this.textRange=e,this.refresh()},r.prototype=new s(document),r.prototype.refresh=function(){var e,t,n,r=f(this.textRange);d(this.textRange)?t=e=h(this.textRange,r,!0,!0).boundaryPosition:(n=h(this.textRange,r,!0,!1),e=n.boundaryPosition,t=h(this.textRange,r,!1,!1,n.nodeInfo).boundaryPosition),this.setStart(e.node,e.offset),this.setEnd(t.node,t.offset)},r.prototype.getName=function(){return"WrappedTextRange"},s.copyComparisonConstants(r);var p=function(e){if(e.collapsed)return g(new a(e.startContainer,e.startOffset),!0);var t=g(new a(e.startContainer,e.startOffset),!0),n=g(new a(e.endContainer,e.endOffset),!1),r=u(s.getRangeDocument(e)).createTextRange();return r.setEndPoint("StartToStart",t),r.setEndPoint("EndToEnd",n),r};if(r.rangeToTextRange=p,r.prototype.toTextRange=function(){return p(this)},e.WrappedTextRange=r,!e.features.implementsDomRange||e.config.preferTextRange){var v=function(e){return e("return this;")()}(Function);"undefined"==typeof v.Range&&(v.Range=r),e.createNativeRange=function(e){return e=c(e,t,"createNativeRange"),u(e).createTextRange()},e.WrappedRange=r}}e.createRange=function(n){return n=c(n,t,"createRange"),new e.WrappedRange(e.createNativeRange(n))},e.createRangyRange=function(e){return e=c(e,t,"createRangyRange"),new s(e)},o.createAliasForDeprecatedMethod(e,"createIframeRange","createRange"),o.createAliasForDeprecatedMethod(e,"createIframeRangyRange","createRangyRange"),e.addShimListener(function(t){var n=t.document;"undefined"==typeof n.createRange&&(n.createRange=function(){return e.createRange(n)}),n=t=null})}),P.createCoreModule("WrappedSelection",["DomRange","WrappedRange"],function(e,t){function n(e){return"string"==typeof e?/^backward(s)?$/i.test(e):!!e}function r(e,n){if(e){if(x.isWindow(e))return e;if(e instanceof m)return e.win;var r=x.getContentDocument(e,t,n);return x.getWindow(r)}return window}function i(e){return r(e,"getWinSelection").getSelection()}function o(e){return r(e,"getDocSelection").document.selection}function a(e){var t=!1;return e.anchorNode&&(t=1==x.comparePoints(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)),t}function s(e,t,n){var r=n?"end":"start",i=n?"start":"end";e.anchorNode=t[r+"Container"],e.anchorOffset=t[r+"Offset"],e.focusNode=t[i+"Container"],e.focusOffset=t[i+"Offset"]}function u(e){var t=e.nativeSelection;e.anchorNode=t.anchorNode,e.anchorOffset=t.anchorOffset,e.focusNode=t.focusNode,e.focusOffset=t.focusOffset}function c(e){e.anchorNode=e.focusNode=null,e.anchorOffset=e.focusOffset=0,e.rangeCount=0,e.isCollapsed=!0,e._ranges.length=0}function l(t){var n;return t instanceof T?(n=e.createNativeRange(t.getDocument()),n.setEnd(t.endContainer,t.endOffset),n.setStart(t.startContainer,t.startOffset)):t instanceof A?n=t.nativeRange:F.implementsDomRange&&t instanceof x.getWindow(t.startContainer).Range&&(n=t),n}function f(e){if(!e.length||1!=e[0].nodeType)return!1;for(var t=1,n=e.length;t<n;++t)if(!x.isAncestorOf(e[0],e[t]))return!1;return!0}function d(e){var n=e.getNodes();if(!f(n))throw t.createError("getSingleElementFromRange: range "+e.inspect()+" did not consist of a single element");return n[0]}function h(e){return!!e&&"undefined"!=typeof e.text}function g(e,t){var n=new A(t);e._ranges=[n],s(e,n,!1),e.rangeCount=1,e.isCollapsed=n.collapsed}function p(t){if(t._ranges.length=0,"None"==t.docSelection.type)c(t);else{var n=t.docSelection.createRange();if(h(n))g(t,n);else{t.rangeCount=n.length;for(var r,i=L(n.item(0)),o=0;o<t.rangeCount;++o)r=e.createRange(i),r.selectNode(n.item(o)),t._ranges.push(r);t.isCollapsed=1==t.rangeCount&&t._ranges[0].collapsed,s(t,t._ranges[t.rangeCount-1],!1)}}}function v(e,n){for(var r=e.docSelection.createRange(),i=d(n),o=L(r.item(0)),a=D(o).createControlRange(),s=0,u=r.length;s<u;++s)a.add(r.item(s));try{a.add(i)}catch(e){throw t.createError("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)")}a.select(),p(e)}function m(e,t,n){this.nativeSelection=e,this.docSelection=t,this._ranges=[],this.win=n,this.refresh()}function y(e){e.win=e.anchorNode=e.focusNode=e._ranges=null,e.rangeCount=e.anchorOffset=e.focusOffset=0,e.detached=!0}function b(e,t){for(var n,r,i=te.length;i--;)if(n=te[i],r=n.selection,"deleteAll"==t)y(r);else if(n.win==e)return"delete"==t?(te.splice(i,1),!0):r;return"deleteAll"==t&&(te.length=0),null}function S(e,n){for(var r,i=L(n[0].startContainer),o=D(i).createControlRange(),a=0,s=n.length;a<s;++a){r=d(n[a]);try{o.add(r)}catch(e){throw t.createError("setRanges(): Element within one of the specified Ranges could not be added to control selection (does it have layout?)")}}o.select(),p(e)}function C(e,t){if(e.win.document!=L(t))throw new P("WRONG_DOCUMENT_ERR")}function w(t){return function(n,r){var i;this.rangeCount?(i=this.getRangeAt(0),i["set"+(t?"Start":"End")](n,r)):(i=e.createRange(this.win.document),i.setStartAndEnd(n,r)),this.setSingleRange(i,this.isBackward())}}function N(e){var t=[],n=new B(e.anchorNode,e.anchorOffset),r=new B(e.focusNode,e.focusOffset),i="function"==typeof e.getName?e.getName():"Selection";if("undefined"!=typeof e.rangeCount)for(var o=0,a=e.rangeCount;o<a;++o)t[o]=T.inspect(e.getRangeAt(o));return"["+i+"(Ranges: "+t.join(", ")+")(anchor: "+n.inspect()+", focus: "+r.inspect()+"]"}e.config.checkSelectionRanges=!0;var R,_,E="boolean",O="number",x=e.dom,k=e.util,M=k.isHostMethod,T=e.DomRange,A=e.WrappedRange,P=e.DOMException,B=x.DomPosition,F=e.features,I="Control",L=x.getDocument,D=x.getBody,H=T.rangesEqual,j=M(window,"getSelection"),W=k.isHostObject(document,"selection");F.implementsWinGetSelection=j,F.implementsDocSelection=W;var V=W&&(!j||e.config.preferTextRange);if(V)R=o,e.isSelectionValid=function(e){var t=r(e,"isSelectionValid").document,n=t.selection;return"None"!=n.type||L(n.createRange().parentElement())==t};else{if(!j)return t.fail("Neither document.selection or window.getSelection() detected."),!1;R=i,e.isSelectionValid=function(){return!0}}e.getNativeSelection=R;var z=R();if(!z)return t.fail("Native selection was null (possibly issue 138?)"),!1;var q=e.createNativeRange(document),U=D(document),G=k.areHostProperties(z,["anchorNode","focusNode","anchorOffset","focusOffset"]);F.selectionHasAnchorAndFocus=G;var K=M(z,"extend");F.selectionHasExtend=K;var $=typeof z.rangeCount==O;F.selectionHasRangeCount=$;var Q=!1,Y=!0,Z=K?function(t,n){var r=T.getRangeDocument(n),i=e.createRange(r);i.collapseToPoint(n.endContainer,n.endOffset),t.addRange(l(i)),t.extend(n.startContainer,n.startOffset)}:null;k.areHostMethods(z,["addRange","getRangeAt","removeAllRanges"])&&typeof z.rangeCount==O&&F.implementsDomRange&&!function(){var t=window.getSelection();if(t){for(var n=t.rangeCount,r=n>1,i=[],o=a(t),s=0;s<n;++s)i[s]=t.getRangeAt(s);var u=x.createTestElement(document,"",!1),c=u.appendChild(document.createTextNode(" ")),l=document.createRange();if(l.setStart(c,1),l.collapse(!0),t.removeAllRanges(),t.addRange(l),Y=1==t.rangeCount,t.removeAllRanges(),!r){var f=window.navigator.appVersion.match(/Chrome\/(.*?) /);if(f&&parseInt(f[1])>=36)Q=!1;else{var d=l.cloneRange();l.setStart(c,0),d.setEnd(c,3),d.setStart(c,2),t.addRange(l),t.addRange(d),Q=2==t.rangeCount}}for(x.removeNode(u),t.removeAllRanges(),s=0;s<n;++s)0==s&&o?Z?Z(t,i[s]):(e.warn("Rangy initialization: original selection was backwards but selection has been restored forwards because the browser does not support Selection.extend"),t.addRange(i[s])):t.addRange(i[s])}}(),F.selectionSupportsMultipleRanges=Q,F.collapsedNonEditableSelectionsSupported=Y;var J,X=!1;U&&M(U,"createControlRange")&&(J=U.createControlRange(),k.areHostProperties(J,["item","add"])&&(X=!0)),F.implementsControlRange=X,_=G?function(e){return e.anchorNode===e.focusNode&&e.anchorOffset===e.focusOffset}:function(e){return!!e.rangeCount&&e.getRangeAt(e.rangeCount-1).collapsed};var ee;M(z,"getRangeAt")?ee=function(e,t){try{return e.getRangeAt(t)}catch(e){return null}}:G&&(ee=function(t){var n=L(t.anchorNode),r=e.createRange(n);return r.setStartAndEnd(t.anchorNode,t.anchorOffset,t.focusNode,t.focusOffset),r.collapsed!==this.isCollapsed&&r.setStartAndEnd(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset),r}),m.prototype=e.selectionPrototype;var te=[],ne=function(e){if(e&&e instanceof m)return e.refresh(),e;e=r(e,"getNativeSelection");var t=b(e),n=R(e),i=W?o(e):null;return t?(t.nativeSelection=n,t.docSelection=i,t.refresh()):(t=new m(n,i,e),te.push({win:e,selection:t})),t};e.getSelection=ne,k.createAliasForDeprecatedMethod(e,"getIframeSelection","getSelection");var re=m.prototype;if(!V&&G&&k.areHostMethods(z,["removeAllRanges","addRange"])){re.removeAllRanges=function(){this.nativeSelection.removeAllRanges(),c(this)};var ie=function(e,t){Z(e.nativeSelection,t),e.refresh()};$?re.addRange=function(t,r){if(X&&W&&this.docSelection.type==I)v(this,t);else if(n(r)&&K)ie(this,t);else{var i;Q?i=this.rangeCount:(this.removeAllRanges(),i=0);var o=l(t).cloneRange();try{this.nativeSelection.addRange(o)}catch(e){}if(this.rangeCount=this.nativeSelection.rangeCount,this.rangeCount==i+1){if(e.config.checkSelectionRanges){var a=ee(this.nativeSelection,this.rangeCount-1);a&&!H(a,t)&&(t=new A(a))}this._ranges[this.rangeCount-1]=t,s(this,t,se(this.nativeSelection)),this.isCollapsed=_(this)}else this.refresh()}}:re.addRange=function(e,t){n(t)&&K?ie(this,e):(this.nativeSelection.addRange(l(e)),this.refresh())},re.setRanges=function(e){if(X&&W&&e.length>1)S(this,e);else{this.removeAllRanges();for(var t=0,n=e.length;t<n;++t)this.addRange(e[t])}}}else{if(!(M(z,"empty")&&M(q,"select")&&X&&V))return t.fail("No means of selecting a Range or TextRange was found"),!1;re.removeAllRanges=function(){try{if(this.docSelection.empty(),"None"!=this.docSelection.type){var e;if(this.anchorNode)e=L(this.anchorNode);else if(this.docSelection.type==I){var t=this.docSelection.createRange();t.length&&(e=L(t.item(0)))}if(e){var n=D(e).createTextRange();n.select(),this.docSelection.empty()}}}catch(e){}c(this)},re.addRange=function(t){this.docSelection.type==I?v(this,t):(e.WrappedTextRange.rangeToTextRange(t).select(),this._ranges[0]=t,this.rangeCount=1,this.isCollapsed=this._ranges[0].collapsed,s(this,t,!1))},re.setRanges=function(e){this.removeAllRanges();var t=e.length;t>1?S(this,e):t&&this.addRange(e[0])}}re.getRangeAt=function(e){if(e<0||e>=this.rangeCount)throw new P("INDEX_SIZE_ERR");return this._ranges[e].cloneRange()};var oe;if(V)oe=function(t){var n;e.isSelectionValid(t.win)?n=t.docSelection.createRange():(n=D(t.win.document).createTextRange(),n.collapse(!0)),t.docSelection.type==I?p(t):h(n)?g(t,n):c(t)};else if(M(z,"getRangeAt")&&typeof z.rangeCount==O)oe=function(t){if(X&&W&&t.docSelection.type==I)p(t);else if(t._ranges.length=t.rangeCount=t.nativeSelection.rangeCount,t.rangeCount){for(var n=0,r=t.rangeCount;n<r;++n)t._ranges[n]=new e.WrappedRange(t.nativeSelection.getRangeAt(n));s(t,t._ranges[t.rangeCount-1],se(t.nativeSelection)),t.isCollapsed=_(t)}else c(t)};else{if(!G||typeof z.isCollapsed!=E||typeof q.collapsed!=E||!F.implementsDomRange)return t.fail("No means of obtaining a