diff --git a/packages/omire/examples/markdown/b.js b/packages/omire/examples/markdown/b.js new file mode 100644 index 000000000..7040d13c9 --- /dev/null +++ b/packages/omire/examples/markdown/b.js @@ -0,0 +1,12888 @@ +(function () { + 'use strict'; + + function getGlobal() { + if (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) { + return self || window || global || function () { + return this; + }(); + } + return global; + } + + /** Global options + * @public + * @namespace options {Object} + */ + var options = { + store: null, + root: getGlobal(), + mapping: {} + }; + + /** + * @license + * Copyright (c) 2016 The Polymer Project Authors. All rights reserved. + * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + * Code distributed by Google as part of the polymer project is also + * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ + (function () { + if ( + // No Reflect, no classes, no need for shim because native custom elements + // require ES2015 classes or Reflect. + window.Reflect === undefined || window.customElements === undefined || + // The webcomponentsjs custom elements polyfill doesn't require + // ES2015-compatible construction (`super()` or `Reflect.construct`). + window.customElements.hasOwnProperty('polyfillWrapFlushCallback')) { + return; + } + var BuiltInHTMLElement = HTMLElement; + window.HTMLElement = function HTMLElement() { + return Reflect.construct(BuiltInHTMLElement, [], this.constructor); + }; + HTMLElement.prototype = BuiltInHTMLElement.prototype; + HTMLElement.prototype.constructor = HTMLElement; + Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement); + })(); + + function cssToDom(css) { + var node = document.createElement('style'); + node.textContent = css; + return node; + } + + function npn(str) { + return str.replace(/-(\w)/g, function ($, $1) { + return $1.toUpperCase(); + }); + } + + /** Invoke or update a ref, depending on whether it is a function or object ref. + * @param {object|function} [ref=null] + * @param {any} [value] + */ + function applyRef(ref, value) { + if (ref != null) { + if (typeof ref == 'function') ref(value);else ref.current = value; + } + } + + /** + * Call a function asynchronously, as soon as possible. Makes + * use of HTML Promise to schedule the callback if available, + * otherwise falling back to `setTimeout` (mainly for IE<11). + * @type {(callback: function) => void} + */ + var defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout; + + function isArray(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + } + + function nProps(props) { + if (!props || isArray(props)) return {}; + var result = {}; + Object.keys(props).forEach(function (key) { + result[key] = props[key].value; + }); + return result; + } + + function getUse(data, paths) { + var obj = []; + paths.forEach(function (path, index) { + var isPath = typeof path === 'string'; + if (isPath) { + obj[index] = getTargetByPath(data, path); + } else { + var key = Object.keys(path)[0]; + var value = path[key]; + if (typeof value === 'string') { + obj[index] = getTargetByPath(data, value); + } else { + var tempPath = value[0]; + if (typeof tempPath === 'string') { + var tempVal = getTargetByPath(data, tempPath); + obj[index] = value[1] ? value[1](tempVal) : tempVal; + } else { + var args = []; + tempPath.forEach(function (path) { + args.push(getTargetByPath(data, path)); + }); + obj[index] = value[1].apply(null, args); + } + } + obj[key] = obj[index]; + } + }); + return obj; + } + + function getTargetByPath(origin, path) { + var arr = path.replace(/]/g, '').replace(/\[/g, '.').split('.'); + var current = origin; + for (var i = 0, len = arr.length; i < len; i++) { + current = current[arr[i]]; + } + return current; + } + + // render modes + + var ATTR_KEY = '__omiattr_'; + + // DOM properties that should NOT have "px" added when numeric + var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i; + + /** + * Check if two nodes are equivalent. + * + * @param {Node} node DOM Node to compare + * @param {VNode} vnode Virtual DOM node to compare + * @param {boolean} [hydrating=false] If true, ignores component constructors when comparing. + * @private + */ + function isSameNodeType(node, vnode, hydrating) { + if (typeof vnode === 'string' || typeof vnode === 'number') { + return node.splitText !== undefined; + } + if (typeof vnode.type === 'string') { + return !node._componentConstructor && isNamedNode(node, vnode.type); + } else if (typeof vnode.type === 'function') { + return options.mapping[node.nodeName.toLowerCase()] === vnode.type; + } + return hydrating || node._componentConstructor === vnode.type; + } + + /** + * Check if an Element has a given type, case-insensitively. + * + * @param {Element} node A DOM Element to inspect the name of. + * @param {String} type Unnormalized name to compare against. + */ + function isNamedNode(node, type) { + return node.normalizedNodeName === type || node.nodeName.toLowerCase() === type.toLowerCase(); + } + + /** + * Create an element with the given type. + * @param {string} type The DOM node to create + * @param {boolean} [isSvg=false] If `true`, creates an element within the SVG + * namespace. + * @returns {Element} The created DOM node + */ + function createNode(type, isSvg) { + /** @type {Element} */ + var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', type) : document.createElement(type); + node.normalizedNodeName = type; + return node; + } + + /** + * Remove a child node from its parent if attached. + * @param {Node} node The node to remove + */ + function removeNode(node) { + var parentNode = node.parentNode; + if (parentNode) parentNode.removeChild(node); + } + + /** + * Set a named attribute on the given Node, with special behavior for some names + * and event handlers. If `value` is `null`, the attribute/handler will be + * removed. + * @param {Element} node An element to mutate + * @param {string} name The name/key to set, such as an event or attribute name + * @param {*} old The last value that was set for this name/node pair + * @param {*} value An attribute value, such as a function to be used as an + * event handler + * @param {boolean} isSvg Are we currently diffing inside an svg? + * @private + */ + function setAccessor(node, name, old, value, isSvg) { + if (name === 'className') name = 'class'; + + if (name === 'key') { + // ignore + } else if (name === 'ref') { + applyRef(old, null); + applyRef(value, node); + } else if (name === 'class' && !isSvg) { + node.className = value || ''; + } else if (name === 'style') { + if (!value || typeof value === 'string' || typeof old === 'string') { + node.style.cssText = value || ''; + } + if (value && typeof value === 'object') { + if (typeof old !== 'string') { + for (var i in old) { + if (!(i in value)) node.style[i] = ''; + } + } + for (var _i in value) { + node.style[_i] = typeof value[_i] === 'number' && IS_NON_DIMENSIONAL.test(_i) === false ? value[_i] + 'px' : value[_i]; + } + } + } else if (name === 'dangerouslySetInnerHTML') { + if (value) node.innerHTML = value.__html || ''; + } else if (name[0] == 'o' && name[1] == 'n') { + var useCapture = name !== (name = name.replace(/Capture$/, '')); + name = name.toLowerCase().substring(2); + if (value) { + if (!old) { + node.addEventListener(name, eventProxy, useCapture); + if (name == 'tap') { + node.addEventListener('touchstart', touchStart, useCapture); + node.addEventListener('touchend', touchEnd, useCapture); + } + } + } else { + node.removeEventListener(name, eventProxy, useCapture); + if (name == 'tap') { + node.removeEventListener('touchstart', touchStart, useCapture); + node.removeEventListener('touchend', touchEnd, useCapture); + } + } + (node._listeners || (node._listeners = {}))[name] = value; + } else if (name !== 'list' && name !== 'type' && !isSvg && name in node) { + // Attempt to set a DOM property to the given value. + // IE & FF throw for certain property-value combinations. + try { + node[name] = value == null ? '' : value; + } catch (e) {} + if ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name); + } else { + var ns = isSvg && name !== (name = name.replace(/^xlink:?/, '')); + // spellcheck is treated differently than all other boolean values and + // should not be removed when the value is `false`. See: + // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-spellcheck + if (value == null || value === false) { + if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name); + } else if (typeof value !== 'function') { + if (ns) { + node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); + } else { + node.setAttribute(name, value); + } + } + } + } + + /** + * Proxy an event to hooked event handlers + * @param {Event} e The event object from the browser + * @private + */ + function eventProxy(e) { + return this._listeners[e.type](options.event && options.event(e) || e); + } + + function touchStart(e) { + this.___touchX = e.touches[0].pageX; + this.___touchY = e.touches[0].pageY; + this.___scrollTop = document.body.scrollTop; + } + + function touchEnd(e) { + if (Math.abs(e.changedTouches[0].pageX - this.___touchX) < 30 && Math.abs(e.changedTouches[0].pageY - this.___touchY) < 30 && Math.abs(document.body.scrollTop - this.___scrollTop) < 30) { + this.dispatchEvent(new CustomEvent('tap', { detail: e })); + } + } + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + /* + object-assign + (c) Sindre Sorhus + @license MIT + */ + /* eslint-disable no-unused-vars */ + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + + function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); + } + + function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } + } + + var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; + }; + + var n="function"===typeof Symbol&&Symbol.for,p=n?Symbol.for("react.element"):60103,q=n?Symbol.for("react.portal"):60106,r=n?Symbol.for("react.fragment"):60107,t=n?Symbol.for("react.strict_mode"):60108,u=n?Symbol.for("react.profiler"):60114,v=n?Symbol.for("react.provider"):60109,w=n?Symbol.for("react.context"):60110,x=n?Symbol.for("react.concurrent_mode"):60111,y=n?Symbol.for("react.forward_ref"):60112,z=n?Symbol.for("react.suspense"):60113,aa=n?Symbol.for("react.memo"): + 60115,ba=n?Symbol.for("react.lazy"):60116,A="function"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name="Invariant Violation";}a.framesToPop=1;throw a;}} + function B(a){for(var b=arguments.length-1,d="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=0;cP.length&&P.push(a);} + function S(a,b,d,c){var e=typeof a;if("undefined"===e||"boolean"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case "string":case "number":g=!0;break;case "object":switch(a.$$typeof){case p:case q:g=!0;}}if(g)return d(c,a,""===b?"."+T(a,0):b), 1;g=0;b=""===b?".":b+":";if(Array.isArray(a))for(var h=0;h=b){c=a;break}a=a.next;}while(a!==d);null===c?c=d:c===d&&(d=h, p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous= + b;}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1, null!==d?p():n=!1;}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1, e=b, null!==d?p():n=!1, v();}} + var x=Date,y="function"===typeof setTimeout?setTimeout:void 0,z="function"===typeof clearTimeout?clearTimeout:void 0,A="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b);});D=y(function(){B(C);a(exports.unstable_now());},100);} + if("object"===typeof performance&&"function"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()};}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;"undefined"!==typeof window?G=window:"undefined"!==typeof commonjsGlobal&&(G=commonjsGlobal); + if(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3];}else if("undefined"===typeof window||"function"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a);}finally{I=null;}};r=function(a){null!==I?setTimeout(r,0,a):(I=a, setTimeout(J,0,!1));};q=function(){I=null;};w=function(){return!1};}else{"undefined"!==typeof console&&("function"!==typeof A&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"), "function"!==typeof B&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0, E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f);}finally{O=!1;}}}; + var V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8), S=bb?U.postMessage(void 0):N||(N=!0, E(V));};q=function(){K=null;L=!1;M=-1;};}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4; + exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3;}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c, k=f, v();}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g;}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c, k=f, v();}}; + exports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if("object"===typeof b&&null!==b&&"number"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3;}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a, p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next;}while(f!==d);null===c?c=d:c===d&&(d=a, p()); + b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b;}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c;}a.next=a.previous=null;}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c, k=f, v();}}};exports.unstable_getCurrentPriorityLevel=function(){return g}; + exports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTimethis.eventPool.length&&this.eventPool.push(a);} + function hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb;}var kb=y$1.extend({data:null}),lb=y$1.extend({data:null}),mb=[9,13,27,32],nb=Ra&&"CompositionEvent"in window,ob=null;Ra&&"documentMode"in document&&(ob=document.documentMode); + var pb=Ra&&"TextEvent"in window&&!ob,qb=Ra&&(!nb||ob&&8=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart", + captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},tb=!1; + function ub(a,b){switch(a){case "keyup":return-1!==mb.indexOf(b.keyCode);case "keydown":return 229!==b.keyCode;case "keypress":case "mousedown":case "blur":return!0;default:return!1}}function vb(a){a=a.detail;return"object"===typeof a&&"data"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case "compositionend":return vb(b);case "keypress":if(32!==b.which)return null;tb=!0;return rb;case "textInput":return a=b.data, a===rb&&tb?null:a;default:return null}} + function yb(a,b){if(wb)return"compositionend"===a||!nb&&ub(a,b)?(a=eb(), db=cb=bb=null, wb=!1, a):null;switch(a){case "paste":return null;case "keypress":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function C$1(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;}var D$1={}; + "children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){D$1[a]=new C$1(a,0,!1,a,null);});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];D$1[b]=new C$1(b,1,!1,a[1],null);});["contentEditable","draggable","spellCheck","value"].forEach(function(a){D$1[a]=new C$1(a,2,!1,a.toLowerCase(),null);}); + ["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){D$1[a]=new C$1(a,2,!1,a,null);});"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){D$1[a]=new C$1(a,3,!1,a.toLowerCase(),null);});["checked","multiple","muted","selected"].forEach(function(a){D$1[a]=new C$1(a,3,!0,a,null);}); + ["capture","download"].forEach(function(a){D$1[a]=new C$1(a,4,!1,a,null);});["cols","rows","size","span"].forEach(function(a){D$1[a]=new C$1(a,6,!1,a,null);});["rowSpan","start"].forEach(function(a){D$1[a]=new C$1(a,5,!1,a.toLowerCase(),null);});var rc=/[\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()} + "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(rc, + sc);D$1[b]=new C$1(b,1,!1,a,null);});"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(rc,sc);D$1[b]=new C$1(b,1,!1,a,"http://www.w3.org/1999/xlink");});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(rc,sc);D$1[b]=new C$1(b,1,!1,a,"http://www.w3.org/XML/1998/namespace");});["tabIndex","crossOrigin"].forEach(function(a){D$1[a]=new C$1(a,1,!1,a.toLowerCase(),null);}); + function tc(a,b,c,d){var e=D$1.hasOwnProperty(b)?D$1[b]:null;var f=null!==e?0===e.type:d?!1:!(2zd.length&&zd.push(a);}}}var Fd={},Gd=0,Hd="_reactListenersID"+(""+Math.random()).slice(2); + function Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++, Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a} + function Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d;}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode;}c=void 0;}c=Kd(c);}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1} + function Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href;}catch(d){c=!1;}if(c)a=b.contentWindow;else break;b=Jd(a.document);}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)} + function Pd(){var a=Nd();if(Od(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType, e.nodeType;}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length); + if(null===(t=m.firstChild))break;p=m;m=t;}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode;}m=t;}b=-1===g||-1===h?null:{start:g,end:h};}else b=null;}b=b||{start:0,end:0};}else b=null;return{focusedElem:a,selectionRange:b}} + function Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start, a=d.end, void 0===a&&(a=b), "selectionStart"in c)c.selectionStart=b, c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window, a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d, d=f, f=e);e=Ld(c,f);var g=Ld(c, + d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(), b.setStart(e.node,e.offset), a.removeAllRanges(), f>d?(a.addRange(b), a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset), a.addRange(b)));}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Td=null,Ud=null,Vd=null,Wd=!1; + function Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;"selectionStart"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(), c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c, a=y$1.getPooled(Sd.select,Ud,a,b), a.type="select", a.target=Td, Qa(a), a)} + var Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g=b.length?void 0:x$1("93"), b=b[0]), c=b), null==c&&(c=""));a._wrapperState={initialValue:uc(c)};} + function de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=""+c, c!==a.value&&(a.value=c), null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d);}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b);}var fe={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"}; + function ge(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function he(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?ge(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a} + var ie=void 0,je=function(a){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)});}:a}(function(a,b){if(a.namespaceURI!==fe.svg||"innerHTML"in a)a.innerHTML=b;else{ie=ie||document.createElement("div");ie.innerHTML=""+b+"";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild);}}); + function ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b;} + var le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0, + floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a];});});function ne(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(""+b).trim():b+"px"} + function oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=ne(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e;}}var pe=objectAssign({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}); + function qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x$1("137",a,""):void 0), null!=b.dangerouslySetInnerHTML&&(null!=b.children?x$1("60"):void 0, "object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:x$1("61")), null!=b.style&&"object"!==typeof b.style?x$1("62",""):void 0);} + function re(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;default:return!0}} + function se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;dGe||(a.current=Fe[Ge], Fe[Ge]=null, Ge--);}function G$1(a,b){Ge++;Fe[Ge]=a.current;a.current=b;}var He={},H$1={current:He},I$1={current:!1},Ie=He; + function Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext=b, a.__reactInternalMemoizedMaskedChildContext=e);return e}function J$1(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F$1(I$1,a);F$1(H$1,a);}function Le(a){F$1(I$1,a);F$1(H$1,a);} + function Me(a,b,c){H$1.current!==He?x$1("168"):void 0;G$1(H$1,b,a);G$1(I$1,c,a);}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x$1("108",ic(b)||"Unknown",e);return objectAssign({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H$1.current;G$1(H$1,b,a);G$1(I$1,I$1.current,a);return!0} + function Pe(a,b,c){var d=a.stateNode;d?void 0:x$1("169");c?(b=Ne(a,b,Ie), d.__reactInternalMemoizedMergedChildContext=b, F$1(I$1,a), F$1(H$1,a), G$1(H$1,b,a)):F$1(I$1,a);G$1(I$1,c,a);}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}} + function Te(a){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)});}catch(d){}return!0} + function Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null;}function K$1(a,b,c,d){return new Ue(a,b,c,d)} + function Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if("function"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2} + function Xe(a,b){var c=a.alternate;null===c?(c=K$1(a.tag,b,a.key,a.mode), c.elementType=a.elementType, c.type=a.type, c.stateNode=a.stateNode, c.alternate=a, a.alternate=c):(c.pendingProps=b, c.effectTag=0, c.nextEffect=null, c.firstEffect=null, c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling; + c.index=a.index;c.ref=a.ref;return c} + function Ye(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)Ve(a)&&(g=1);else if("string"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K$1(12,c,b,e|4), a.elementType=Zb, a.type=Zb, a.expirationTime=f, a;case dc:return a=K$1(13,c,b,e), a.elementType=dc, a.type=dc, a.expirationTime=f, a;default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g= + 14;break a;case fc:g=16;d=null;break a}x$1("130",null==a?a:typeof a,"");}b=K$1(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K$1(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K$1(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K$1(6,a,null,b);a.expirationTime=c;return a} + function bf(a,b,c){b=K$1(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:cb&&(a.latestPendingTime=b);df(b,a);} + function ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0, a.latestPendingTime=0, a.earliestSuspendedTime=0, a.latestSuspendedTime=0, a.latestPingedTime=0;else{bb?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):bc&&cf(a,b);}df(0,a);}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:cb&&(a.latestSuspendedTime=b);df(b,a);} + function gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||da&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a;}function L$1(a,b){if(a&&a.defaultProps){b=objectAssign({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);}return b} + function hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default, a._status=1, a._result=b);},function(b){0===a._status&&(a._status=2, a._result=b);});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new react.Component).refs; + function kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:objectAssign({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c);} + var tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d);},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d);},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag= + sf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c);}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return"function"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0} + function vf(a,b,c){var d=!1,e=He;var f=b.contextType;"object"===typeof f&&null!==f?f=M$1(f):(e=J$1(b)?Ie:H$1.current, d=b.contextTypes, f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext=e, a.__reactInternalMemoizedMaskedChildContext=f);return b} + function wf(a,b,c,d){a=b.state;"function"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);"function"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null);} + function xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;"object"===typeof f&&null!==f?e.context=M$1(f):(f=J$1(b)?Ie:H$1.current, e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d), e.state=a.memoizedState);f=b.getDerivedStateFromProps;"function"===typeof f&&(kf(a,b,f,c), e.state=a.memoizedState);"function"===typeof b.getDerivedStateFromProps||"function"===typeof e.getSnapshotBeforeUpdate||"function"!==typeof e.UNSAFE_componentWillMount&&"function"!== + typeof e.componentWillMount||(b=e.state, "function"===typeof e.componentWillMount&&e.componentWillMount(), "function"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(), b!==e.state&&tf.enqueueReplaceState(e,e.state,null), f=a.updateQueue, null!==f&&(yf(a,f,c,e,d), e.state=a.memoizedState));"function"===typeof e.componentDidMount&&(a.effectTag|=4);}var zf=Array.isArray; + function Af(a,b,c){a=c.ref;if(null!==a&&"function"!==typeof a&&"object"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x$1("309"):void 0, d=c.stateNode);d?void 0:x$1("147",a);var e=""+a;if(null!==b&&null!==b.ref&&"function"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a;};b._stringRef=e;return b}"string"!==typeof a?x$1("284"):void 0;c._owner?void 0:x$1("290",a);}return a} + function Bf(a,b){"textarea"!==a.type&&x$1("31","[object Object]"===Object.prototype.toString.call(b)?"object with keys {"+Object.keys(b).join(", ")+"}":b,"");} + function Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c, b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8;}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d), d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b), b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index, du?(B=q, q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&& + q&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B;}if(u===h.length)return c(e,q), l;if(null===q){for(;uu?(B=q, q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B;}if(w.done)return c(e,q), l;if(null===q){for(;!w.done;u++, w=h.next())w=p(e,w.value,k), null!==w&&(g=f(w,g,u), null===m?l=w:m.sibling=w, m=w);return l}for(q=d(e,q);!w.done;u++, w=h.next())w=A(q,e,u,w.value,k), null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u: + w.key), g=f(w,g,u), null===m?l=w:m.sibling=w, m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k="object"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l="object"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k= + k.sibling;}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key), d.return=a, a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h), h.ref=Af(a,d,f), h.return=a, a=h);}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling;}d=bf(f,a.mode,h);d.return=a;a=d;}return g(a)}if("string"===typeof f||"number"===typeof f)return f= + ""+f, null!==d&&6===d.tag?(c(a,d.sibling), d=e(d,f,h), d.return=a, a=d):(c(a,d), d=af(f,a.mode,h), d.return=a, a=d), g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type, x$1("152",h.displayName||h.name||"Component");}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N$1={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x$1("174"):void 0;return a} + function Jf(a,b){G$1(Hf,b,a);G$1(Gf,a,a);G$1(N$1,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,"");break;default:c=8===c?b.parentNode:b, b=c.namespaceURI||null, c=c.tagName, b=he(b,c);}F$1(N$1,a);G$1(N$1,b,a);}function Kf(a){F$1(N$1,a);F$1(Gf,a);F$1(Hf,a);}function Lf(a){If(Hf.current);var b=If(N$1.current);var c=he(b,a.type);b!==c&&(G$1(Gf,a,a), G$1(N$1,c,a));}function Mf(a){Gf.current===a&&(F$1(N$1,a), F$1(Gf,a));} + var Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O$1=null,P$1=null,Yf=null,Q$1=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x$1("321");}function gg(a,b){if(null===b)return!1;for(var c=0;c$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next;}while(null!==l&&l!==d);k||(h=g, e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f;}return[b.memoizedState,c.dispatch]} + function rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null}, ag.lastEffect=a.next=a):(b=ag.lastEffect, null===b?ag.lastEffect=a.next=a:(c=b.next, b.next=a, a.next=c, ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d);} + function tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O$1){var g=O$1.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d);}function ug(a,b){if("function"===typeof b)return a=a(), b(a), function(){b(null);};if(null!==b&&void 0!==b)return a=a(), b.current=a, function(){b.current=null;}}function vg(){} + function wg(a,b,c){25>eg?void 0:x$1("301");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0, a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null}, null===dg&&(dg=new Map), c=dg.get(b), void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a;}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f;}b.last=f;if(0===a.expirationTime&&(null=== + d||0===d.expirationTime)&&(d=b.lastRenderedReducer, null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e);}} + var kg={readContext:M$1,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M$1,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M$1,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)}, + useMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null, + lastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M$1,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M$1,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a, + b){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1; + function Ag(a,b){var c=K$1(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c, a.lastEffect=c):a.firstEffect=a.lastEffect=c;}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b, !0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b, null!==b?(a.stateNode=b, !0):!1;case 13:return!1;default:return!1}} + function Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c);}xg=a;yg=Ee(b);}else a.effectTag|=2, zg=!1, xg=a;}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a;}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a), zg=!0, !1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b), b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1;} + var Gg=Tb.ReactCurrentOwner,qg=!1;function S$1(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d);}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue, b.effectTag&=-517, a.expirationTime<=e&&(a.expirationTime=0), Jg(a,b,e);b.effectTag|=1;S$1(a,b,d,e);return b.child} + function Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if("function"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15, b.type=g, Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d= + b.elementType;null!==a&&(a.alternate=null, b.alternate=null, b.effectTag|=2);a=b.pendingProps;var e=Je(b,H$1.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if("object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J$1(d)){var f=!0;Oe(b);}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;"function"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f, + c);}else b.tag=0, S$1(null,b,e,c), b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null, b.alternate=null, b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L$1(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L$1(a.type,f),d,c);break;default:x$1("306",a,"");}return g;case 0:return d=b.type, e=b.pendingProps, e=b.elementType===d?e:L$1(d,e), Mg(a,b,d,e,c);case 1:return d=b.type, e=b.pendingProps, e=b.elementType===d?e:L$1(d,e), Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x$1("282"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(), b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo), xg=b, e=zg=!0;e?(b.effectTag|=2, b.child=Ef(b,null,d,c)):(S$1(a,b,d,c), Fg());b=b.child;}return b;case 5:return Lf(b), null===a&&Cg(b), d=b.type, e=b.pendingProps, f=null!==a?a.memoizedProps:null, g=e.children, xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16), Ng(a,b), 1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1, b=null):(S$1(a,b,g,c), b=b.child), b;case 6:return null===a&&Cg(b), null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo), d=b.pendingProps, null===a?b.child=Df(b,null,d,c):S$1(a,b,d,c), b.child;case 11:return d=b.type, e=b.pendingProps, e=b.elementType===d?e:L$1(d,e), Hg(a,b,d,e,c);case 7:return S$1(a,b,b.pendingProps,c), b.child;case 8:return S$1(a,b,b.pendingProps.children, + c), b.child;case 12:return S$1(a,b,b.pendingProps.children,c), b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:("function"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I$1.current){b=Jg(a,b,c);break a}}else for(h=b.child, null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!== + (k.observedBits&f)){1===h.tag&&(k=nf(c), k.tag=sf, pf(h,k));h.expirationTime=b&&(qg=!0);a.contextDependencies=null;} + function M$1(a,b){if(Yg!==a&&!1!==b&&0!==b){if("number"!==typeof b||1073741823===b)Yg=a, b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x$1("308"):void 0, Xg=b, Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b;}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}} + function ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b, a.lastUpdate=b);} + function pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState));}else d=a.updateQueue, e=c.updateQueue, null===d?null===e?(d=a.updateQueue=bh(a.memoizedState), e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b), dh(e,b)):(dh(d,b), e.lastUpdate=b);} + function eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b, c.lastCapturedUpdate=b);}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b} + function gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload, "function"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e="function"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return objectAssign({},d,e);case sf:Pg=!0;}return d} + function yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;md?e:d);Ih.current=null;d=void 0;1c?b:c;0===b&&(Fh=null);$h(a,b);} + function ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T$1=a;a:{var e=b;b=a;var f=U$1;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J$1(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext, g.pendingContext=null);if(null===e||null===e.child)Eg(b), b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h), e.ref!==b.ref&&(b.effectTag|= + 128);else if(g){var l=If(N$1.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case "iframe":case "object":E$1("load",e);break;case "video":case "audio":for(k=0;kg&&(g=e), h>g&&(g=h), f=f.sibling;b.childExpirationTime=g;}if(null!==T$1)return T$1;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&& + (c.firstEffect=a.firstEffect), null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect), c.lastEffect=a.lastEffect), 1=v)t=0;else if(-1===t||v component higher in the tree to provide a loading indicator or placeholder to display."+jc(k));}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m, A=h.type, k=h.stateNode, 0===(h.effectTag&64)&&("function"===typeof A.getDerivedStateFromError||null!==k&&"function"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048; + h.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return;}while(null!==h)}T$1=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null, a.finishedWork=null;else if(null!==T$1)a.finishedWork=null;else{c=a.current.alternate;null===c?x$1("281"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&eb?0:b)):(a.pendingCommitExpirationTime=d, a.finishedWork=c);}} + function sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if("function"===typeof c.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return;}3===a.tag&&(c=jh(b,a), c=Ch(a,c,1073741823), pf(a,c), qf(a,1073741823));} + function mf(a,b){var c=scheduler.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U$1;else{switch(c){case scheduler.unstable_ImmediatePriority:d=1073741823;break;case scheduler.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case scheduler.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case scheduler.unstable_LowPriority:case scheduler.unstable_IdlePriority:d=1;break;default:x$1("313");}null!==Lh&&d===U$1&&--d;}c===scheduler.unstable_UserBlockingPriority&& + (0===gi||d=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c);}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b), b=a.expirationTime, 0!==b&&Xh(a,b));} + function hi(a,b){a.expirationTimeU$1&&Sh(), cf(a,b), Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime), ii>ji&&(ii=0, x$1("185")));}function ki(a,b,c,d,e){return scheduler.unstable_runWithPriority(scheduler.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y$1=null,mi=0,ni=void 0,W$1=!1,oi=null,Z$1=0,gi=0,pi=!1,qi=null,X$1=!1,ri=!1,si=null,ti=scheduler.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((scheduler.unstable_now()-ti)/10|0);} + function yi(a,b){if(0!==mi){if(ba.expirationTime&&(a.expirationTime=b);W$1||(X$1?ri&&(oi=a, Z$1=1073741823, Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b));} + function Ci(){var a=0,b=null;if(null!==Y$1)for(var c=Y$1,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y$1?x$1("244"):void 0;if(d===d.nextScheduledRoot){li=Y$1=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot, Y$1.nextScheduledRoot=e, d.nextScheduledRoot=null;else if(d===Y$1){Y$1=c;Y$1.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot, d.nextScheduledRoot=null;d=c.nextScheduledRoot;}else{e>a&&(a=e, b=d);if(d===Y$1)break;if(1073741823=== + a)break;c=d;d=d.nextScheduledRoot;}}oi=b;Z$1=a;}var Ei=!1;function di(){return Ei?!0:scheduler.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot;}while(a!==li)}Yh(0,!0);}finally{Ei=!1;}} + function Yh(a,b){Ci();if(b)for(xi(), vi=ui;null!==oi&&0!==Z$1&&a<=Z$1&&!(Ei&&ui>Z$1);)Di(oi,Z$1,ui>Z$1), Ci(), xi(), vi=ui;else for(;null!==oi&&0!==Z$1&&a<=Z$1;)Di(oi,Z$1,!1), Ci();b&&(mi=0, ni=null);0!==Z$1&&yi(oi,Z$1);ii=0;wi=null;if(null!==si)for(a=si, si=null, b=0;b=c&&(null===si?si=[d]:si.push(d), d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a, ii=0);scheduler.unstable_runWithPriority(scheduler.unstable_ImmediatePriority,function(){Zh(a,b);});}function Dh(a){null===oi?x$1("246"):void 0;oi.expirationTime=0;pi||(pi=!0, qi=a);}function Gi(a,b){var c=X$1;X$1=!0;try{return a(b)}finally{(X$1=c)||W$1||Yh(1073741823,!1);}} + function Hi(a,b){if(X$1&&!ri){ri=!0;try{return a(b)}finally{ri=!1;}}return a(b)}function Ii(a,b,c){X$1||W$1||0===gi||(Yh(gi,!1), gi=0);var d=X$1;X$1=!0;try{return scheduler.unstable_runWithPriority(scheduler.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X$1=d)||W$1||Yh(1073741823,!1);}} + function Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x$1("170");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J$1(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return;}while(null!==g);x$1("171");g=void 0;}if(1===c.tag){var h=c.type;if(J$1(h)){c=Ne(c,h,g);break a}}c=g;}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b); + of();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0;}Ni.prototype.render=function(a){this._defer?void 0:x$1("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d}; + Ni.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a);}}; + Ni.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x$1("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime, this.render(this._children));for(var d=null,e=b;e!==this;)d=e, e=e._next;null===d?x$1("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this;}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children);}else this._next= + null, this._defer=!1;};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b=b;)c=d, d=d._next;a._next=d;null!==c&&(c._next=a);}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||" react-mount-point-unstable "!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W$1||0===gi||(Yh(gi,!1), gi=0);}; + function Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null, b=!(!b||1!==b.nodeType||!b.hasAttribute("data-reactroot")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)} + function Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if("function"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a);};}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e);}else{f=c._reactRootContainer=Ri(c,d);if("function"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a);};}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e);});}return Li(f._internalRoot)} + function Ti(a,b){var c=2= 0; --i) { + attr = attrs[i]; + attrName = attr.name; + attrNamespaceURI = attr.namespaceURI; + attrValue = attr.value; + + if (attrNamespaceURI) { + attrName = attr.localName || attrName; + fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName); + + if (fromValue !== attrValue) { + fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue); + } + } else { + fromValue = fromNode.getAttribute(attrName); + + if (fromValue !== attrValue) { + fromNode.setAttribute(attrName, attrValue); + } + } + } + + // Remove any extra attributes found on the original DOM element that + // weren't found on the target element. + attrs = fromNode.attributes; + + for (i = attrs.length - 1; i >= 0; --i) { + attr = attrs[i]; + if (attr.specified !== false) { + attrName = attr.name; + attrNamespaceURI = attr.namespaceURI; + + if (attrNamespaceURI) { + attrName = attr.localName || attrName; + + if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) { + fromNode.removeAttributeNS(attrNamespaceURI, attrName); + } + } else { + if (!toNode.hasAttribute(attrName)) { + fromNode.removeAttribute(attrName); + } + } + } + } + } + + var range; // Create a range object for efficently rendering strings to elements. + var NS_XHTML = 'http://www.w3.org/1999/xhtml'; + + var doc = typeof document === 'undefined' ? undefined : document; + + /** + * This is about the same + * var html = new DOMParser().parseFromString(str, 'text/html'); + * return html.body.firstChild; + * + * @method toElement + * @param {String} str + */ + function toElement(str) { + if (!range && doc.createRange) { + range = doc.createRange(); + range.selectNode(doc.body); + } + + var fragment; + if (range && range.createContextualFragment) { + fragment = range.createContextualFragment(str); + } else { + fragment = doc.createElement('body'); + fragment.innerHTML = str; + } + return fragment.childNodes[0]; + } + + /** + * Returns true if two node's names are the same. + * + * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same + * nodeName and different namespace URIs. + * + * @param {Element} a + * @param {Element} b The target element + * @return {boolean} + */ + function compareNodeNames(fromEl, toEl) { + var fromNodeName = fromEl.nodeName; + var toNodeName = toEl.nodeName; + + if (fromNodeName === toNodeName) { + return true; + } + + if (toEl.actualize && + fromNodeName.charCodeAt(0) < 91 && /* from tag name is upper case */ + toNodeName.charCodeAt(0) > 90 /* target tag name is lower case */) { + // If the target element is a virtual DOM node then we may need to normalize the tag name + // before comparing. Normal HTML elements that are in the "http://www.w3.org/1999/xhtml" + // are converted to upper case + return fromNodeName === toNodeName.toUpperCase(); + } else { + return false; + } + } + + /** + * Create an element, optionally with a known namespace URI. + * + * @param {string} name the element name, e.g. 'div' or 'svg' + * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of + * its `xmlns` attribute or its inferred namespace. + * + * @return {Element} + */ + function createElementNS(name, namespaceURI) { + return !namespaceURI || namespaceURI === NS_XHTML ? + doc.createElement(name) : + doc.createElementNS(namespaceURI, name); + } + + /** + * Copies the children of one DOM element to another DOM element + */ + function moveChildren(fromEl, toEl) { + var curChild = fromEl.firstChild; + while (curChild) { + var nextChild = curChild.nextSibling; + toEl.appendChild(curChild); + curChild = nextChild; + } + return toEl; + } + + function syncBooleanAttrProp(fromEl, toEl, name) { + if (fromEl[name] !== toEl[name]) { + fromEl[name] = toEl[name]; + if (fromEl[name]) { + fromEl.setAttribute(name, ''); + } else { + fromEl.removeAttribute(name); + } + } + } + + var specialElHandlers = { + OPTION: function(fromEl, toEl) { + var parentNode = fromEl.parentNode; + if (parentNode) { + var parentName = parentNode.nodeName.toUpperCase(); + if (parentName === 'OPTGROUP') { + parentNode = parentNode.parentNode; + parentName = parentNode && parentNode.nodeName.toUpperCase(); + } + if (parentName === 'SELECT' && !parentNode.hasAttribute('multiple')) { + if (fromEl.hasAttribute('selected') && !toEl.selected) { + // Workaround for MS Edge bug where the 'selected' attribute can only be + // removed if set to a non-empty value: + // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/ + fromEl.setAttribute('selected', 'selected'); + fromEl.removeAttribute('selected'); + } + // We have to reset select element's selectedIndex to -1, otherwise setting + // fromEl.selected using the syncBooleanAttrProp below has no effect. + // The correct selectedIndex will be set in the SELECT special handler below. + parentNode.selectedIndex = -1; + } + } + syncBooleanAttrProp(fromEl, toEl, 'selected'); + }, + /** + * The "value" attribute is special for the element since it sets + * the initial value. Changing the "value" attribute without changing the + * "value" property will have no effect since it is only used to the set the + * initial value. Similar for the "checked" attribute, and "disabled". + */ + INPUT: function(fromEl, toEl) { + syncBooleanAttrProp(fromEl, toEl, 'checked'); + syncBooleanAttrProp(fromEl, toEl, 'disabled'); + + if (fromEl.value !== toEl.value) { + fromEl.value = toEl.value; + } + + if (!toEl.hasAttribute('value')) { + fromEl.removeAttribute('value'); + } + }, + + TEXTAREA: function(fromEl, toEl) { + var newValue = toEl.value; + if (fromEl.value !== newValue) { + fromEl.value = newValue; + } + + var firstChild = fromEl.firstChild; + if (firstChild) { + // Needed for IE. Apparently IE sets the placeholder as the + // node value and vise versa. This ignores an empty update. + var oldValue = firstChild.nodeValue; + + if (oldValue == newValue || (!newValue && oldValue == fromEl.placeholder)) { + return; + } + + firstChild.nodeValue = newValue; + } + }, + SELECT: function(fromEl, toEl) { + if (!toEl.hasAttribute('multiple')) { + var selectedIndex = -1; + var i = 0; + // We have to loop through children of fromEl, not toEl since nodes can be moved + // from toEl to fromEl directly when morphing. + // At the time this special handler is invoked, all children have already been morphed + // and appended to / removed from fromEl, so using fromEl here is safe and correct. + var curChild = fromEl.firstChild; + var optgroup; + var nodeName; + while(curChild) { + nodeName = curChild.nodeName && curChild.nodeName.toUpperCase(); + if (nodeName === 'OPTGROUP') { + optgroup = curChild; + curChild = optgroup.firstChild; + } else { + if (nodeName === 'OPTION') { + if (curChild.hasAttribute('selected')) { + selectedIndex = i; + break; + } + i++; + } + curChild = curChild.nextSibling; + if (!curChild && optgroup) { + curChild = optgroup.nextSibling; + optgroup = null; + } + } + } + + fromEl.selectedIndex = selectedIndex; + } + } + }; + + var ELEMENT_NODE = 1; + var DOCUMENT_FRAGMENT_NODE = 11; + var TEXT_NODE = 3; + var COMMENT_NODE = 8; + + function noop() {} + + function defaultGetNodeKey(node) { + return node.id; + } + + function morphdomFactory(morphAttrs) { + + return function morphdom(fromNode, toNode, options) { + if (!options) { + options = {}; + } + + if (typeof toNode === 'string') { + if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML') { + var toNodeHtml = toNode; + toNode = doc.createElement('html'); + toNode.innerHTML = toNodeHtml; + } else { + toNode = toElement(toNode); + } + } + + var getNodeKey = options.getNodeKey || defaultGetNodeKey; + var onBeforeNodeAdded = options.onBeforeNodeAdded || noop; + var onNodeAdded = options.onNodeAdded || noop; + var onBeforeElUpdated = options.onBeforeElUpdated || noop; + var onElUpdated = options.onElUpdated || noop; + var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop; + var onNodeDiscarded = options.onNodeDiscarded || noop; + var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop; + var childrenOnly = options.childrenOnly === true; + + // This object is used as a lookup to quickly find all keyed elements in the original DOM tree. + var fromNodesLookup = {}; + var keyedRemovalList; + + function addKeyedRemoval(key) { + if (keyedRemovalList) { + keyedRemovalList.push(key); + } else { + keyedRemovalList = [key]; + } + } + + function walkDiscardedChildNodes(node, skipKeyedNodes) { + if (node.nodeType === ELEMENT_NODE) { + var curChild = node.firstChild; + while (curChild) { + + var key = undefined; + + if (skipKeyedNodes && (key = getNodeKey(curChild))) { + // If we are skipping keyed nodes then we add the key + // to a list so that it can be handled at the very end. + addKeyedRemoval(key); + } else { + // Only report the node as discarded if it is not keyed. We do this because + // at the end we loop through all keyed elements that were unmatched + // and then discard them in one final pass. + onNodeDiscarded(curChild); + if (curChild.firstChild) { + walkDiscardedChildNodes(curChild, skipKeyedNodes); + } + } + + curChild = curChild.nextSibling; + } + } + } + + /** + * Removes a DOM node out of the original DOM + * + * @param {Node} node The node to remove + * @param {Node} parentNode The nodes parent + * @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded. + * @return {undefined} + */ + function removeNode(node, parentNode, skipKeyedNodes) { + if (onBeforeNodeDiscarded(node) === false) { + return; + } + + if (parentNode) { + parentNode.removeChild(node); + } + + onNodeDiscarded(node); + walkDiscardedChildNodes(node, skipKeyedNodes); + } + + // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future + // function indexTree(root) { + // var treeWalker = document.createTreeWalker( + // root, + // NodeFilter.SHOW_ELEMENT); + // + // var el; + // while((el = treeWalker.nextNode())) { + // var key = getNodeKey(el); + // if (key) { + // fromNodesLookup[key] = el; + // } + // } + // } + + // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future + // + // function indexTree(node) { + // var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT); + // var el; + // while((el = nodeIterator.nextNode())) { + // var key = getNodeKey(el); + // if (key) { + // fromNodesLookup[key] = el; + // } + // } + // } + + function indexTree(node) { + if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE) { + var curChild = node.firstChild; + while (curChild) { + var key = getNodeKey(curChild); + if (key) { + fromNodesLookup[key] = curChild; + } + + // Walk recursively + indexTree(curChild); + + curChild = curChild.nextSibling; + } + } + } + + indexTree(fromNode); + + function handleNodeAdded(el) { + onNodeAdded(el); + + var curChild = el.firstChild; + while (curChild) { + var nextSibling = curChild.nextSibling; + + var key = getNodeKey(curChild); + if (key) { + var unmatchedFromEl = fromNodesLookup[key]; + if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) { + curChild.parentNode.replaceChild(unmatchedFromEl, curChild); + morphEl(unmatchedFromEl, curChild); + } + } + + handleNodeAdded(curChild); + curChild = nextSibling; + } + } + + function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) { + // We have processed all of the "to nodes". If curFromNodeChild is + // non-null then we still have some from nodes left over that need + // to be removed + while (curFromNodeChild) { + var fromNextSibling = curFromNodeChild.nextSibling; + if ((curFromNodeKey = getNodeKey(curFromNodeChild))) { + // Since the node is keyed it might be matched up later so we defer + // the actual removal to later + addKeyedRemoval(curFromNodeKey); + } else { + // NOTE: we skip nested keyed nodes from being removed since there is + // still a chance they will be matched up later + removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */); + } + curFromNodeChild = fromNextSibling; + } + } + + function morphEl(fromEl, toEl, childrenOnly) { + var toElKey = getNodeKey(toEl); + + if (toElKey) { + // If an element with an ID is being morphed then it will be in the final + // DOM so clear it out of the saved elements collection + delete fromNodesLookup[toElKey]; + } + + if (toNode.isSameNode && toNode.isSameNode(fromNode)) { + return; + } + + if (!childrenOnly) { + // optional + if (onBeforeElUpdated(fromEl, toEl) === false) { + return; + } + + // update attributes on original DOM element first + morphAttrs(fromEl, toEl); + // optional + onElUpdated(fromEl); + + if (onBeforeElChildrenUpdated(fromEl, toEl) === false) { + return; + } + } + if (fromEl.nodeName !== 'TEXTAREA') { + morphChildren(fromEl, toEl); + } else { + specialElHandlers.TEXTAREA(fromEl, toEl); + } + } + + function morphChildren(fromEl, toEl) { + var curToNodeChild = toEl.firstChild; + var curFromNodeChild = fromEl.firstChild; + var curToNodeKey; + var curFromNodeKey; + + var fromNextSibling; + var toNextSibling; + var matchingFromEl; + + // walk the children + outer: while (curToNodeChild) { + toNextSibling = curToNodeChild.nextSibling; + curToNodeKey = getNodeKey(curToNodeChild); + + // walk the fromNode children all the way through + while (curFromNodeChild) { + fromNextSibling = curFromNodeChild.nextSibling; + + if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) { + curToNodeChild = toNextSibling; + curFromNodeChild = fromNextSibling; + continue outer; + } + + curFromNodeKey = getNodeKey(curFromNodeChild); + + var curFromNodeType = curFromNodeChild.nodeType; + + // this means if the curFromNodeChild doesnt have a match with the curToNodeChild + var isCompatible = undefined; + + if (curFromNodeType === curToNodeChild.nodeType) { + if (curFromNodeType === ELEMENT_NODE) { + // Both nodes being compared are Element nodes + + if (curToNodeKey) { + // The target node has a key so we want to match it up with the correct element + // in the original DOM tree + if (curToNodeKey !== curFromNodeKey) { + // The current element in the original DOM tree does not have a matching key so + // let's check our lookup to see if there is a matching element in the original + // DOM tree + if ((matchingFromEl = fromNodesLookup[curToNodeKey])) { + if (fromNextSibling === matchingFromEl) { + // Special case for single element removals. To avoid removing the original + // DOM node out of the tree (since that can break CSS transitions, etc.), + // we will instead discard the current node and wait until the next + // iteration to properly match up the keyed target element with its matching + // element in the original tree + isCompatible = false; + } else { + // We found a matching keyed element somewhere in the original DOM tree. + // Let's move the original DOM node into the current position and morph + // it. + + // NOTE: We use insertBefore instead of replaceChild because we want to go through + // the `removeNode()` function for the node that is being discarded so that + // all lifecycle hooks are correctly invoked + fromEl.insertBefore(matchingFromEl, curFromNodeChild); + + // fromNextSibling = curFromNodeChild.nextSibling; + + if (curFromNodeKey) { + // Since the node is keyed it might be matched up later so we defer + // the actual removal to later + addKeyedRemoval(curFromNodeKey); + } else { + // NOTE: we skip nested keyed nodes from being removed since there is + // still a chance they will be matched up later + removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */); + } + + curFromNodeChild = matchingFromEl; + } + } else { + // The nodes are not compatible since the "to" node has a key and there + // is no matching keyed node in the source tree + isCompatible = false; + } + } + } else if (curFromNodeKey) { + // The original has a key + isCompatible = false; + } + + isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild); + if (isCompatible) { + // We found compatible DOM elements so transform + // the current "from" node to match the current + // target DOM node. + // MORPH + morphEl(curFromNodeChild, curToNodeChild); + } + + } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) { + // Both nodes being compared are Text or Comment nodes + isCompatible = true; + // Simply update nodeValue on the original node to + // change the text value + if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) { + curFromNodeChild.nodeValue = curToNodeChild.nodeValue; + } + + } + } + + if (isCompatible) { + // Advance both the "to" child and the "from" child since we found a match + // Nothing else to do as we already recursively called morphChildren above + curToNodeChild = toNextSibling; + curFromNodeChild = fromNextSibling; + continue outer; + } + + // No compatible match so remove the old node from the DOM and continue trying to find a + // match in the original DOM. However, we only do this if the from node is not keyed + // since it is possible that a keyed node might match up with a node somewhere else in the + // target tree and we don't want to discard it just yet since it still might find a + // home in the final DOM tree. After everything is done we will remove any keyed nodes + // that didn't find a home + if (curFromNodeKey) { + // Since the node is keyed it might be matched up later so we defer + // the actual removal to later + addKeyedRemoval(curFromNodeKey); + } else { + // NOTE: we skip nested keyed nodes from being removed since there is + // still a chance they will be matched up later + removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */); + } + + curFromNodeChild = fromNextSibling; + } // END: while(curFromNodeChild) {} + + // If we got this far then we did not find a candidate match for + // our "to node" and we exhausted all of the children "from" + // nodes. Therefore, we will just append the current "to" node + // to the end + if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) { + fromEl.appendChild(matchingFromEl); + // MORPH + morphEl(matchingFromEl, curToNodeChild); + } else { + var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild); + if (onBeforeNodeAddedResult !== false) { + if (onBeforeNodeAddedResult) { + curToNodeChild = onBeforeNodeAddedResult; + } + + if (curToNodeChild.actualize) { + curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc); + } + fromEl.appendChild(curToNodeChild); + handleNodeAdded(curToNodeChild); + } + } + + curToNodeChild = toNextSibling; + curFromNodeChild = fromNextSibling; + } + + cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey); + + var specialElHandler = specialElHandlers[fromEl.nodeName]; + if (specialElHandler) { + specialElHandler(fromEl, toEl); + } + } // END: morphChildren(...) + + var morphedNode = fromNode; + var morphedNodeType = morphedNode.nodeType; + var toNodeType = toNode.nodeType; + + if (!childrenOnly) { + // Handle the case where we are given two DOM nodes that are not + // compatible (e.g.
--> or
--> TEXT) + if (morphedNodeType === ELEMENT_NODE) { + if (toNodeType === ELEMENT_NODE) { + if (!compareNodeNames(fromNode, toNode)) { + onNodeDiscarded(fromNode); + morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI)); + } + } else { + // Going from an element node to a text node + morphedNode = toNode; + } + } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) { // Text or comment node + if (toNodeType === morphedNodeType) { + if (morphedNode.nodeValue !== toNode.nodeValue) { + morphedNode.nodeValue = toNode.nodeValue; + } + + return morphedNode; + } else { + // Text node to something else + morphedNode = toNode; + } + } + } + + if (morphedNode === toNode) { + // The "to node" was not compatible with the "from node" so we had to + // toss out the "from node" and use the "to node" + onNodeDiscarded(fromNode); + } else { + morphEl(morphedNode, toNode, childrenOnly); + + // We now need to loop over any keyed nodes that might need to be + // removed. We only do the removal if we know that the keyed node + // never found a match. When a keyed node is matched up we remove + // it out of fromNodesLookup and we use fromNodesLookup to determine + // if a keyed node has been matched up or not + if (keyedRemovalList) { + for (var i=0, len=keyedRemovalList.length; i= vnodeLength ? domLength : vnodeLength; + parentNode = dom[0].parentNode; + for (var i = 0; i < maxLength; i++) { + var ele = idiff(dom[i], vnode[i], context, mountAll, componentRoot); + ret.push(ele); + if (i > domLength - 1) { + parentNode.appendChild(ele); + } + } + } else { + vnode.forEach(function (item) { + var ele = idiff(dom, item, context, mountAll, componentRoot); + ret.push(ele); + parent && parent.appendChild(ele); + }); + } + } else { + if (isArray(dom)) { + ret = idiff(dom[0], vnode, context, mountAll, componentRoot); + } else { + ret = idiff(dom, vnode, context, mountAll, componentRoot); + } + // append the element if its a new parent + if (parent && ret.parentNode !== parent) parent.appendChild(ret); + } + + // diffLevel being reduced to 0 means we're exiting the diff + if (! --diffLevel) { + hydrating = false; + // invoke queued componentDidMount lifecycle methods + } + + return ret; + } + + /** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */ + function idiff(dom, vnode, context, mountAll, componentRoot) { + if (dom && vnode && dom.props) { + dom.props.children = vnode.props.children; + } + var out = dom, + prevSvgMode = isSvgMode; + + // empty values (null, undefined, booleans) render as empty Text nodes + if (vnode == null || typeof vnode === 'boolean') vnode = ''; + + // Fast case: Strings & Numbers create/update Text nodes. + if (typeof vnode === 'string' || typeof vnode === 'number') { + // update if it's already a Text node: + if (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) { + /* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */ + if (dom.nodeValue != vnode) { + dom.nodeValue = vnode; + } + } else { + // it wasn't a Text node: replace it with one and recycle the old Element + out = document.createTextNode(vnode); + if (dom) { + if (dom.parentNode) dom.parentNode.replaceChild(out, dom); + recollectNodeTree(dom, true); + } + } + + out[ATTR_KEY] = true; + + return out; + } + + // If the VNode represents a Component, perform a component diff: + var vnodeName = vnode.type; + + if (typeof vnodeName === 'function') { + + var isReact = true; + for (var key in options.mapping) { + if (options.mapping[key] === vnodeName) { + vnodeName = key; + vnode.type = key; + isReact = false; + break; + } + } + if (isReact) { + var div = document.createElement('div'); + var cpt = reactDom.render(vnode, div); + div.firstChild._reactComponent = cpt; + return div.firstChild; + } + } + // Tracks entering and exiting SVG namespace when descending through the tree. + isSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode; + + // If there's no existing element or it's the wrong type, create a new one: + vnodeName = String(vnodeName); + if (!dom || !isNamedNode(dom, vnodeName)) { + out = createNode(vnodeName, isSvgMode); + + if (dom) { + // move children into the replacement node + while (dom.firstChild) { + out.appendChild(dom.firstChild); + } // if the previous Element was mounted into the DOM, replace it inline + if (dom.parentNode) dom.parentNode.replaceChild(out, dom); + + // recycle the old element (skips non-Element node types) + recollectNodeTree(dom, true); + } + } + + var fc = out.firstChild, + props = out[ATTR_KEY], + vchildren = vnode.props.children; + + if (props == null) { + props = out[ATTR_KEY] = {}; + for (var a = out.attributes, i = a.length; i--;) { + props[a[i].name] = a[i].value; + } + } + if (vchildren && vchildren.length === undefined) { + vchildren = [vchildren]; + } + // Optimization: fast-path for elements containing a single TextNode: + if (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) { + if (fc.nodeValue != vchildren[0]) { + fc.nodeValue = vchildren[0]; + } + } + // otherwise, if there are existing or new children, diff them: + else if (vchildren && vchildren.length || fc != null) { + if (!(out.constructor.is == 'WeElement' && out.constructor.noSlot)) { + innerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null); + } + } + + // Apply attributes/props from VNode to the DOM Element: + diffAttributes(out, vnode.props, props, vnode.props.children); + if (out.props) { + out.props.children = vnode.props.children; + } + // restore previous SVG mode: (in case we're exiting an SVG namespace) + isSvgMode = prevSvgMode; + + return out; + } + + /** Apply child and attribute changes between a VNode and a DOM Node to the DOM. + * @param {Element} dom Element whose children should be compared & mutated + * @param {Array} vchildren Array of VNodes to compare to `dom.childNodes` + * @param {Object} context Implicitly descendant context object (from most recent `getChildContext()`) + * @param {Boolean} mountAll + * @param {Boolean} isHydrating If `true`, consumes externally created elements similar to hydration + */ + function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) { + var originalChildren = dom.childNodes, + children = [], + keyed = {}, + keyedLen = 0, + min = 0, + len = originalChildren.length, + childrenLen = 0, + vlen = vchildren ? vchildren.length : 0, + j = void 0, + c = void 0, + f = void 0, + vchild = void 0, + child = void 0; + + // Build up a map of keyed children and an Array of unkeyed children: + if (len !== 0) { + for (var i = 0; i < len; i++) { + var _child = originalChildren[i], + props = _child[ATTR_KEY], + key = vlen && props ? _child._component ? _child._component.__key : props.key : null; + if (key != null) { + keyedLen++; + keyed[key] = _child; + } else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) { + children[childrenLen++] = _child; + } + } + } + + if (vlen !== 0) { + for (var _i = 0; _i < vlen; _i++) { + vchild = vchildren[_i]; + child = null; + + // attempt to find a node based on key matching + var _key = vchild.key; + if (_key != null) { + if (keyedLen && keyed[_key] !== undefined) { + child = keyed[_key]; + keyed[_key] = undefined; + keyedLen--; + } + } + // attempt to pluck a node of the same type from the existing children + else if (!child && min < childrenLen) { + for (j = min; j < childrenLen; j++) { + if (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) { + child = c; + children[j] = undefined; + if (j === childrenLen - 1) childrenLen--; + if (j === min) min++; + break; + } + } + } + + // morph the matched/found/created DOM child to match vchild (deep) + var out = idiff(child, vchild, context, mountAll); + if (out._reactComponent) { + var diffIt = false; + for (var k = 0, cl = dom.childNodes.length; k < cl; k++) { + if (dom.childNodes[_i] && dom.childNodes[_i]._reactComponent.constructor === out._reactComponent.constructor) { + diffIt = true; + morphdom(dom.childNodes[_i], out); + break; + } + } + + !diffIt && dom.appendChild(out); + } else { + f = originalChildren[_i]; + if (out && out !== dom && out !== f) { + if (f == null) { + dom.appendChild(out); + } else if (out === f.nextSibling) { + removeNode(f); + } else { + dom.insertBefore(out, f); + } + } + } + } + } + + // remove unused keyed children: + if (keyedLen) { + for (var _i2 in keyed) { + if (keyed[_i2] !== undefined) recollectNodeTree(keyed[_i2], false); + } + } + + // remove orphaned unkeyed children: + while (min <= childrenLen) { + if ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false); + } + } + + /** Recursively recycle (or just unmount) a node and its descendants. + * @param {Node} node DOM node to start unmount/removal from + * @param {Boolean} [unmountOnly=false] If `true`, only triggers unmount lifecycle, skips removal + */ + function recollectNodeTree(node, unmountOnly) { + // If the node's VNode had a ref function, invoke it with null here. + // (this is part of the React spec, and smart for unsetting references) + if (node[ATTR_KEY] != null && node[ATTR_KEY].ref) { + if (typeof node[ATTR_KEY].ref === 'function') { + node[ATTR_KEY].ref(null); + } else if (node[ATTR_KEY].ref.current) { + node[ATTR_KEY].ref.current = null; + } + } + + if (unmountOnly === false || node[ATTR_KEY] == null) { + removeNode(node); + } + + removeChildren(node); + } + + /** Recollect/unmount all children. + * - we use .lastChild here because it causes less reflow than .firstChild + * - it's also cheaper than accessing the .childNodes Live NodeList + */ + function removeChildren(node) { + node = node.lastChild; + while (node) { + var next = node.previousSibling; + recollectNodeTree(node, true); + node = next; + } + } + + /** Apply differences in attributes from a VNode to the given DOM Element. + * @param {Element} dom Element with attributes to diff `attrs` against + * @param {Object} attrs The desired end-state key-value attribute pairs + * @param {Object} old Current/previous attributes (from previous VNode or element's prop cache) + */ + function diffAttributes(dom, attrs, old, children) { + var name = void 0; + var update = false; + var isWeElement = dom.update; + var oldClone = void 0; + if (dom.receiveProps) { + oldClone = Object.assign({}, old); + } + // remove attributes no longer present on the vnode by setting them to undefined + for (name in old) { + if (!(attrs && attrs[name] != null) && old[name] != null) { + setAccessor(dom, name, old[name], old[name] = undefined, isSvgMode); + if (isWeElement) { + delete dom.props[name]; + update = true; + } + } + } + + // add new & update changed attributes + for (name in attrs) { + if (isWeElement && typeof attrs[name] === 'object' && name !== 'ref') { + if (name === 'style') { + setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode); + } + if (dom.receiveProps) { + try { + old[name] = JSON.parse(JSON.stringify(attrs[name])); + } catch (e) { + console.warn('When using receiveProps, you cannot pass prop of cyclic dependencies down.'); + } + } + dom.props[npn(name)] = attrs[name]; + update = true; + } else if (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) { + setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode); + if (isWeElement) { + dom.props[npn(name)] = attrs[name]; + update = true; + } + } + } + + if (isWeElement && dom.parentNode) { + if (update || children.length > 0 || dom.store) { + dom.receiveProps(dom.props, dom.data, oldClone); + dom.update(); + } + } + } + + /*! + * https://github.com/Palindrom/JSONPatcherProxy + * (c) 2017 Starcounter + * MIT license + */ + + /** Class representing a JS Object observer */ + var JSONPatcherProxy = function () { + /** + * Deep clones your object and returns a new object. + */ + function deepClone(obj) { + switch (typeof obj) { + case 'object': + return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5 + case 'undefined': + return null; //this is how JSON.stringify behaves for array items + default: + return obj; //no need to clone primitives + } + } + JSONPatcherProxy.deepClone = deepClone; + + function escapePathComponent(str) { + if (str.indexOf('/') == -1 && str.indexOf('~') == -1) return str; + return str.replace(/~/g, '~0').replace(/\//g, '~1'); + } + JSONPatcherProxy.escapePathComponent = escapePathComponent; + + /** + * Walk up the parenthood tree to get the path + * @param {JSONPatcherProxy} instance + * @param {Object} obj the object you need to find its path + */ + function findObjectPath(instance, obj) { + var pathComponents = []; + var parentAndPath = instance.parenthoodMap.get(obj); + while (parentAndPath && parentAndPath.path) { + // because we're walking up-tree, we need to use the array as a stack + pathComponents.unshift(parentAndPath.path); + parentAndPath = instance.parenthoodMap.get(parentAndPath.parent); + } + if (pathComponents.length) { + var path = pathComponents.join('/'); + return '/' + path; + } + return ''; + } + /** + * A callback to be used as th proxy set trap callback. + * It updates parenthood map if needed, proxifies nested newly-added objects, calls default callbacks with the changes occurred. + * @param {JSONPatcherProxy} instance JSONPatcherProxy instance + * @param {Object} target the affected object + * @param {String} key the effect property's name + * @param {Any} newValue the value being set + */ + function setTrap(instance, target, key, newValue) { + var parentPath = findObjectPath(instance, target); + + var destinationPropKey = parentPath + '/' + escapePathComponent(key); + + if (instance.proxifiedObjectsMap.has(newValue)) { + var newValueOriginalObject = instance.proxifiedObjectsMap.get(newValue); + + instance.parenthoodMap.set(newValueOriginalObject.originalObject, { + parent: target, + path: key + }); + } + /* + mark already proxified values as inherited. + rationale: proxy.arr.shift() + will emit + {op: replace, path: '/arr/1', value: arr_2} + {op: remove, path: '/arr/2'} + by default, the second operation would revoke the proxy, and this renders arr revoked. + That's why we need to remember the proxies that are inherited. + */ + var revokableInstance = instance.proxifiedObjectsMap.get(newValue); + /* + Why do we need to check instance.isProxifyingTreeNow? + We need to make sure we mark revokables as inherited ONLY when we're observing, + because throughout the first proxification, a sub-object is proxified and then assigned to + its parent object. This assignment of a pre-proxified object can fool us into thinking + that it's a proxified object moved around, while in fact it's the first assignment ever. + Checking isProxifyingTreeNow ensures this is not happening in the first proxification, + but in fact is is a proxified object moved around the tree + */ + if (revokableInstance && !instance.isProxifyingTreeNow) { + revokableInstance.inherited = true; + } + + // if the new value is an object, make sure to watch it + if (newValue && typeof newValue == 'object' && !instance.proxifiedObjectsMap.has(newValue)) { + instance.parenthoodMap.set(newValue, { + parent: target, + path: key + }); + newValue = instance._proxifyObjectTreeRecursively(target, newValue, key); + } + // let's start with this operation, and may or may not update it later + var operation = { + op: 'remove', + path: destinationPropKey + }; + if (typeof newValue == 'undefined') { + // applying De Morgan's laws would be a tad faster, but less readable + if (!Array.isArray(target) && !target.hasOwnProperty(key)) { + // `undefined` is being set to an already undefined value, keep silent + return Reflect.set(target, key, newValue); + } + // when array element is set to `undefined`, should generate replace to `null` + if (Array.isArray(target)) { + operation.op = 'replace', operation.value = null; + } + var oldValue = instance.proxifiedObjectsMap.get(target[key]); + // was the deleted a proxified object? + if (oldValue) { + instance.parenthoodMap.delete(target[key]); + instance.disableTrapsForProxy(oldValue); + instance.proxifiedObjectsMap.delete(oldValue); + } + } else { + if (Array.isArray(target) && !Number.isInteger(+key.toString())) { + /* array props (as opposed to indices) don't emit any patches, to avoid needless `length` patches */ + if (key != 'length') { + console.warn('JSONPatcherProxy noticed a non-integer prop was set for an array. This will not emit a patch'); + } + return Reflect.set(target, key, newValue); + } + operation.op = 'add'; + if (target.hasOwnProperty(key)) { + if (typeof target[key] !== 'undefined' || Array.isArray(target)) { + operation.op = 'replace'; // setting `undefined` array elements is a `replace` op + } + } + operation.value = newValue; + } + operation.oldValue = target[key]; + var reflectionResult = Reflect.set(target, key, newValue); + instance.defaultCallback(operation); + return reflectionResult; + } + /** + * A callback to be used as th proxy delete trap callback. + * It updates parenthood map if needed, calls default callbacks with the changes occurred. + * @param {JSONPatcherProxy} instance JSONPatcherProxy instance + * @param {Object} target the effected object + * @param {String} key the effected property's name + */ + function deleteTrap(instance, target, key) { + if (typeof target[key] !== 'undefined') { + var parentPath = findObjectPath(instance, target); + var destinationPropKey = parentPath + '/' + escapePathComponent(key); + + var revokableProxyInstance = instance.proxifiedObjectsMap.get(target[key]); + + if (revokableProxyInstance) { + if (revokableProxyInstance.inherited) { + /* + this is an inherited proxy (an already proxified object that was moved around), + we shouldn't revoke it, because even though it was removed from path1, it is still used in path2. + And we know that because we mark moved proxies with `inherited` flag when we move them + it is a good idea to remove this flag if we come across it here, in deleteProperty trap. + We DO want to revoke the proxy if it was removed again. + */ + revokableProxyInstance.inherited = false; + } else { + instance.parenthoodMap.delete(revokableProxyInstance.originalObject); + instance.disableTrapsForProxy(revokableProxyInstance); + instance.proxifiedObjectsMap.delete(target[key]); + } + } + var reflectionResult = Reflect.deleteProperty(target, key); + + instance.defaultCallback({ + op: 'remove', + path: destinationPropKey + }); + + return reflectionResult; + } + } + /* pre-define resume and pause functions to enhance constructors performance */ + function resume() { + var _this = this; + + this.defaultCallback = function (operation) { + _this.isRecording && _this.patches.push(operation); + _this.userCallback && _this.userCallback(operation); + }; + this.isObserving = true; + } + function pause() { + this.defaultCallback = function () {}; + this.isObserving = false; + } + /** + * Creates an instance of JSONPatcherProxy around your object of interest `root`. + * @param {Object|Array} root - the object you want to wrap + * @param {Boolean} [showDetachedWarning = true] - whether to log a warning when a detached sub-object is modified @see {@link https://github.com/Palindrom/JSONPatcherProxy#detached-objects} + * @returns {JSONPatcherProxy} + * @constructor + */ + function JSONPatcherProxy(root, showDetachedWarning) { + this.isProxifyingTreeNow = false; + this.isObserving = false; + this.proxifiedObjectsMap = new Map(); + this.parenthoodMap = new Map(); + // default to true + if (typeof showDetachedWarning !== 'boolean') { + showDetachedWarning = true; + } + + this.showDetachedWarning = showDetachedWarning; + this.originalObject = root; + this.cachedProxy = null; + this.isRecording = false; + this.userCallback; + /** + * @memberof JSONPatcherProxy + * Restores callback back to the original one provided to `observe`. + */ + this.resume = resume.bind(this); + /** + * @memberof JSONPatcherProxy + * Replaces your callback with a noop function. + */ + this.pause = pause.bind(this); + } + + JSONPatcherProxy.prototype.generateProxyAtPath = function (parent, obj, path) { + var _this2 = this; + + if (!obj) { + return obj; + } + var traps = { + set: function set(target, key, value, receiver) { + return setTrap(_this2, target, key, value, receiver); + }, + deleteProperty: function deleteProperty(target, key) { + return deleteTrap(_this2, target, key); + } + }; + var revocableInstance = Proxy.revocable(obj, traps); + // cache traps object to disable them later. + revocableInstance.trapsInstance = traps; + revocableInstance.originalObject = obj; + + /* keeping track of object's parent and path */ + + this.parenthoodMap.set(obj, { parent: parent, path: path }); + + /* keeping track of all the proxies to be able to revoke them later */ + this.proxifiedObjectsMap.set(revocableInstance.proxy, revocableInstance); + return revocableInstance.proxy; + }; + // grab tree's leaves one by one, encapsulate them into a proxy and return + JSONPatcherProxy.prototype._proxifyObjectTreeRecursively = function (parent, root, path) { + for (var key in root) { + if (root.hasOwnProperty(key)) { + if (root[key] instanceof Object) { + root[key] = this._proxifyObjectTreeRecursively(root, root[key], escapePathComponent(key)); + } + } + } + return this.generateProxyAtPath(parent, root, path); + }; + // this function is for aesthetic purposes + JSONPatcherProxy.prototype.proxifyObjectTree = function (root) { + /* + while proxyifying object tree, + the proxyifying operation itself is being + recorded, which in an unwanted behavior, + that's why we disable recording through this + initial process; + */ + this.pause(); + this.isProxifyingTreeNow = true; + var proxifiedObject = this._proxifyObjectTreeRecursively(undefined, root, ''); + /* OK you can record now */ + this.isProxifyingTreeNow = false; + this.resume(); + return proxifiedObject; + }; + /** + * Turns a proxified object into a forward-proxy object; doesn't emit any patches anymore, like a normal object + * @param {Proxy} proxy - The target proxy object + */ + JSONPatcherProxy.prototype.disableTrapsForProxy = function (revokableProxyInstance) { + if (this.showDetachedWarning) { + var message = "You're accessing an object that is detached from the observedObject tree, see https://github.com/Palindrom/JSONPatcherProxy#detached-objects"; + + revokableProxyInstance.trapsInstance.set = function (targetObject, propKey, newValue) { + console.warn(message); + return Reflect.set(targetObject, propKey, newValue); + }; + revokableProxyInstance.trapsInstance.set = function (targetObject, propKey, newValue) { + console.warn(message); + return Reflect.set(targetObject, propKey, newValue); + }; + revokableProxyInstance.trapsInstance.deleteProperty = function (targetObject, propKey) { + return Reflect.deleteProperty(targetObject, propKey); + }; + } else { + delete revokableProxyInstance.trapsInstance.set; + delete revokableProxyInstance.trapsInstance.get; + delete revokableProxyInstance.trapsInstance.deleteProperty; + } + }; + /** + * Proxifies the object that was passed in the constructor and returns a proxified mirror of it. Even though both parameters are options. You need to pass at least one of them. + * @param {Boolean} [record] - whether to record object changes to a later-retrievable patches array. + * @param {Function} [callback] - this will be synchronously called with every object change with a single `patch` as the only parameter. + */ + JSONPatcherProxy.prototype.observe = function (record, callback) { + if (!record && !callback) { + throw new Error('You need to either record changes or pass a callback'); + } + this.isRecording = record; + this.userCallback = callback; + /* + I moved it here to remove it from `unobserve`, + this will also make the constructor faster, why initiate + the array before they decide to actually observe with recording? + They might need to use only a callback. + */ + if (record) this.patches = []; + this.cachedProxy = this.proxifyObjectTree(this.originalObject); + return this.cachedProxy; + }; + /** + * If the observed is set to record, it will synchronously return all the patches and empties patches array. + */ + JSONPatcherProxy.prototype.generate = function () { + if (!this.isRecording) { + throw new Error('You should set record to true to get patches later'); + } + return this.patches.splice(0, this.patches.length); + }; + /** + * Revokes all proxies rendering the observed object useless and good for garbage collection @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable} + */ + JSONPatcherProxy.prototype.revoke = function () { + this.proxifiedObjectsMap.forEach(function (el) { + el.revoke(); + }); + }; + /** + * Disables all proxies' traps, turning the observed object into a forward-proxy object, like a normal object that you can modify silently. + */ + JSONPatcherProxy.prototype.disableTraps = function () { + this.proxifiedObjectsMap.forEach(this.disableTrapsForProxy, this); + }; + return JSONPatcherProxy; + }(); + + var callbacks = []; + var nextTickCallback = []; + + function tick(fn, scope) { + callbacks.push({ fn: fn, scope: scope }); + } + + function fireTick() { + callbacks.forEach(function (item) { + item.fn.call(item.scope); + }); + + nextTickCallback.forEach(function (nextItem) { + nextItem.fn.call(nextItem.scope); + }); + nextTickCallback.length = 0; + } + + function nextTick(fn, scope) { + nextTickCallback.push({ fn: fn, scope: scope }); + } + + function observe(target) { + target.observe = true; + } + + function proxyUpdate(ele) { + var timeout = null; + ele.data = new JSONPatcherProxy(ele.data).observe(false, function () { + if (ele._willUpdate) { + return; + } + if (ele.constructor.mergeUpdate) { + clearTimeout(timeout); + + timeout = setTimeout(function () { + ele.update(); + fireTick(); + }, 0); + } else { + ele.update(); + fireTick(); + } + }); + } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var OBJECTTYPE = '[object Object]'; + var ARRAYTYPE = '[object Array]'; + + function define(name, ctor) { + if (ctor.is === 'WeElement') { + customElements.define(name, ctor); + options.mapping[name] = ctor; + if (ctor.use) { + ctor.updatePath = getPath(ctor.use); + } else if (ctor.data) { + //Compatible with older versions + ctor.updatePath = getUpdatePath(ctor.data); + } + } else { + var Element = function (_WeElement) { + _inherits(Element, _WeElement); + + function Element() { + var _temp, _this, _ret; + + _classCallCheck(this, Element); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, _WeElement.call.apply(_WeElement, [this].concat(args))), _this), _this._useId = 0, _this._useMap = {}, _this._preCss = null, _temp), _possibleConstructorReturn(_this, _ret); + } + + Element.prototype.render = function render(props, data) { + return ctor.call(this, props, data); + }; + + Element.prototype.beforeRender = function beforeRender() { + this._useId = 0; + }; + + Element.prototype.useCss = function useCss(css) { + if (css === this._preCss) { + return; + } + this._preCss = css; + var style = this.shadowRoot.querySelector('style'); + style && this.shadowRoot.removeChild(style); + this.shadowRoot.appendChild(cssToDom(css)); + }; + + Element.prototype.useData = function useData(data) { + return this.use({ data: data }); + }; + + Element.prototype.use = function use(option) { + var _this2 = this; + + this._useId++; + var updater = function updater(newValue) { + var item = _this2._useMap[updater.id]; + + item.data = newValue; + + _this2.update(); + item.effect && item.effect(); + }; + + updater.id = this._useId; + if (!this._isInstalled) { + this._useMap[this._useId] = option; + return [option.data, updater]; + } + + return [this._useMap[this._useId].data, updater]; + }; + + Element.prototype.installed = function installed() { + this._isInstalled = true; + }; + + return Element; + }(WeElement); + + customElements.define(name, Element); + } + } + + function getPath(obj) { + if (Object.prototype.toString.call(obj) === '[object Array]') { + var result = {}; + obj.forEach(function (item) { + if (typeof item === 'string') { + result[item] = true; + } else { + var tempPath = item[Object.keys(item)[0]]; + if (typeof tempPath === 'string') { + result[tempPath] = true; + } else { + if (typeof tempPath[0] === 'string') { + result[tempPath[0]] = true; + } else { + tempPath[0].forEach(function (path) { + return result[path] = true; + }); + } + } + } + }); + return result; + } else { + return getUpdatePath(obj); + } + } + + function getUpdatePath(data) { + var result = {}; + dataToPath(data, result); + return result; + } + + function dataToPath(data, result) { + Object.keys(data).forEach(function (key) { + result[key] = true; + var type = Object.prototype.toString.call(data[key]); + if (type === OBJECTTYPE) { + _objToPath(data[key], key, result); + } else if (type === ARRAYTYPE) { + _arrayToPath(data[key], key, result); + } + }); + } + + function _objToPath(data, path, result) { + Object.keys(data).forEach(function (key) { + result[path + '.' + key] = true; + delete result[path]; + var type = Object.prototype.toString.call(data[key]); + if (type === OBJECTTYPE) { + _objToPath(data[key], path + '.' + key, result); + } else if (type === ARRAYTYPE) { + _arrayToPath(data[key], path + '.' + key, result); + } + }); + } + + function _arrayToPath(data, path, result) { + data.forEach(function (item, index) { + result[path + '[' + index + ']'] = true; + delete result[path]; + var type = Object.prototype.toString.call(item); + if (type === OBJECTTYPE) { + _objToPath(item, path + '[' + index + ']', result); + } else if (type === ARRAYTYPE) { + _arrayToPath(item, path + '[' + index + ']', result); + } + }); + } + + var reactEvents = ["onAbort", "onAnimationCancel", "onAnimationEnd", "onAnimationIteration", "onAuxClick", "onBlur", "onChange", "onClick", "onClose", "onContextMenu", "onDoubleClick", "onError", "onFocus", "onGotPointerCapture", "onInput", "onKeyDown", "onKeyPress", "onKeyUp", "onLoad", "onLoadEnd", "onLoadStart", "onLostPointerCapture", "onMouseDown", "onMouseMove", "onMouseOut", "onMouseOver", "onMouseUp", "onPointerCancel", "onPointerDown", "onPointerEnter", "onPointerLeave", "onPointerMove", "onPointerOut", "onPointerOver", "onPointerUp", "onReset", "onResize", "onScroll", "onSelect", "onSelectionChange", "onSelectStart", "onSubmit", "onTouchCancel", "onTouchMove", "onTouchStart", "onTransitionCancel", "onTransitionEnd", "onDrag", "onDragEnd", "onDragEnter", "onDragExit", "onDragLeave", "onDragOver", "onDragStart", "onDrop", "onFocusOut"]; + + var divergentNativeEvents = { + onDoubleClick: 'dblclick' + }; + + var mimickedReactEvents = { + onInput: 'onChange', + onFocusOut: 'onBlur', + onSelectionChange: 'onSelect' + }; + + function retargetEvents(shadowRoot) { + + reactEvents.forEach(function (reactEventName) { + + var nativeEventName = getNativeEventName(reactEventName); + + shadowRoot.addEventListener(nativeEventName, function (event) { + + var path = event.path || event.composedPath && event.composedPath() || composedPath(event.target); + + for (var i = 0; i < path.length; i++) { + + var el = path[i]; + var reactComponent = findReactComponent(el); + var props = findReactProps(reactComponent); + + if (reactComponent && props) { + dispatchEvent(event, reactEventName, props); + } + + if (reactComponent && props && mimickedReactEvents[reactEventName]) { + dispatchEvent(event, mimickedReactEvents[reactEventName], props); + } + + if (event.cancelBubble) { + break; + } + + if (el === shadowRoot) { + break; + } + } + }, false); + }); + } + function findReactComponent(item) { + for (var key in item) { + if (item.hasOwnProperty(key) && key.indexOf('_reactInternal') !== -1) { + return item[key]; + } + } + } + + function findReactProps(component) { + if (!component) return undefined; + if (component.memoizedProps) return component.memoizedProps; // React 16 Fiber + if (component._currentElement && component._currentElement.props) return component._currentElement.props; // React <=15 + } + + function dispatchEvent(event, eventType, componentProps) { + if (componentProps[eventType]) { + componentProps[eventType](event); + } + } + + function getNativeEventName(reactEventName) { + if (divergentNativeEvents[reactEventName]) { + return divergentNativeEvents[reactEventName]; + } + return reactEventName.replace(/^on/, '').toLowerCase(); + } + + function composedPath(el) { + var path = []; + while (el) { + path.push(el); + if (el.tagName === 'HTML') { + path.push(document); + path.push(window); + return path; + } + el = el.parentElement; + } + } + + var _class, _temp; + + function _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn$1(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits$1(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var id$1 = 0; + + var WeElement = (_temp = _class = function (_HTMLElement) { + _inherits$1(WeElement, _HTMLElement); + + function WeElement() { + _classCallCheck$1(this, WeElement); + + var _this = _possibleConstructorReturn$1(this, _HTMLElement.call(this)); + + _this.props = Object.assign(nProps(_this.constructor.props), _this.constructor.defaultProps); + _this.elementId = id$1++; + _this.data = {}; + return _this; + } + + WeElement.prototype.connectedCallback = function connectedCallback() { + var p = this.parentNode; + while (p && !this.store) { + this.store = p.store; + p = p.parentNode || p.host; + } + if (this.store) { + this.store.instances.push(this); + } + + if (this.initUse) { + var use = this.initUse(); + this._updatePath = getPath(use); + this.use = getUse(this.store.data, use); + } else { + this.constructor.use && (this.use = getUse(this.store.data, this.constructor.use)); + } + this.beforeInstall(); + !this._isInstalled && this.install(); + this.afterInstall(); + var shadowRoot = void 0; + if (!this.shadowRoot) { + shadowRoot = this.attachShadow({ + mode: 'open' + }); + } else { + shadowRoot = this.shadowRoot; + var fc = void 0; + while (fc = shadowRoot.firstChild) { + shadowRoot.removeChild(fc); + } + } + if (this.constructor.css) { + shadowRoot.appendChild(cssToDom(this.constructor.css)); + } else if (this.css) { + shadowRoot.appendChild(cssToDom(typeof this.css === 'function' ? this.css() : this.css)); + } + retargetEvents(shadowRoot); + !this._isInstalled && this.beforeRender(); + options.afterInstall && options.afterInstall(this); + if (this.constructor.observe) { + this.beforeObserve(); + proxyUpdate(this); + this.observed(); + } + this._host = diff(null, this.render(this.props, this.data, this.store), {}, false, null, false); + this.rendered(); + if (isArray(this._host)) { + this._host.forEach(function (item) { + shadowRoot.appendChild(item); + }); + } else { + shadowRoot.appendChild(this._host); + } + !this._isInstalled && this.installed(); + this._isInstalled = true; + }; + + WeElement.prototype.disconnectedCallback = function disconnectedCallback() { + this.uninstall(); + this._isInstalled = false; + if (this.store) { + for (var i = 0, len = this.store.instances.length; i < len; i++) { + if (this.store.instances[i] === this) { + this.store.instances.splice(i, 1); + break; + } + } + } + }; + + WeElement.prototype.update = function update() { + this._willUpdate = true; + this.beforeUpdate(); + this.beforeRender(); + this._host = diff(this._host, this.render(this.props, this.data, this.store), null, null, this.shadowRoot); + this._willUpdate = false; + this.updated(); + }; + + WeElement.prototype.fire = function fire(name, data) { + this.dispatchEvent(new CustomEvent(name.toLowerCase(), { detail: data })); + }; + + WeElement.prototype.beforeInstall = function beforeInstall() {}; + + WeElement.prototype.install = function install() {}; + + WeElement.prototype.afterInstall = function afterInstall() {}; + + WeElement.prototype.installed = function installed() {}; + + WeElement.prototype.uninstall = function uninstall() {}; + + WeElement.prototype.beforeUpdate = function beforeUpdate() {}; + + WeElement.prototype.updated = function updated() {}; + + WeElement.prototype.beforeRender = function beforeRender() {}; + + WeElement.prototype.rendered = function rendered() {}; + + WeElement.prototype.receiveProps = function receiveProps() {}; + + WeElement.prototype.beforeObserve = function beforeObserve() {}; + + WeElement.prototype.observed = function observed() {}; + + return WeElement; + }(HTMLElement), _class.is = 'WeElement', _temp); + + function render(vnode, parent, store) { + parent = typeof parent === 'string' ? document.querySelector(parent) : parent; + if (store) { + store.instances = []; + extendStoreUpate(store); + + store.data = new JSONPatcherProxy(store.data).observe(false, function (patch) { + var patchs = {}; + if (patch.op === 'remove') { + // fix arr splice + var kv = getArrayPatch(patch.path, store); + patchs[kv.k] = kv.v; + + update(patchs, store); + } else { + var key = fixPath(patch.path); + patchs[key] = patch.value; + + update(patchs, store); + } + }); + parent.store = store; + } + return diff(null, vnode, {}, false, parent, false); + } + + function update(patch, store) { + store.update(patch); + } + + function extendStoreUpate(store) { + store.update = function (patch) { + var _this = this; + + var updateAll = matchGlobalData(this.globalData, patch); + + if (Object.keys(patch).length > 0) { + this.instances.forEach(function (instance) { + if (updateAll || _this.updateAll || instance.constructor.updatePath && needUpdate(patch, instance.constructor.updatePath) || instance._updatePath && needUpdate(patch, instance._updatePath)) { + //update this.use + if (instance.constructor.use) { + instance.use = getUse(store.data, instance.constructor.use); + } else if (instance.initUse) { + instance.use = getUse(store.data, instance.initUse()); + } + + instance.update(); + } + }); + this.onChange && this.onChange(patch); + } + }; + } + + function matchGlobalData(globalData, diffResult) { + if (!globalData) return false; + for (var keyA in diffResult) { + if (globalData.indexOf(keyA) > -1) { + return true; + } + for (var i = 0, len = globalData.length; i < len; i++) { + if (includePath(keyA, globalData[i])) { + return true; + } + } + } + return false; + } + + function needUpdate(diffResult, updatePath) { + for (var keyA in diffResult) { + if (updatePath[keyA]) { + return true; + } + for (var keyB in updatePath) { + if (includePath(keyA, keyB)) { + return true; + } + } + } + return false; + } + + function includePath(pathA, pathB) { + if (pathA.indexOf(pathB) === 0) { + var next = pathA.substr(pathB.length, 1); + if (next === '[' || next === '.') { + return true; + } + } + return false; + } + + function fixPath(path) { + var mpPath = ''; + var arr = path.replace('/', '').split('/'); + arr.forEach(function (item, index) { + if (index) { + if (isNaN(Number(item))) { + mpPath += '.' + item; + } else { + mpPath += '[' + item + ']'; + } + } else { + mpPath += item; + } + }); + return mpPath; + } + + function getArrayPatch(path, store) { + var arr = path.replace('/', '').split('/'); + var current = store.data[arr[0]]; + for (var i = 1, len = arr.length; i < len - 1; i++) { + current = current[arr[i]]; + } + return { k: fixArrPath(path), v: current }; + } + + function fixArrPath(path) { + var mpPath = ''; + var arr = path.replace('/', '').split('/'); + var len = arr.length; + arr.forEach(function (item, index) { + if (index < len - 1) { + if (index) { + if (isNaN(Number(item))) { + mpPath += '.' + item; + } else { + mpPath += '[' + item + ']'; + } + } else { + mpPath += item; + } + } + }); + return mpPath; + } + + function tag(name, pure) { + return function (target) { + target.pure = pure; + define(name, target); + }; + } + + function getHost(ele) { + var p = ele.parentNode; + while (p) { + if (p.host) { + return p.host; + } else if (p.shadowRoot && p.shadowRoot.host) { + return p.shadowRoot.host; + } else { + p = p.parentNode; + } + } + } + + function rpx(str) { + return str.replace(/([1-9]\d*|0)(\.\d*)*rpx/g, function (a, b) { + return window.innerWidth * Number(b) / 750 + 'px'; + }); + } + + var _class$1, _temp$1; + + function _classCallCheck$2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn$2(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits$2(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var ModelView = (_temp$1 = _class$1 = function (_WeElement) { + _inherits$2(ModelView, _WeElement); + + function ModelView() { + _classCallCheck$2(this, ModelView); + + return _possibleConstructorReturn$2(this, _WeElement.apply(this, arguments)); + } + + ModelView.prototype.beforeInstall = function beforeInstall() { + this.data = this.vm.data; + }; + + ModelView.prototype.observed = function observed() { + this.vm.data = this.data; + }; + + return ModelView; + }(WeElement), _class$1.observe = true, _class$1.mergeUpdate = false, _temp$1); + + /** + * classNames based on https://github.com/JedWatson/classnames + * by Jed Watson + * Licensed under the MIT License + * https://github.com/JedWatson/classnames/blob/master/LICENSE + * modified by dntzhang + */ + + var hasOwn = {}.hasOwnProperty; + + function classNames() { + var classes = []; + + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + if (!arg) continue; + + var argType = typeof arg; + + if (argType === 'string' || argType === 'number') { + classes.push(arg); + } else if (Array.isArray(arg) && arg.length) { + var inner = classNames.apply(null, arg); + if (inner) { + classes.push(inner); + } + } else if (argType === 'object') { + for (var key in arg) { + if (hasOwn.call(arg, key) && arg[key]) { + classes.push(key); + } + } + } + } + + return classes.join(' '); + } + + function extractClass() { + var _Array$prototype$slic = Array.prototype.slice.call(arguments, 0), + props = _Array$prototype$slic[0], + args = _Array$prototype$slic.slice(1); + + if (props.class) { + args.unshift(props.class); + delete props.class; + } else if (props.className) { + args.unshift(props.className); + delete props.className; + } + if (args.length > 0) { + return { class: classNames.apply(null, args) }; + } + } + + var n$1=function(t,r,u,e){for(var p=1;p"===t?(a(), u=1):u&&("="===t?(u=4, r=e, e=""):"/"===t?(a(), 3===u&&(s=s[0]), u=s, (s=s[0]).push(u,4), u=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(), u=2):e+=t);}return a(), s},r$1="function"==typeof Map,u$1=r$1?new Map:{},e=r$1?function(n){var r=u$1.get(n);return r||u$1.set(n,r=t$1(n)), r}:function(n){for(var r="",e=0;e1?r:r[0]} + + var html = htm.bind(h); + var h = react.createElement; + var createElement = react.createElement; + var cloneElement = react.cloneElement; + + function createRef() { + return {}; + } + + var Component = WeElement; + var defineElement = define; + + var omi = { + tag: tag, + WeElement: WeElement, + Component: Component, + render: render, + h: h, + createElement: createElement, + options: options, + define: define, + observe: observe, + cloneElement: cloneElement, + getHost: getHost, + rpx: rpx, + tick: tick, + nextTick: nextTick, + ModelView: ModelView, + defineElement: defineElement, + classNames: classNames, + extractClass: extractClass, + createRef: createRef, + html: html, + htm: htm + }; + + options.root.Omi = omi; + options.root.omi = omi; + options.root.Omi.version = '6.1.1'; + + // List of valid entities + + /*eslint quotes:0*/ + var entities = { + "Aacute":"\u00C1", + "aacute":"\u00E1", + "Abreve":"\u0102", + "abreve":"\u0103", + "ac":"\u223E", + "acd":"\u223F", + "acE":"\u223E\u0333", + "Acirc":"\u00C2", + "acirc":"\u00E2", + "acute":"\u00B4", + "Acy":"\u0410", + "acy":"\u0430", + "AElig":"\u00C6", + "aelig":"\u00E6", + "af":"\u2061", + "Afr":"\uD835\uDD04", + "afr":"\uD835\uDD1E", + "Agrave":"\u00C0", + "agrave":"\u00E0", + "alefsym":"\u2135", + "aleph":"\u2135", + "Alpha":"\u0391", + "alpha":"\u03B1", + "Amacr":"\u0100", + "amacr":"\u0101", + "amalg":"\u2A3F", + "AMP":"\u0026", + "amp":"\u0026", + "And":"\u2A53", + "and":"\u2227", + "andand":"\u2A55", + "andd":"\u2A5C", + "andslope":"\u2A58", + "andv":"\u2A5A", + "ang":"\u2220", + "ange":"\u29A4", + "angle":"\u2220", + "angmsd":"\u2221", + "angmsdaa":"\u29A8", + "angmsdab":"\u29A9", + "angmsdac":"\u29AA", + "angmsdad":"\u29AB", + "angmsdae":"\u29AC", + "angmsdaf":"\u29AD", + "angmsdag":"\u29AE", + "angmsdah":"\u29AF", + "angrt":"\u221F", + "angrtvb":"\u22BE", + "angrtvbd":"\u299D", + "angsph":"\u2222", + "angst":"\u00C5", + "angzarr":"\u237C", + "Aogon":"\u0104", + "aogon":"\u0105", + "Aopf":"\uD835\uDD38", + "aopf":"\uD835\uDD52", + "ap":"\u2248", + "apacir":"\u2A6F", + "apE":"\u2A70", + "ape":"\u224A", + "apid":"\u224B", + "apos":"\u0027", + "ApplyFunction":"\u2061", + "approx":"\u2248", + "approxeq":"\u224A", + "Aring":"\u00C5", + "aring":"\u00E5", + "Ascr":"\uD835\uDC9C", + "ascr":"\uD835\uDCB6", + "Assign":"\u2254", + "ast":"\u002A", + "asymp":"\u2248", + "asympeq":"\u224D", + "Atilde":"\u00C3", + "atilde":"\u00E3", + "Auml":"\u00C4", + "auml":"\u00E4", + "awconint":"\u2233", + "awint":"\u2A11", + "backcong":"\u224C", + "backepsilon":"\u03F6", + "backprime":"\u2035", + "backsim":"\u223D", + "backsimeq":"\u22CD", + "Backslash":"\u2216", + "Barv":"\u2AE7", + "barvee":"\u22BD", + "Barwed":"\u2306", + "barwed":"\u2305", + "barwedge":"\u2305", + "bbrk":"\u23B5", + "bbrktbrk":"\u23B6", + "bcong":"\u224C", + "Bcy":"\u0411", + "bcy":"\u0431", + "bdquo":"\u201E", + "becaus":"\u2235", + "Because":"\u2235", + "because":"\u2235", + "bemptyv":"\u29B0", + "bepsi":"\u03F6", + "bernou":"\u212C", + "Bernoullis":"\u212C", + "Beta":"\u0392", + "beta":"\u03B2", + "beth":"\u2136", + "between":"\u226C", + "Bfr":"\uD835\uDD05", + "bfr":"\uD835\uDD1F", + "bigcap":"\u22C2", + "bigcirc":"\u25EF", + "bigcup":"\u22C3", + "bigodot":"\u2A00", + "bigoplus":"\u2A01", + "bigotimes":"\u2A02", + "bigsqcup":"\u2A06", + "bigstar":"\u2605", + "bigtriangledown":"\u25BD", + "bigtriangleup":"\u25B3", + "biguplus":"\u2A04", + "bigvee":"\u22C1", + "bigwedge":"\u22C0", + "bkarow":"\u290D", + "blacklozenge":"\u29EB", + "blacksquare":"\u25AA", + "blacktriangle":"\u25B4", + "blacktriangledown":"\u25BE", + "blacktriangleleft":"\u25C2", + "blacktriangleright":"\u25B8", + "blank":"\u2423", + "blk12":"\u2592", + "blk14":"\u2591", + "blk34":"\u2593", + "block":"\u2588", + "bne":"\u003D\u20E5", + "bnequiv":"\u2261\u20E5", + "bNot":"\u2AED", + "bnot":"\u2310", + "Bopf":"\uD835\uDD39", + "bopf":"\uD835\uDD53", + "bot":"\u22A5", + "bottom":"\u22A5", + "bowtie":"\u22C8", + "boxbox":"\u29C9", + "boxDL":"\u2557", + "boxDl":"\u2556", + "boxdL":"\u2555", + "boxdl":"\u2510", + "boxDR":"\u2554", + "boxDr":"\u2553", + "boxdR":"\u2552", + "boxdr":"\u250C", + "boxH":"\u2550", + "boxh":"\u2500", + "boxHD":"\u2566", + "boxHd":"\u2564", + "boxhD":"\u2565", + "boxhd":"\u252C", + "boxHU":"\u2569", + "boxHu":"\u2567", + "boxhU":"\u2568", + "boxhu":"\u2534", + "boxminus":"\u229F", + "boxplus":"\u229E", + "boxtimes":"\u22A0", + "boxUL":"\u255D", + "boxUl":"\u255C", + "boxuL":"\u255B", + "boxul":"\u2518", + "boxUR":"\u255A", + "boxUr":"\u2559", + "boxuR":"\u2558", + "boxur":"\u2514", + "boxV":"\u2551", + "boxv":"\u2502", + "boxVH":"\u256C", + "boxVh":"\u256B", + "boxvH":"\u256A", + "boxvh":"\u253C", + "boxVL":"\u2563", + "boxVl":"\u2562", + "boxvL":"\u2561", + "boxvl":"\u2524", + "boxVR":"\u2560", + "boxVr":"\u255F", + "boxvR":"\u255E", + "boxvr":"\u251C", + "bprime":"\u2035", + "Breve":"\u02D8", + "breve":"\u02D8", + "brvbar":"\u00A6", + "Bscr":"\u212C", + "bscr":"\uD835\uDCB7", + "bsemi":"\u204F", + "bsim":"\u223D", + "bsime":"\u22CD", + "bsol":"\u005C", + "bsolb":"\u29C5", + "bsolhsub":"\u27C8", + "bull":"\u2022", + "bullet":"\u2022", + "bump":"\u224E", + "bumpE":"\u2AAE", + "bumpe":"\u224F", + "Bumpeq":"\u224E", + "bumpeq":"\u224F", + "Cacute":"\u0106", + "cacute":"\u0107", + "Cap":"\u22D2", + "cap":"\u2229", + "capand":"\u2A44", + "capbrcup":"\u2A49", + "capcap":"\u2A4B", + "capcup":"\u2A47", + "capdot":"\u2A40", + "CapitalDifferentialD":"\u2145", + "caps":"\u2229\uFE00", + "caret":"\u2041", + "caron":"\u02C7", + "Cayleys":"\u212D", + "ccaps":"\u2A4D", + "Ccaron":"\u010C", + "ccaron":"\u010D", + "Ccedil":"\u00C7", + "ccedil":"\u00E7", + "Ccirc":"\u0108", + "ccirc":"\u0109", + "Cconint":"\u2230", + "ccups":"\u2A4C", + "ccupssm":"\u2A50", + "Cdot":"\u010A", + "cdot":"\u010B", + "cedil":"\u00B8", + "Cedilla":"\u00B8", + "cemptyv":"\u29B2", + "cent":"\u00A2", + "CenterDot":"\u00B7", + "centerdot":"\u00B7", + "Cfr":"\u212D", + "cfr":"\uD835\uDD20", + "CHcy":"\u0427", + "chcy":"\u0447", + "check":"\u2713", + "checkmark":"\u2713", + "Chi":"\u03A7", + "chi":"\u03C7", + "cir":"\u25CB", + "circ":"\u02C6", + "circeq":"\u2257", + "circlearrowleft":"\u21BA", + "circlearrowright":"\u21BB", + "circledast":"\u229B", + "circledcirc":"\u229A", + "circleddash":"\u229D", + "CircleDot":"\u2299", + "circledR":"\u00AE", + "circledS":"\u24C8", + "CircleMinus":"\u2296", + "CirclePlus":"\u2295", + "CircleTimes":"\u2297", + "cirE":"\u29C3", + "cire":"\u2257", + "cirfnint":"\u2A10", + "cirmid":"\u2AEF", + "cirscir":"\u29C2", + "ClockwiseContourIntegral":"\u2232", + "CloseCurlyDoubleQuote":"\u201D", + "CloseCurlyQuote":"\u2019", + "clubs":"\u2663", + "clubsuit":"\u2663", + "Colon":"\u2237", + "colon":"\u003A", + "Colone":"\u2A74", + "colone":"\u2254", + "coloneq":"\u2254", + "comma":"\u002C", + "commat":"\u0040", + "comp":"\u2201", + "compfn":"\u2218", + "complement":"\u2201", + "complexes":"\u2102", + "cong":"\u2245", + "congdot":"\u2A6D", + "Congruent":"\u2261", + "Conint":"\u222F", + "conint":"\u222E", + "ContourIntegral":"\u222E", + "Copf":"\u2102", + "copf":"\uD835\uDD54", + "coprod":"\u2210", + "Coproduct":"\u2210", + "COPY":"\u00A9", + "copy":"\u00A9", + "copysr":"\u2117", + "CounterClockwiseContourIntegral":"\u2233", + "crarr":"\u21B5", + "Cross":"\u2A2F", + "cross":"\u2717", + "Cscr":"\uD835\uDC9E", + "cscr":"\uD835\uDCB8", + "csub":"\u2ACF", + "csube":"\u2AD1", + "csup":"\u2AD0", + "csupe":"\u2AD2", + "ctdot":"\u22EF", + "cudarrl":"\u2938", + "cudarrr":"\u2935", + "cuepr":"\u22DE", + "cuesc":"\u22DF", + "cularr":"\u21B6", + "cularrp":"\u293D", + "Cup":"\u22D3", + "cup":"\u222A", + "cupbrcap":"\u2A48", + "CupCap":"\u224D", + "cupcap":"\u2A46", + "cupcup":"\u2A4A", + "cupdot":"\u228D", + "cupor":"\u2A45", + "cups":"\u222A\uFE00", + "curarr":"\u21B7", + "curarrm":"\u293C", + "curlyeqprec":"\u22DE", + "curlyeqsucc":"\u22DF", + "curlyvee":"\u22CE", + "curlywedge":"\u22CF", + "curren":"\u00A4", + "curvearrowleft":"\u21B6", + "curvearrowright":"\u21B7", + "cuvee":"\u22CE", + "cuwed":"\u22CF", + "cwconint":"\u2232", + "cwint":"\u2231", + "cylcty":"\u232D", + "Dagger":"\u2021", + "dagger":"\u2020", + "daleth":"\u2138", + "Darr":"\u21A1", + "dArr":"\u21D3", + "darr":"\u2193", + "dash":"\u2010", + "Dashv":"\u2AE4", + "dashv":"\u22A3", + "dbkarow":"\u290F", + "dblac":"\u02DD", + "Dcaron":"\u010E", + "dcaron":"\u010F", + "Dcy":"\u0414", + "dcy":"\u0434", + "DD":"\u2145", + "dd":"\u2146", + "ddagger":"\u2021", + "ddarr":"\u21CA", + "DDotrahd":"\u2911", + "ddotseq":"\u2A77", + "deg":"\u00B0", + "Del":"\u2207", + "Delta":"\u0394", + "delta":"\u03B4", + "demptyv":"\u29B1", + "dfisht":"\u297F", + "Dfr":"\uD835\uDD07", + "dfr":"\uD835\uDD21", + "dHar":"\u2965", + "dharl":"\u21C3", + "dharr":"\u21C2", + "DiacriticalAcute":"\u00B4", + "DiacriticalDot":"\u02D9", + "DiacriticalDoubleAcute":"\u02DD", + "DiacriticalGrave":"\u0060", + "DiacriticalTilde":"\u02DC", + "diam":"\u22C4", + "Diamond":"\u22C4", + "diamond":"\u22C4", + "diamondsuit":"\u2666", + "diams":"\u2666", + "die":"\u00A8", + "DifferentialD":"\u2146", + "digamma":"\u03DD", + "disin":"\u22F2", + "div":"\u00F7", + "divide":"\u00F7", + "divideontimes":"\u22C7", + "divonx":"\u22C7", + "DJcy":"\u0402", + "djcy":"\u0452", + "dlcorn":"\u231E", + "dlcrop":"\u230D", + "dollar":"\u0024", + "Dopf":"\uD835\uDD3B", + "dopf":"\uD835\uDD55", + "Dot":"\u00A8", + "dot":"\u02D9", + "DotDot":"\u20DC", + "doteq":"\u2250", + "doteqdot":"\u2251", + "DotEqual":"\u2250", + "dotminus":"\u2238", + "dotplus":"\u2214", + "dotsquare":"\u22A1", + "doublebarwedge":"\u2306", + "DoubleContourIntegral":"\u222F", + "DoubleDot":"\u00A8", + "DoubleDownArrow":"\u21D3", + "DoubleLeftArrow":"\u21D0", + "DoubleLeftRightArrow":"\u21D4", + "DoubleLeftTee":"\u2AE4", + "DoubleLongLeftArrow":"\u27F8", + "DoubleLongLeftRightArrow":"\u27FA", + "DoubleLongRightArrow":"\u27F9", + "DoubleRightArrow":"\u21D2", + "DoubleRightTee":"\u22A8", + "DoubleUpArrow":"\u21D1", + "DoubleUpDownArrow":"\u21D5", + "DoubleVerticalBar":"\u2225", + "DownArrow":"\u2193", + "Downarrow":"\u21D3", + "downarrow":"\u2193", + "DownArrowBar":"\u2913", + "DownArrowUpArrow":"\u21F5", + "DownBreve":"\u0311", + "downdownarrows":"\u21CA", + "downharpoonleft":"\u21C3", + "downharpoonright":"\u21C2", + "DownLeftRightVector":"\u2950", + "DownLeftTeeVector":"\u295E", + "DownLeftVector":"\u21BD", + "DownLeftVectorBar":"\u2956", + "DownRightTeeVector":"\u295F", + "DownRightVector":"\u21C1", + "DownRightVectorBar":"\u2957", + "DownTee":"\u22A4", + "DownTeeArrow":"\u21A7", + "drbkarow":"\u2910", + "drcorn":"\u231F", + "drcrop":"\u230C", + "Dscr":"\uD835\uDC9F", + "dscr":"\uD835\uDCB9", + "DScy":"\u0405", + "dscy":"\u0455", + "dsol":"\u29F6", + "Dstrok":"\u0110", + "dstrok":"\u0111", + "dtdot":"\u22F1", + "dtri":"\u25BF", + "dtrif":"\u25BE", + "duarr":"\u21F5", + "duhar":"\u296F", + "dwangle":"\u29A6", + "DZcy":"\u040F", + "dzcy":"\u045F", + "dzigrarr":"\u27FF", + "Eacute":"\u00C9", + "eacute":"\u00E9", + "easter":"\u2A6E", + "Ecaron":"\u011A", + "ecaron":"\u011B", + "ecir":"\u2256", + "Ecirc":"\u00CA", + "ecirc":"\u00EA", + "ecolon":"\u2255", + "Ecy":"\u042D", + "ecy":"\u044D", + "eDDot":"\u2A77", + "Edot":"\u0116", + "eDot":"\u2251", + "edot":"\u0117", + "ee":"\u2147", + "efDot":"\u2252", + "Efr":"\uD835\uDD08", + "efr":"\uD835\uDD22", + "eg":"\u2A9A", + "Egrave":"\u00C8", + "egrave":"\u00E8", + "egs":"\u2A96", + "egsdot":"\u2A98", + "el":"\u2A99", + "Element":"\u2208", + "elinters":"\u23E7", + "ell":"\u2113", + "els":"\u2A95", + "elsdot":"\u2A97", + "Emacr":"\u0112", + "emacr":"\u0113", + "empty":"\u2205", + "emptyset":"\u2205", + "EmptySmallSquare":"\u25FB", + "emptyv":"\u2205", + "EmptyVerySmallSquare":"\u25AB", + "emsp":"\u2003", + "emsp13":"\u2004", + "emsp14":"\u2005", + "ENG":"\u014A", + "eng":"\u014B", + "ensp":"\u2002", + "Eogon":"\u0118", + "eogon":"\u0119", + "Eopf":"\uD835\uDD3C", + "eopf":"\uD835\uDD56", + "epar":"\u22D5", + "eparsl":"\u29E3", + "eplus":"\u2A71", + "epsi":"\u03B5", + "Epsilon":"\u0395", + "epsilon":"\u03B5", + "epsiv":"\u03F5", + "eqcirc":"\u2256", + "eqcolon":"\u2255", + "eqsim":"\u2242", + "eqslantgtr":"\u2A96", + "eqslantless":"\u2A95", + "Equal":"\u2A75", + "equals":"\u003D", + "EqualTilde":"\u2242", + "equest":"\u225F", + "Equilibrium":"\u21CC", + "equiv":"\u2261", + "equivDD":"\u2A78", + "eqvparsl":"\u29E5", + "erarr":"\u2971", + "erDot":"\u2253", + "Escr":"\u2130", + "escr":"\u212F", + "esdot":"\u2250", + "Esim":"\u2A73", + "esim":"\u2242", + "Eta":"\u0397", + "eta":"\u03B7", + "ETH":"\u00D0", + "eth":"\u00F0", + "Euml":"\u00CB", + "euml":"\u00EB", + "euro":"\u20AC", + "excl":"\u0021", + "exist":"\u2203", + "Exists":"\u2203", + "expectation":"\u2130", + "ExponentialE":"\u2147", + "exponentiale":"\u2147", + "fallingdotseq":"\u2252", + "Fcy":"\u0424", + "fcy":"\u0444", + "female":"\u2640", + "ffilig":"\uFB03", + "fflig":"\uFB00", + "ffllig":"\uFB04", + "Ffr":"\uD835\uDD09", + "ffr":"\uD835\uDD23", + "filig":"\uFB01", + "FilledSmallSquare":"\u25FC", + "FilledVerySmallSquare":"\u25AA", + "fjlig":"\u0066\u006A", + "flat":"\u266D", + "fllig":"\uFB02", + "fltns":"\u25B1", + "fnof":"\u0192", + "Fopf":"\uD835\uDD3D", + "fopf":"\uD835\uDD57", + "ForAll":"\u2200", + "forall":"\u2200", + "fork":"\u22D4", + "forkv":"\u2AD9", + "Fouriertrf":"\u2131", + "fpartint":"\u2A0D", + "frac12":"\u00BD", + "frac13":"\u2153", + "frac14":"\u00BC", + "frac15":"\u2155", + "frac16":"\u2159", + "frac18":"\u215B", + "frac23":"\u2154", + "frac25":"\u2156", + "frac34":"\u00BE", + "frac35":"\u2157", + "frac38":"\u215C", + "frac45":"\u2158", + "frac56":"\u215A", + "frac58":"\u215D", + "frac78":"\u215E", + "frasl":"\u2044", + "frown":"\u2322", + "Fscr":"\u2131", + "fscr":"\uD835\uDCBB", + "gacute":"\u01F5", + "Gamma":"\u0393", + "gamma":"\u03B3", + "Gammad":"\u03DC", + "gammad":"\u03DD", + "gap":"\u2A86", + "Gbreve":"\u011E", + "gbreve":"\u011F", + "Gcedil":"\u0122", + "Gcirc":"\u011C", + "gcirc":"\u011D", + "Gcy":"\u0413", + "gcy":"\u0433", + "Gdot":"\u0120", + "gdot":"\u0121", + "gE":"\u2267", + "ge":"\u2265", + "gEl":"\u2A8C", + "gel":"\u22DB", + "geq":"\u2265", + "geqq":"\u2267", + "geqslant":"\u2A7E", + "ges":"\u2A7E", + "gescc":"\u2AA9", + "gesdot":"\u2A80", + "gesdoto":"\u2A82", + "gesdotol":"\u2A84", + "gesl":"\u22DB\uFE00", + "gesles":"\u2A94", + "Gfr":"\uD835\uDD0A", + "gfr":"\uD835\uDD24", + "Gg":"\u22D9", + "gg":"\u226B", + "ggg":"\u22D9", + "gimel":"\u2137", + "GJcy":"\u0403", + "gjcy":"\u0453", + "gl":"\u2277", + "gla":"\u2AA5", + "glE":"\u2A92", + "glj":"\u2AA4", + "gnap":"\u2A8A", + "gnapprox":"\u2A8A", + "gnE":"\u2269", + "gne":"\u2A88", + "gneq":"\u2A88", + "gneqq":"\u2269", + "gnsim":"\u22E7", + "Gopf":"\uD835\uDD3E", + "gopf":"\uD835\uDD58", + "grave":"\u0060", + "GreaterEqual":"\u2265", + "GreaterEqualLess":"\u22DB", + "GreaterFullEqual":"\u2267", + "GreaterGreater":"\u2AA2", + "GreaterLess":"\u2277", + "GreaterSlantEqual":"\u2A7E", + "GreaterTilde":"\u2273", + "Gscr":"\uD835\uDCA2", + "gscr":"\u210A", + "gsim":"\u2273", + "gsime":"\u2A8E", + "gsiml":"\u2A90", + "GT":"\u003E", + "Gt":"\u226B", + "gt":"\u003E", + "gtcc":"\u2AA7", + "gtcir":"\u2A7A", + "gtdot":"\u22D7", + "gtlPar":"\u2995", + "gtquest":"\u2A7C", + "gtrapprox":"\u2A86", + "gtrarr":"\u2978", + "gtrdot":"\u22D7", + "gtreqless":"\u22DB", + "gtreqqless":"\u2A8C", + "gtrless":"\u2277", + "gtrsim":"\u2273", + "gvertneqq":"\u2269\uFE00", + "gvnE":"\u2269\uFE00", + "Hacek":"\u02C7", + "hairsp":"\u200A", + "half":"\u00BD", + "hamilt":"\u210B", + "HARDcy":"\u042A", + "hardcy":"\u044A", + "hArr":"\u21D4", + "harr":"\u2194", + "harrcir":"\u2948", + "harrw":"\u21AD", + "Hat":"\u005E", + "hbar":"\u210F", + "Hcirc":"\u0124", + "hcirc":"\u0125", + "hearts":"\u2665", + "heartsuit":"\u2665", + "hellip":"\u2026", + "hercon":"\u22B9", + "Hfr":"\u210C", + "hfr":"\uD835\uDD25", + "HilbertSpace":"\u210B", + "hksearow":"\u2925", + "hkswarow":"\u2926", + "hoarr":"\u21FF", + "homtht":"\u223B", + "hookleftarrow":"\u21A9", + "hookrightarrow":"\u21AA", + "Hopf":"\u210D", + "hopf":"\uD835\uDD59", + "horbar":"\u2015", + "HorizontalLine":"\u2500", + "Hscr":"\u210B", + "hscr":"\uD835\uDCBD", + "hslash":"\u210F", + "Hstrok":"\u0126", + "hstrok":"\u0127", + "HumpDownHump":"\u224E", + "HumpEqual":"\u224F", + "hybull":"\u2043", + "hyphen":"\u2010", + "Iacute":"\u00CD", + "iacute":"\u00ED", + "ic":"\u2063", + "Icirc":"\u00CE", + "icirc":"\u00EE", + "Icy":"\u0418", + "icy":"\u0438", + "Idot":"\u0130", + "IEcy":"\u0415", + "iecy":"\u0435", + "iexcl":"\u00A1", + "iff":"\u21D4", + "Ifr":"\u2111", + "ifr":"\uD835\uDD26", + "Igrave":"\u00CC", + "igrave":"\u00EC", + "ii":"\u2148", + "iiiint":"\u2A0C", + "iiint":"\u222D", + "iinfin":"\u29DC", + "iiota":"\u2129", + "IJlig":"\u0132", + "ijlig":"\u0133", + "Im":"\u2111", + "Imacr":"\u012A", + "imacr":"\u012B", + "image":"\u2111", + "ImaginaryI":"\u2148", + "imagline":"\u2110", + "imagpart":"\u2111", + "imath":"\u0131", + "imof":"\u22B7", + "imped":"\u01B5", + "Implies":"\u21D2", + "in":"\u2208", + "incare":"\u2105", + "infin":"\u221E", + "infintie":"\u29DD", + "inodot":"\u0131", + "Int":"\u222C", + "int":"\u222B", + "intcal":"\u22BA", + "integers":"\u2124", + "Integral":"\u222B", + "intercal":"\u22BA", + "Intersection":"\u22C2", + "intlarhk":"\u2A17", + "intprod":"\u2A3C", + "InvisibleComma":"\u2063", + "InvisibleTimes":"\u2062", + "IOcy":"\u0401", + "iocy":"\u0451", + "Iogon":"\u012E", + "iogon":"\u012F", + "Iopf":"\uD835\uDD40", + "iopf":"\uD835\uDD5A", + "Iota":"\u0399", + "iota":"\u03B9", + "iprod":"\u2A3C", + "iquest":"\u00BF", + "Iscr":"\u2110", + "iscr":"\uD835\uDCBE", + "isin":"\u2208", + "isindot":"\u22F5", + "isinE":"\u22F9", + "isins":"\u22F4", + "isinsv":"\u22F3", + "isinv":"\u2208", + "it":"\u2062", + "Itilde":"\u0128", + "itilde":"\u0129", + "Iukcy":"\u0406", + "iukcy":"\u0456", + "Iuml":"\u00CF", + "iuml":"\u00EF", + "Jcirc":"\u0134", + "jcirc":"\u0135", + "Jcy":"\u0419", + "jcy":"\u0439", + "Jfr":"\uD835\uDD0D", + "jfr":"\uD835\uDD27", + "jmath":"\u0237", + "Jopf":"\uD835\uDD41", + "jopf":"\uD835\uDD5B", + "Jscr":"\uD835\uDCA5", + "jscr":"\uD835\uDCBF", + "Jsercy":"\u0408", + "jsercy":"\u0458", + "Jukcy":"\u0404", + "jukcy":"\u0454", + "Kappa":"\u039A", + "kappa":"\u03BA", + "kappav":"\u03F0", + "Kcedil":"\u0136", + "kcedil":"\u0137", + "Kcy":"\u041A", + "kcy":"\u043A", + "Kfr":"\uD835\uDD0E", + "kfr":"\uD835\uDD28", + "kgreen":"\u0138", + "KHcy":"\u0425", + "khcy":"\u0445", + "KJcy":"\u040C", + "kjcy":"\u045C", + "Kopf":"\uD835\uDD42", + "kopf":"\uD835\uDD5C", + "Kscr":"\uD835\uDCA6", + "kscr":"\uD835\uDCC0", + "lAarr":"\u21DA", + "Lacute":"\u0139", + "lacute":"\u013A", + "laemptyv":"\u29B4", + "lagran":"\u2112", + "Lambda":"\u039B", + "lambda":"\u03BB", + "Lang":"\u27EA", + "lang":"\u27E8", + "langd":"\u2991", + "langle":"\u27E8", + "lap":"\u2A85", + "Laplacetrf":"\u2112", + "laquo":"\u00AB", + "Larr":"\u219E", + "lArr":"\u21D0", + "larr":"\u2190", + "larrb":"\u21E4", + "larrbfs":"\u291F", + "larrfs":"\u291D", + "larrhk":"\u21A9", + "larrlp":"\u21AB", + "larrpl":"\u2939", + "larrsim":"\u2973", + "larrtl":"\u21A2", + "lat":"\u2AAB", + "lAtail":"\u291B", + "latail":"\u2919", + "late":"\u2AAD", + "lates":"\u2AAD\uFE00", + "lBarr":"\u290E", + "lbarr":"\u290C", + "lbbrk":"\u2772", + "lbrace":"\u007B", + "lbrack":"\u005B", + "lbrke":"\u298B", + "lbrksld":"\u298F", + "lbrkslu":"\u298D", + "Lcaron":"\u013D", + "lcaron":"\u013E", + "Lcedil":"\u013B", + "lcedil":"\u013C", + "lceil":"\u2308", + "lcub":"\u007B", + "Lcy":"\u041B", + "lcy":"\u043B", + "ldca":"\u2936", + "ldquo":"\u201C", + "ldquor":"\u201E", + "ldrdhar":"\u2967", + "ldrushar":"\u294B", + "ldsh":"\u21B2", + "lE":"\u2266", + "le":"\u2264", + "LeftAngleBracket":"\u27E8", + "LeftArrow":"\u2190", + "Leftarrow":"\u21D0", + "leftarrow":"\u2190", + "LeftArrowBar":"\u21E4", + "LeftArrowRightArrow":"\u21C6", + "leftarrowtail":"\u21A2", + "LeftCeiling":"\u2308", + "LeftDoubleBracket":"\u27E6", + "LeftDownTeeVector":"\u2961", + "LeftDownVector":"\u21C3", + "LeftDownVectorBar":"\u2959", + "LeftFloor":"\u230A", + "leftharpoondown":"\u21BD", + "leftharpoonup":"\u21BC", + "leftleftarrows":"\u21C7", + "LeftRightArrow":"\u2194", + "Leftrightarrow":"\u21D4", + "leftrightarrow":"\u2194", + "leftrightarrows":"\u21C6", + "leftrightharpoons":"\u21CB", + "leftrightsquigarrow":"\u21AD", + "LeftRightVector":"\u294E", + "LeftTee":"\u22A3", + "LeftTeeArrow":"\u21A4", + "LeftTeeVector":"\u295A", + "leftthreetimes":"\u22CB", + "LeftTriangle":"\u22B2", + "LeftTriangleBar":"\u29CF", + "LeftTriangleEqual":"\u22B4", + "LeftUpDownVector":"\u2951", + "LeftUpTeeVector":"\u2960", + "LeftUpVector":"\u21BF", + "LeftUpVectorBar":"\u2958", + "LeftVector":"\u21BC", + "LeftVectorBar":"\u2952", + "lEg":"\u2A8B", + "leg":"\u22DA", + "leq":"\u2264", + "leqq":"\u2266", + "leqslant":"\u2A7D", + "les":"\u2A7D", + "lescc":"\u2AA8", + "lesdot":"\u2A7F", + "lesdoto":"\u2A81", + "lesdotor":"\u2A83", + "lesg":"\u22DA\uFE00", + "lesges":"\u2A93", + "lessapprox":"\u2A85", + "lessdot":"\u22D6", + "lesseqgtr":"\u22DA", + "lesseqqgtr":"\u2A8B", + "LessEqualGreater":"\u22DA", + "LessFullEqual":"\u2266", + "LessGreater":"\u2276", + "lessgtr":"\u2276", + "LessLess":"\u2AA1", + "lesssim":"\u2272", + "LessSlantEqual":"\u2A7D", + "LessTilde":"\u2272", + "lfisht":"\u297C", + "lfloor":"\u230A", + "Lfr":"\uD835\uDD0F", + "lfr":"\uD835\uDD29", + "lg":"\u2276", + "lgE":"\u2A91", + "lHar":"\u2962", + "lhard":"\u21BD", + "lharu":"\u21BC", + "lharul":"\u296A", + "lhblk":"\u2584", + "LJcy":"\u0409", + "ljcy":"\u0459", + "Ll":"\u22D8", + "ll":"\u226A", + "llarr":"\u21C7", + "llcorner":"\u231E", + "Lleftarrow":"\u21DA", + "llhard":"\u296B", + "lltri":"\u25FA", + "Lmidot":"\u013F", + "lmidot":"\u0140", + "lmoust":"\u23B0", + "lmoustache":"\u23B0", + "lnap":"\u2A89", + "lnapprox":"\u2A89", + "lnE":"\u2268", + "lne":"\u2A87", + "lneq":"\u2A87", + "lneqq":"\u2268", + "lnsim":"\u22E6", + "loang":"\u27EC", + "loarr":"\u21FD", + "lobrk":"\u27E6", + "LongLeftArrow":"\u27F5", + "Longleftarrow":"\u27F8", + "longleftarrow":"\u27F5", + "LongLeftRightArrow":"\u27F7", + "Longleftrightarrow":"\u27FA", + "longleftrightarrow":"\u27F7", + "longmapsto":"\u27FC", + "LongRightArrow":"\u27F6", + "Longrightarrow":"\u27F9", + "longrightarrow":"\u27F6", + "looparrowleft":"\u21AB", + "looparrowright":"\u21AC", + "lopar":"\u2985", + "Lopf":"\uD835\uDD43", + "lopf":"\uD835\uDD5D", + "loplus":"\u2A2D", + "lotimes":"\u2A34", + "lowast":"\u2217", + "lowbar":"\u005F", + "LowerLeftArrow":"\u2199", + "LowerRightArrow":"\u2198", + "loz":"\u25CA", + "lozenge":"\u25CA", + "lozf":"\u29EB", + "lpar":"\u0028", + "lparlt":"\u2993", + "lrarr":"\u21C6", + "lrcorner":"\u231F", + "lrhar":"\u21CB", + "lrhard":"\u296D", + "lrm":"\u200E", + "lrtri":"\u22BF", + "lsaquo":"\u2039", + "Lscr":"\u2112", + "lscr":"\uD835\uDCC1", + "Lsh":"\u21B0", + "lsh":"\u21B0", + "lsim":"\u2272", + "lsime":"\u2A8D", + "lsimg":"\u2A8F", + "lsqb":"\u005B", + "lsquo":"\u2018", + "lsquor":"\u201A", + "Lstrok":"\u0141", + "lstrok":"\u0142", + "LT":"\u003C", + "Lt":"\u226A", + "lt":"\u003C", + "ltcc":"\u2AA6", + "ltcir":"\u2A79", + "ltdot":"\u22D6", + "lthree":"\u22CB", + "ltimes":"\u22C9", + "ltlarr":"\u2976", + "ltquest":"\u2A7B", + "ltri":"\u25C3", + "ltrie":"\u22B4", + "ltrif":"\u25C2", + "ltrPar":"\u2996", + "lurdshar":"\u294A", + "luruhar":"\u2966", + "lvertneqq":"\u2268\uFE00", + "lvnE":"\u2268\uFE00", + "macr":"\u00AF", + "male":"\u2642", + "malt":"\u2720", + "maltese":"\u2720", + "Map":"\u2905", + "map":"\u21A6", + "mapsto":"\u21A6", + "mapstodown":"\u21A7", + "mapstoleft":"\u21A4", + "mapstoup":"\u21A5", + "marker":"\u25AE", + "mcomma":"\u2A29", + "Mcy":"\u041C", + "mcy":"\u043C", + "mdash":"\u2014", + "mDDot":"\u223A", + "measuredangle":"\u2221", + "MediumSpace":"\u205F", + "Mellintrf":"\u2133", + "Mfr":"\uD835\uDD10", + "mfr":"\uD835\uDD2A", + "mho":"\u2127", + "micro":"\u00B5", + "mid":"\u2223", + "midast":"\u002A", + "midcir":"\u2AF0", + "middot":"\u00B7", + "minus":"\u2212", + "minusb":"\u229F", + "minusd":"\u2238", + "minusdu":"\u2A2A", + "MinusPlus":"\u2213", + "mlcp":"\u2ADB", + "mldr":"\u2026", + "mnplus":"\u2213", + "models":"\u22A7", + "Mopf":"\uD835\uDD44", + "mopf":"\uD835\uDD5E", + "mp":"\u2213", + "Mscr":"\u2133", + "mscr":"\uD835\uDCC2", + "mstpos":"\u223E", + "Mu":"\u039C", + "mu":"\u03BC", + "multimap":"\u22B8", + "mumap":"\u22B8", + "nabla":"\u2207", + "Nacute":"\u0143", + "nacute":"\u0144", + "nang":"\u2220\u20D2", + "nap":"\u2249", + "napE":"\u2A70\u0338", + "napid":"\u224B\u0338", + "napos":"\u0149", + "napprox":"\u2249", + "natur":"\u266E", + "natural":"\u266E", + "naturals":"\u2115", + "nbsp":"\u00A0", + "nbump":"\u224E\u0338", + "nbumpe":"\u224F\u0338", + "ncap":"\u2A43", + "Ncaron":"\u0147", + "ncaron":"\u0148", + "Ncedil":"\u0145", + "ncedil":"\u0146", + "ncong":"\u2247", + "ncongdot":"\u2A6D\u0338", + "ncup":"\u2A42", + "Ncy":"\u041D", + "ncy":"\u043D", + "ndash":"\u2013", + "ne":"\u2260", + "nearhk":"\u2924", + "neArr":"\u21D7", + "nearr":"\u2197", + "nearrow":"\u2197", + "nedot":"\u2250\u0338", + "NegativeMediumSpace":"\u200B", + "NegativeThickSpace":"\u200B", + "NegativeThinSpace":"\u200B", + "NegativeVeryThinSpace":"\u200B", + "nequiv":"\u2262", + "nesear":"\u2928", + "nesim":"\u2242\u0338", + "NestedGreaterGreater":"\u226B", + "NestedLessLess":"\u226A", + "NewLine":"\u000A", + "nexist":"\u2204", + "nexists":"\u2204", + "Nfr":"\uD835\uDD11", + "nfr":"\uD835\uDD2B", + "ngE":"\u2267\u0338", + "nge":"\u2271", + "ngeq":"\u2271", + "ngeqq":"\u2267\u0338", + "ngeqslant":"\u2A7E\u0338", + "nges":"\u2A7E\u0338", + "nGg":"\u22D9\u0338", + "ngsim":"\u2275", + "nGt":"\u226B\u20D2", + "ngt":"\u226F", + "ngtr":"\u226F", + "nGtv":"\u226B\u0338", + "nhArr":"\u21CE", + "nharr":"\u21AE", + "nhpar":"\u2AF2", + "ni":"\u220B", + "nis":"\u22FC", + "nisd":"\u22FA", + "niv":"\u220B", + "NJcy":"\u040A", + "njcy":"\u045A", + "nlArr":"\u21CD", + "nlarr":"\u219A", + "nldr":"\u2025", + "nlE":"\u2266\u0338", + "nle":"\u2270", + "nLeftarrow":"\u21CD", + "nleftarrow":"\u219A", + "nLeftrightarrow":"\u21CE", + "nleftrightarrow":"\u21AE", + "nleq":"\u2270", + "nleqq":"\u2266\u0338", + "nleqslant":"\u2A7D\u0338", + "nles":"\u2A7D\u0338", + "nless":"\u226E", + "nLl":"\u22D8\u0338", + "nlsim":"\u2274", + "nLt":"\u226A\u20D2", + "nlt":"\u226E", + "nltri":"\u22EA", + "nltrie":"\u22EC", + "nLtv":"\u226A\u0338", + "nmid":"\u2224", + "NoBreak":"\u2060", + "NonBreakingSpace":"\u00A0", + "Nopf":"\u2115", + "nopf":"\uD835\uDD5F", + "Not":"\u2AEC", + "not":"\u00AC", + "NotCongruent":"\u2262", + "NotCupCap":"\u226D", + "NotDoubleVerticalBar":"\u2226", + "NotElement":"\u2209", + "NotEqual":"\u2260", + "NotEqualTilde":"\u2242\u0338", + "NotExists":"\u2204", + "NotGreater":"\u226F", + "NotGreaterEqual":"\u2271", + "NotGreaterFullEqual":"\u2267\u0338", + "NotGreaterGreater":"\u226B\u0338", + "NotGreaterLess":"\u2279", + "NotGreaterSlantEqual":"\u2A7E\u0338", + "NotGreaterTilde":"\u2275", + "NotHumpDownHump":"\u224E\u0338", + "NotHumpEqual":"\u224F\u0338", + "notin":"\u2209", + "notindot":"\u22F5\u0338", + "notinE":"\u22F9\u0338", + "notinva":"\u2209", + "notinvb":"\u22F7", + "notinvc":"\u22F6", + "NotLeftTriangle":"\u22EA", + "NotLeftTriangleBar":"\u29CF\u0338", + "NotLeftTriangleEqual":"\u22EC", + "NotLess":"\u226E", + "NotLessEqual":"\u2270", + "NotLessGreater":"\u2278", + "NotLessLess":"\u226A\u0338", + "NotLessSlantEqual":"\u2A7D\u0338", + "NotLessTilde":"\u2274", + "NotNestedGreaterGreater":"\u2AA2\u0338", + "NotNestedLessLess":"\u2AA1\u0338", + "notni":"\u220C", + "notniva":"\u220C", + "notnivb":"\u22FE", + "notnivc":"\u22FD", + "NotPrecedes":"\u2280", + "NotPrecedesEqual":"\u2AAF\u0338", + "NotPrecedesSlantEqual":"\u22E0", + "NotReverseElement":"\u220C", + "NotRightTriangle":"\u22EB", + "NotRightTriangleBar":"\u29D0\u0338", + "NotRightTriangleEqual":"\u22ED", + "NotSquareSubset":"\u228F\u0338", + "NotSquareSubsetEqual":"\u22E2", + "NotSquareSuperset":"\u2290\u0338", + "NotSquareSupersetEqual":"\u22E3", + "NotSubset":"\u2282\u20D2", + "NotSubsetEqual":"\u2288", + "NotSucceeds":"\u2281", + "NotSucceedsEqual":"\u2AB0\u0338", + "NotSucceedsSlantEqual":"\u22E1", + "NotSucceedsTilde":"\u227F\u0338", + "NotSuperset":"\u2283\u20D2", + "NotSupersetEqual":"\u2289", + "NotTilde":"\u2241", + "NotTildeEqual":"\u2244", + "NotTildeFullEqual":"\u2247", + "NotTildeTilde":"\u2249", + "NotVerticalBar":"\u2224", + "npar":"\u2226", + "nparallel":"\u2226", + "nparsl":"\u2AFD\u20E5", + "npart":"\u2202\u0338", + "npolint":"\u2A14", + "npr":"\u2280", + "nprcue":"\u22E0", + "npre":"\u2AAF\u0338", + "nprec":"\u2280", + "npreceq":"\u2AAF\u0338", + "nrArr":"\u21CF", + "nrarr":"\u219B", + "nrarrc":"\u2933\u0338", + "nrarrw":"\u219D\u0338", + "nRightarrow":"\u21CF", + "nrightarrow":"\u219B", + "nrtri":"\u22EB", + "nrtrie":"\u22ED", + "nsc":"\u2281", + "nsccue":"\u22E1", + "nsce":"\u2AB0\u0338", + "Nscr":"\uD835\uDCA9", + "nscr":"\uD835\uDCC3", + "nshortmid":"\u2224", + "nshortparallel":"\u2226", + "nsim":"\u2241", + "nsime":"\u2244", + "nsimeq":"\u2244", + "nsmid":"\u2224", + "nspar":"\u2226", + "nsqsube":"\u22E2", + "nsqsupe":"\u22E3", + "nsub":"\u2284", + "nsubE":"\u2AC5\u0338", + "nsube":"\u2288", + "nsubset":"\u2282\u20D2", + "nsubseteq":"\u2288", + "nsubseteqq":"\u2AC5\u0338", + "nsucc":"\u2281", + "nsucceq":"\u2AB0\u0338", + "nsup":"\u2285", + "nsupE":"\u2AC6\u0338", + "nsupe":"\u2289", + "nsupset":"\u2283\u20D2", + "nsupseteq":"\u2289", + "nsupseteqq":"\u2AC6\u0338", + "ntgl":"\u2279", + "Ntilde":"\u00D1", + "ntilde":"\u00F1", + "ntlg":"\u2278", + "ntriangleleft":"\u22EA", + "ntrianglelefteq":"\u22EC", + "ntriangleright":"\u22EB", + "ntrianglerighteq":"\u22ED", + "Nu":"\u039D", + "nu":"\u03BD", + "num":"\u0023", + "numero":"\u2116", + "numsp":"\u2007", + "nvap":"\u224D\u20D2", + "nVDash":"\u22AF", + "nVdash":"\u22AE", + "nvDash":"\u22AD", + "nvdash":"\u22AC", + "nvge":"\u2265\u20D2", + "nvgt":"\u003E\u20D2", + "nvHarr":"\u2904", + "nvinfin":"\u29DE", + "nvlArr":"\u2902", + "nvle":"\u2264\u20D2", + "nvlt":"\u003C\u20D2", + "nvltrie":"\u22B4\u20D2", + "nvrArr":"\u2903", + "nvrtrie":"\u22B5\u20D2", + "nvsim":"\u223C\u20D2", + "nwarhk":"\u2923", + "nwArr":"\u21D6", + "nwarr":"\u2196", + "nwarrow":"\u2196", + "nwnear":"\u2927", + "Oacute":"\u00D3", + "oacute":"\u00F3", + "oast":"\u229B", + "ocir":"\u229A", + "Ocirc":"\u00D4", + "ocirc":"\u00F4", + "Ocy":"\u041E", + "ocy":"\u043E", + "odash":"\u229D", + "Odblac":"\u0150", + "odblac":"\u0151", + "odiv":"\u2A38", + "odot":"\u2299", + "odsold":"\u29BC", + "OElig":"\u0152", + "oelig":"\u0153", + "ofcir":"\u29BF", + "Ofr":"\uD835\uDD12", + "ofr":"\uD835\uDD2C", + "ogon":"\u02DB", + "Ograve":"\u00D2", + "ograve":"\u00F2", + "ogt":"\u29C1", + "ohbar":"\u29B5", + "ohm":"\u03A9", + "oint":"\u222E", + "olarr":"\u21BA", + "olcir":"\u29BE", + "olcross":"\u29BB", + "oline":"\u203E", + "olt":"\u29C0", + "Omacr":"\u014C", + "omacr":"\u014D", + "Omega":"\u03A9", + "omega":"\u03C9", + "Omicron":"\u039F", + "omicron":"\u03BF", + "omid":"\u29B6", + "ominus":"\u2296", + "Oopf":"\uD835\uDD46", + "oopf":"\uD835\uDD60", + "opar":"\u29B7", + "OpenCurlyDoubleQuote":"\u201C", + "OpenCurlyQuote":"\u2018", + "operp":"\u29B9", + "oplus":"\u2295", + "Or":"\u2A54", + "or":"\u2228", + "orarr":"\u21BB", + "ord":"\u2A5D", + "order":"\u2134", + "orderof":"\u2134", + "ordf":"\u00AA", + "ordm":"\u00BA", + "origof":"\u22B6", + "oror":"\u2A56", + "orslope":"\u2A57", + "orv":"\u2A5B", + "oS":"\u24C8", + "Oscr":"\uD835\uDCAA", + "oscr":"\u2134", + "Oslash":"\u00D8", + "oslash":"\u00F8", + "osol":"\u2298", + "Otilde":"\u00D5", + "otilde":"\u00F5", + "Otimes":"\u2A37", + "otimes":"\u2297", + "otimesas":"\u2A36", + "Ouml":"\u00D6", + "ouml":"\u00F6", + "ovbar":"\u233D", + "OverBar":"\u203E", + "OverBrace":"\u23DE", + "OverBracket":"\u23B4", + "OverParenthesis":"\u23DC", + "par":"\u2225", + "para":"\u00B6", + "parallel":"\u2225", + "parsim":"\u2AF3", + "parsl":"\u2AFD", + "part":"\u2202", + "PartialD":"\u2202", + "Pcy":"\u041F", + "pcy":"\u043F", + "percnt":"\u0025", + "period":"\u002E", + "permil":"\u2030", + "perp":"\u22A5", + "pertenk":"\u2031", + "Pfr":"\uD835\uDD13", + "pfr":"\uD835\uDD2D", + "Phi":"\u03A6", + "phi":"\u03C6", + "phiv":"\u03D5", + "phmmat":"\u2133", + "phone":"\u260E", + "Pi":"\u03A0", + "pi":"\u03C0", + "pitchfork":"\u22D4", + "piv":"\u03D6", + "planck":"\u210F", + "planckh":"\u210E", + "plankv":"\u210F", + "plus":"\u002B", + "plusacir":"\u2A23", + "plusb":"\u229E", + "pluscir":"\u2A22", + "plusdo":"\u2214", + "plusdu":"\u2A25", + "pluse":"\u2A72", + "PlusMinus":"\u00B1", + "plusmn":"\u00B1", + "plussim":"\u2A26", + "plustwo":"\u2A27", + "pm":"\u00B1", + "Poincareplane":"\u210C", + "pointint":"\u2A15", + "Popf":"\u2119", + "popf":"\uD835\uDD61", + "pound":"\u00A3", + "Pr":"\u2ABB", + "pr":"\u227A", + "prap":"\u2AB7", + "prcue":"\u227C", + "prE":"\u2AB3", + "pre":"\u2AAF", + "prec":"\u227A", + "precapprox":"\u2AB7", + "preccurlyeq":"\u227C", + "Precedes":"\u227A", + "PrecedesEqual":"\u2AAF", + "PrecedesSlantEqual":"\u227C", + "PrecedesTilde":"\u227E", + "preceq":"\u2AAF", + "precnapprox":"\u2AB9", + "precneqq":"\u2AB5", + "precnsim":"\u22E8", + "precsim":"\u227E", + "Prime":"\u2033", + "prime":"\u2032", + "primes":"\u2119", + "prnap":"\u2AB9", + "prnE":"\u2AB5", + "prnsim":"\u22E8", + "prod":"\u220F", + "Product":"\u220F", + "profalar":"\u232E", + "profline":"\u2312", + "profsurf":"\u2313", + "prop":"\u221D", + "Proportion":"\u2237", + "Proportional":"\u221D", + "propto":"\u221D", + "prsim":"\u227E", + "prurel":"\u22B0", + "Pscr":"\uD835\uDCAB", + "pscr":"\uD835\uDCC5", + "Psi":"\u03A8", + "psi":"\u03C8", + "puncsp":"\u2008", + "Qfr":"\uD835\uDD14", + "qfr":"\uD835\uDD2E", + "qint":"\u2A0C", + "Qopf":"\u211A", + "qopf":"\uD835\uDD62", + "qprime":"\u2057", + "Qscr":"\uD835\uDCAC", + "qscr":"\uD835\uDCC6", + "quaternions":"\u210D", + "quatint":"\u2A16", + "quest":"\u003F", + "questeq":"\u225F", + "QUOT":"\u0022", + "quot":"\u0022", + "rAarr":"\u21DB", + "race":"\u223D\u0331", + "Racute":"\u0154", + "racute":"\u0155", + "radic":"\u221A", + "raemptyv":"\u29B3", + "Rang":"\u27EB", + "rang":"\u27E9", + "rangd":"\u2992", + "range":"\u29A5", + "rangle":"\u27E9", + "raquo":"\u00BB", + "Rarr":"\u21A0", + "rArr":"\u21D2", + "rarr":"\u2192", + "rarrap":"\u2975", + "rarrb":"\u21E5", + "rarrbfs":"\u2920", + "rarrc":"\u2933", + "rarrfs":"\u291E", + "rarrhk":"\u21AA", + "rarrlp":"\u21AC", + "rarrpl":"\u2945", + "rarrsim":"\u2974", + "Rarrtl":"\u2916", + "rarrtl":"\u21A3", + "rarrw":"\u219D", + "rAtail":"\u291C", + "ratail":"\u291A", + "ratio":"\u2236", + "rationals":"\u211A", + "RBarr":"\u2910", + "rBarr":"\u290F", + "rbarr":"\u290D", + "rbbrk":"\u2773", + "rbrace":"\u007D", + "rbrack":"\u005D", + "rbrke":"\u298C", + "rbrksld":"\u298E", + "rbrkslu":"\u2990", + "Rcaron":"\u0158", + "rcaron":"\u0159", + "Rcedil":"\u0156", + "rcedil":"\u0157", + "rceil":"\u2309", + "rcub":"\u007D", + "Rcy":"\u0420", + "rcy":"\u0440", + "rdca":"\u2937", + "rdldhar":"\u2969", + "rdquo":"\u201D", + "rdquor":"\u201D", + "rdsh":"\u21B3", + "Re":"\u211C", + "real":"\u211C", + "realine":"\u211B", + "realpart":"\u211C", + "reals":"\u211D", + "rect":"\u25AD", + "REG":"\u00AE", + "reg":"\u00AE", + "ReverseElement":"\u220B", + "ReverseEquilibrium":"\u21CB", + "ReverseUpEquilibrium":"\u296F", + "rfisht":"\u297D", + "rfloor":"\u230B", + "Rfr":"\u211C", + "rfr":"\uD835\uDD2F", + "rHar":"\u2964", + "rhard":"\u21C1", + "rharu":"\u21C0", + "rharul":"\u296C", + "Rho":"\u03A1", + "rho":"\u03C1", + "rhov":"\u03F1", + "RightAngleBracket":"\u27E9", + "RightArrow":"\u2192", + "Rightarrow":"\u21D2", + "rightarrow":"\u2192", + "RightArrowBar":"\u21E5", + "RightArrowLeftArrow":"\u21C4", + "rightarrowtail":"\u21A3", + "RightCeiling":"\u2309", + "RightDoubleBracket":"\u27E7", + "RightDownTeeVector":"\u295D", + "RightDownVector":"\u21C2", + "RightDownVectorBar":"\u2955", + "RightFloor":"\u230B", + "rightharpoondown":"\u21C1", + "rightharpoonup":"\u21C0", + "rightleftarrows":"\u21C4", + "rightleftharpoons":"\u21CC", + "rightrightarrows":"\u21C9", + "rightsquigarrow":"\u219D", + "RightTee":"\u22A2", + "RightTeeArrow":"\u21A6", + "RightTeeVector":"\u295B", + "rightthreetimes":"\u22CC", + "RightTriangle":"\u22B3", + "RightTriangleBar":"\u29D0", + "RightTriangleEqual":"\u22B5", + "RightUpDownVector":"\u294F", + "RightUpTeeVector":"\u295C", + "RightUpVector":"\u21BE", + "RightUpVectorBar":"\u2954", + "RightVector":"\u21C0", + "RightVectorBar":"\u2953", + "ring":"\u02DA", + "risingdotseq":"\u2253", + "rlarr":"\u21C4", + "rlhar":"\u21CC", + "rlm":"\u200F", + "rmoust":"\u23B1", + "rmoustache":"\u23B1", + "rnmid":"\u2AEE", + "roang":"\u27ED", + "roarr":"\u21FE", + "robrk":"\u27E7", + "ropar":"\u2986", + "Ropf":"\u211D", + "ropf":"\uD835\uDD63", + "roplus":"\u2A2E", + "rotimes":"\u2A35", + "RoundImplies":"\u2970", + "rpar":"\u0029", + "rpargt":"\u2994", + "rppolint":"\u2A12", + "rrarr":"\u21C9", + "Rrightarrow":"\u21DB", + "rsaquo":"\u203A", + "Rscr":"\u211B", + "rscr":"\uD835\uDCC7", + "Rsh":"\u21B1", + "rsh":"\u21B1", + "rsqb":"\u005D", + "rsquo":"\u2019", + "rsquor":"\u2019", + "rthree":"\u22CC", + "rtimes":"\u22CA", + "rtri":"\u25B9", + "rtrie":"\u22B5", + "rtrif":"\u25B8", + "rtriltri":"\u29CE", + "RuleDelayed":"\u29F4", + "ruluhar":"\u2968", + "rx":"\u211E", + "Sacute":"\u015A", + "sacute":"\u015B", + "sbquo":"\u201A", + "Sc":"\u2ABC", + "sc":"\u227B", + "scap":"\u2AB8", + "Scaron":"\u0160", + "scaron":"\u0161", + "sccue":"\u227D", + "scE":"\u2AB4", + "sce":"\u2AB0", + "Scedil":"\u015E", + "scedil":"\u015F", + "Scirc":"\u015C", + "scirc":"\u015D", + "scnap":"\u2ABA", + "scnE":"\u2AB6", + "scnsim":"\u22E9", + "scpolint":"\u2A13", + "scsim":"\u227F", + "Scy":"\u0421", + "scy":"\u0441", + "sdot":"\u22C5", + "sdotb":"\u22A1", + "sdote":"\u2A66", + "searhk":"\u2925", + "seArr":"\u21D8", + "searr":"\u2198", + "searrow":"\u2198", + "sect":"\u00A7", + "semi":"\u003B", + "seswar":"\u2929", + "setminus":"\u2216", + "setmn":"\u2216", + "sext":"\u2736", + "Sfr":"\uD835\uDD16", + "sfr":"\uD835\uDD30", + "sfrown":"\u2322", + "sharp":"\u266F", + "SHCHcy":"\u0429", + "shchcy":"\u0449", + "SHcy":"\u0428", + "shcy":"\u0448", + "ShortDownArrow":"\u2193", + "ShortLeftArrow":"\u2190", + "shortmid":"\u2223", + "shortparallel":"\u2225", + "ShortRightArrow":"\u2192", + "ShortUpArrow":"\u2191", + "shy":"\u00AD", + "Sigma":"\u03A3", + "sigma":"\u03C3", + "sigmaf":"\u03C2", + "sigmav":"\u03C2", + "sim":"\u223C", + "simdot":"\u2A6A", + "sime":"\u2243", + "simeq":"\u2243", + "simg":"\u2A9E", + "simgE":"\u2AA0", + "siml":"\u2A9D", + "simlE":"\u2A9F", + "simne":"\u2246", + "simplus":"\u2A24", + "simrarr":"\u2972", + "slarr":"\u2190", + "SmallCircle":"\u2218", + "smallsetminus":"\u2216", + "smashp":"\u2A33", + "smeparsl":"\u29E4", + "smid":"\u2223", + "smile":"\u2323", + "smt":"\u2AAA", + "smte":"\u2AAC", + "smtes":"\u2AAC\uFE00", + "SOFTcy":"\u042C", + "softcy":"\u044C", + "sol":"\u002F", + "solb":"\u29C4", + "solbar":"\u233F", + "Sopf":"\uD835\uDD4A", + "sopf":"\uD835\uDD64", + "spades":"\u2660", + "spadesuit":"\u2660", + "spar":"\u2225", + "sqcap":"\u2293", + "sqcaps":"\u2293\uFE00", + "sqcup":"\u2294", + "sqcups":"\u2294\uFE00", + "Sqrt":"\u221A", + "sqsub":"\u228F", + "sqsube":"\u2291", + "sqsubset":"\u228F", + "sqsubseteq":"\u2291", + "sqsup":"\u2290", + "sqsupe":"\u2292", + "sqsupset":"\u2290", + "sqsupseteq":"\u2292", + "squ":"\u25A1", + "Square":"\u25A1", + "square":"\u25A1", + "SquareIntersection":"\u2293", + "SquareSubset":"\u228F", + "SquareSubsetEqual":"\u2291", + "SquareSuperset":"\u2290", + "SquareSupersetEqual":"\u2292", + "SquareUnion":"\u2294", + "squarf":"\u25AA", + "squf":"\u25AA", + "srarr":"\u2192", + "Sscr":"\uD835\uDCAE", + "sscr":"\uD835\uDCC8", + "ssetmn":"\u2216", + "ssmile":"\u2323", + "sstarf":"\u22C6", + "Star":"\u22C6", + "star":"\u2606", + "starf":"\u2605", + "straightepsilon":"\u03F5", + "straightphi":"\u03D5", + "strns":"\u00AF", + "Sub":"\u22D0", + "sub":"\u2282", + "subdot":"\u2ABD", + "subE":"\u2AC5", + "sube":"\u2286", + "subedot":"\u2AC3", + "submult":"\u2AC1", + "subnE":"\u2ACB", + "subne":"\u228A", + "subplus":"\u2ABF", + "subrarr":"\u2979", + "Subset":"\u22D0", + "subset":"\u2282", + "subseteq":"\u2286", + "subseteqq":"\u2AC5", + "SubsetEqual":"\u2286", + "subsetneq":"\u228A", + "subsetneqq":"\u2ACB", + "subsim":"\u2AC7", + "subsub":"\u2AD5", + "subsup":"\u2AD3", + "succ":"\u227B", + "succapprox":"\u2AB8", + "succcurlyeq":"\u227D", + "Succeeds":"\u227B", + "SucceedsEqual":"\u2AB0", + "SucceedsSlantEqual":"\u227D", + "SucceedsTilde":"\u227F", + "succeq":"\u2AB0", + "succnapprox":"\u2ABA", + "succneqq":"\u2AB6", + "succnsim":"\u22E9", + "succsim":"\u227F", + "SuchThat":"\u220B", + "Sum":"\u2211", + "sum":"\u2211", + "sung":"\u266A", + "Sup":"\u22D1", + "sup":"\u2283", + "sup1":"\u00B9", + "sup2":"\u00B2", + "sup3":"\u00B3", + "supdot":"\u2ABE", + "supdsub":"\u2AD8", + "supE":"\u2AC6", + "supe":"\u2287", + "supedot":"\u2AC4", + "Superset":"\u2283", + "SupersetEqual":"\u2287", + "suphsol":"\u27C9", + "suphsub":"\u2AD7", + "suplarr":"\u297B", + "supmult":"\u2AC2", + "supnE":"\u2ACC", + "supne":"\u228B", + "supplus":"\u2AC0", + "Supset":"\u22D1", + "supset":"\u2283", + "supseteq":"\u2287", + "supseteqq":"\u2AC6", + "supsetneq":"\u228B", + "supsetneqq":"\u2ACC", + "supsim":"\u2AC8", + "supsub":"\u2AD4", + "supsup":"\u2AD6", + "swarhk":"\u2926", + "swArr":"\u21D9", + "swarr":"\u2199", + "swarrow":"\u2199", + "swnwar":"\u292A", + "szlig":"\u00DF", + "Tab":"\u0009", + "target":"\u2316", + "Tau":"\u03A4", + "tau":"\u03C4", + "tbrk":"\u23B4", + "Tcaron":"\u0164", + "tcaron":"\u0165", + "Tcedil":"\u0162", + "tcedil":"\u0163", + "Tcy":"\u0422", + "tcy":"\u0442", + "tdot":"\u20DB", + "telrec":"\u2315", + "Tfr":"\uD835\uDD17", + "tfr":"\uD835\uDD31", + "there4":"\u2234", + "Therefore":"\u2234", + "therefore":"\u2234", + "Theta":"\u0398", + "theta":"\u03B8", + "thetasym":"\u03D1", + "thetav":"\u03D1", + "thickapprox":"\u2248", + "thicksim":"\u223C", + "ThickSpace":"\u205F\u200A", + "thinsp":"\u2009", + "ThinSpace":"\u2009", + "thkap":"\u2248", + "thksim":"\u223C", + "THORN":"\u00DE", + "thorn":"\u00FE", + "Tilde":"\u223C", + "tilde":"\u02DC", + "TildeEqual":"\u2243", + "TildeFullEqual":"\u2245", + "TildeTilde":"\u2248", + "times":"\u00D7", + "timesb":"\u22A0", + "timesbar":"\u2A31", + "timesd":"\u2A30", + "tint":"\u222D", + "toea":"\u2928", + "top":"\u22A4", + "topbot":"\u2336", + "topcir":"\u2AF1", + "Topf":"\uD835\uDD4B", + "topf":"\uD835\uDD65", + "topfork":"\u2ADA", + "tosa":"\u2929", + "tprime":"\u2034", + "TRADE":"\u2122", + "trade":"\u2122", + "triangle":"\u25B5", + "triangledown":"\u25BF", + "triangleleft":"\u25C3", + "trianglelefteq":"\u22B4", + "triangleq":"\u225C", + "triangleright":"\u25B9", + "trianglerighteq":"\u22B5", + "tridot":"\u25EC", + "trie":"\u225C", + "triminus":"\u2A3A", + "TripleDot":"\u20DB", + "triplus":"\u2A39", + "trisb":"\u29CD", + "tritime":"\u2A3B", + "trpezium":"\u23E2", + "Tscr":"\uD835\uDCAF", + "tscr":"\uD835\uDCC9", + "TScy":"\u0426", + "tscy":"\u0446", + "TSHcy":"\u040B", + "tshcy":"\u045B", + "Tstrok":"\u0166", + "tstrok":"\u0167", + "twixt":"\u226C", + "twoheadleftarrow":"\u219E", + "twoheadrightarrow":"\u21A0", + "Uacute":"\u00DA", + "uacute":"\u00FA", + "Uarr":"\u219F", + "uArr":"\u21D1", + "uarr":"\u2191", + "Uarrocir":"\u2949", + "Ubrcy":"\u040E", + "ubrcy":"\u045E", + "Ubreve":"\u016C", + "ubreve":"\u016D", + "Ucirc":"\u00DB", + "ucirc":"\u00FB", + "Ucy":"\u0423", + "ucy":"\u0443", + "udarr":"\u21C5", + "Udblac":"\u0170", + "udblac":"\u0171", + "udhar":"\u296E", + "ufisht":"\u297E", + "Ufr":"\uD835\uDD18", + "ufr":"\uD835\uDD32", + "Ugrave":"\u00D9", + "ugrave":"\u00F9", + "uHar":"\u2963", + "uharl":"\u21BF", + "uharr":"\u21BE", + "uhblk":"\u2580", + "ulcorn":"\u231C", + "ulcorner":"\u231C", + "ulcrop":"\u230F", + "ultri":"\u25F8", + "Umacr":"\u016A", + "umacr":"\u016B", + "uml":"\u00A8", + "UnderBar":"\u005F", + "UnderBrace":"\u23DF", + "UnderBracket":"\u23B5", + "UnderParenthesis":"\u23DD", + "Union":"\u22C3", + "UnionPlus":"\u228E", + "Uogon":"\u0172", + "uogon":"\u0173", + "Uopf":"\uD835\uDD4C", + "uopf":"\uD835\uDD66", + "UpArrow":"\u2191", + "Uparrow":"\u21D1", + "uparrow":"\u2191", + "UpArrowBar":"\u2912", + "UpArrowDownArrow":"\u21C5", + "UpDownArrow":"\u2195", + "Updownarrow":"\u21D5", + "updownarrow":"\u2195", + "UpEquilibrium":"\u296E", + "upharpoonleft":"\u21BF", + "upharpoonright":"\u21BE", + "uplus":"\u228E", + "UpperLeftArrow":"\u2196", + "UpperRightArrow":"\u2197", + "Upsi":"\u03D2", + "upsi":"\u03C5", + "upsih":"\u03D2", + "Upsilon":"\u03A5", + "upsilon":"\u03C5", + "UpTee":"\u22A5", + "UpTeeArrow":"\u21A5", + "upuparrows":"\u21C8", + "urcorn":"\u231D", + "urcorner":"\u231D", + "urcrop":"\u230E", + "Uring":"\u016E", + "uring":"\u016F", + "urtri":"\u25F9", + "Uscr":"\uD835\uDCB0", + "uscr":"\uD835\uDCCA", + "utdot":"\u22F0", + "Utilde":"\u0168", + "utilde":"\u0169", + "utri":"\u25B5", + "utrif":"\u25B4", + "uuarr":"\u21C8", + "Uuml":"\u00DC", + "uuml":"\u00FC", + "uwangle":"\u29A7", + "vangrt":"\u299C", + "varepsilon":"\u03F5", + "varkappa":"\u03F0", + "varnothing":"\u2205", + "varphi":"\u03D5", + "varpi":"\u03D6", + "varpropto":"\u221D", + "vArr":"\u21D5", + "varr":"\u2195", + "varrho":"\u03F1", + "varsigma":"\u03C2", + "varsubsetneq":"\u228A\uFE00", + "varsubsetneqq":"\u2ACB\uFE00", + "varsupsetneq":"\u228B\uFE00", + "varsupsetneqq":"\u2ACC\uFE00", + "vartheta":"\u03D1", + "vartriangleleft":"\u22B2", + "vartriangleright":"\u22B3", + "Vbar":"\u2AEB", + "vBar":"\u2AE8", + "vBarv":"\u2AE9", + "Vcy":"\u0412", + "vcy":"\u0432", + "VDash":"\u22AB", + "Vdash":"\u22A9", + "vDash":"\u22A8", + "vdash":"\u22A2", + "Vdashl":"\u2AE6", + "Vee":"\u22C1", + "vee":"\u2228", + "veebar":"\u22BB", + "veeeq":"\u225A", + "vellip":"\u22EE", + "Verbar":"\u2016", + "verbar":"\u007C", + "Vert":"\u2016", + "vert":"\u007C", + "VerticalBar":"\u2223", + "VerticalLine":"\u007C", + "VerticalSeparator":"\u2758", + "VerticalTilde":"\u2240", + "VeryThinSpace":"\u200A", + "Vfr":"\uD835\uDD19", + "vfr":"\uD835\uDD33", + "vltri":"\u22B2", + "vnsub":"\u2282\u20D2", + "vnsup":"\u2283\u20D2", + "Vopf":"\uD835\uDD4D", + "vopf":"\uD835\uDD67", + "vprop":"\u221D", + "vrtri":"\u22B3", + "Vscr":"\uD835\uDCB1", + "vscr":"\uD835\uDCCB", + "vsubnE":"\u2ACB\uFE00", + "vsubne":"\u228A\uFE00", + "vsupnE":"\u2ACC\uFE00", + "vsupne":"\u228B\uFE00", + "Vvdash":"\u22AA", + "vzigzag":"\u299A", + "Wcirc":"\u0174", + "wcirc":"\u0175", + "wedbar":"\u2A5F", + "Wedge":"\u22C0", + "wedge":"\u2227", + "wedgeq":"\u2259", + "weierp":"\u2118", + "Wfr":"\uD835\uDD1A", + "wfr":"\uD835\uDD34", + "Wopf":"\uD835\uDD4E", + "wopf":"\uD835\uDD68", + "wp":"\u2118", + "wr":"\u2240", + "wreath":"\u2240", + "Wscr":"\uD835\uDCB2", + "wscr":"\uD835\uDCCC", + "xcap":"\u22C2", + "xcirc":"\u25EF", + "xcup":"\u22C3", + "xdtri":"\u25BD", + "Xfr":"\uD835\uDD1B", + "xfr":"\uD835\uDD35", + "xhArr":"\u27FA", + "xharr":"\u27F7", + "Xi":"\u039E", + "xi":"\u03BE", + "xlArr":"\u27F8", + "xlarr":"\u27F5", + "xmap":"\u27FC", + "xnis":"\u22FB", + "xodot":"\u2A00", + "Xopf":"\uD835\uDD4F", + "xopf":"\uD835\uDD69", + "xoplus":"\u2A01", + "xotime":"\u2A02", + "xrArr":"\u27F9", + "xrarr":"\u27F6", + "Xscr":"\uD835\uDCB3", + "xscr":"\uD835\uDCCD", + "xsqcup":"\u2A06", + "xuplus":"\u2A04", + "xutri":"\u25B3", + "xvee":"\u22C1", + "xwedge":"\u22C0", + "Yacute":"\u00DD", + "yacute":"\u00FD", + "YAcy":"\u042F", + "yacy":"\u044F", + "Ycirc":"\u0176", + "ycirc":"\u0177", + "Ycy":"\u042B", + "ycy":"\u044B", + "yen":"\u00A5", + "Yfr":"\uD835\uDD1C", + "yfr":"\uD835\uDD36", + "YIcy":"\u0407", + "yicy":"\u0457", + "Yopf":"\uD835\uDD50", + "yopf":"\uD835\uDD6A", + "Yscr":"\uD835\uDCB4", + "yscr":"\uD835\uDCCE", + "YUcy":"\u042E", + "yucy":"\u044E", + "Yuml":"\u0178", + "yuml":"\u00FF", + "Zacute":"\u0179", + "zacute":"\u017A", + "Zcaron":"\u017D", + "zcaron":"\u017E", + "Zcy":"\u0417", + "zcy":"\u0437", + "Zdot":"\u017B", + "zdot":"\u017C", + "zeetrf":"\u2128", + "ZeroWidthSpace":"\u200B", + "Zeta":"\u0396", + "zeta":"\u03B6", + "Zfr":"\u2128", + "zfr":"\uD835\uDD37", + "ZHcy":"\u0416", + "zhcy":"\u0436", + "zigrarr":"\u21DD", + "Zopf":"\u2124", + "zopf":"\uD835\uDD6B", + "Zscr":"\uD835\uDCB5", + "zscr":"\uD835\uDCCF", + "zwj":"\u200D", + "zwnj":"\u200C" + }; + + /** + * Utility functions + */ + + function typeOf(obj) { + return Object.prototype.toString.call(obj); + } + + function isString(obj) { + return typeOf(obj) === '[object String]'; + } + + var hasOwn$1 = Object.prototype.hasOwnProperty; + + function has(object, key) { + return object + ? hasOwn$1.call(object, key) + : false; + } + + // Extend objects + // + function assign(obj /*from1, from2, from3, ...*/) { + var sources = [].slice.call(arguments, 1); + + sources.forEach(function (source) { + if (!source) { return; } + + if (typeof source !== 'object') { + throw new TypeError(source + 'must be object'); + } + + Object.keys(source).forEach(function (key) { + obj[key] = source[key]; + }); + }); + + return obj; + } + + //////////////////////////////////////////////////////////////////////////////// + + var UNESCAPE_MD_RE = /\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; + + function unescapeMd(str) { + if (str.indexOf('\\') < 0) { return str; } + return str.replace(UNESCAPE_MD_RE, '$1'); + } + + //////////////////////////////////////////////////////////////////////////////// + + function isValidEntityCode(c) { + /*eslint no-bitwise:0*/ + // broken sequence + if (c >= 0xD800 && c <= 0xDFFF) { return false; } + // never used + if (c >= 0xFDD0 && c <= 0xFDEF) { return false; } + if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; } + // control codes + if (c >= 0x00 && c <= 0x08) { return false; } + if (c === 0x0B) { return false; } + if (c >= 0x0E && c <= 0x1F) { return false; } + if (c >= 0x7F && c <= 0x9F) { return false; } + // out of range + if (c > 0x10FFFF) { return false; } + return true; + } + + function fromCodePoint(c) { + /*eslint no-bitwise:0*/ + if (c > 0xffff) { + c -= 0x10000; + var surrogate1 = 0xd800 + (c >> 10), + surrogate2 = 0xdc00 + (c & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } + return String.fromCharCode(c); + } + + var NAMED_ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; + var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; + + + function replaceEntityPattern(match, name) { + var code = 0; + + if (has(entities, name)) { + return entities[name]; + } else if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { + code = name[1].toLowerCase() === 'x' ? + parseInt(name.slice(2), 16) + : + parseInt(name.slice(1), 10); + if (isValidEntityCode(code)) { + return fromCodePoint(code); + } + } + return match; + } + + function replaceEntities(str) { + if (str.indexOf('&') < 0) { return str; } + + return str.replace(NAMED_ENTITY_RE, replaceEntityPattern); + } + + //////////////////////////////////////////////////////////////////////////////// + + var HTML_ESCAPE_TEST_RE = /[&<>"]/; + var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; + var HTML_REPLACEMENTS = { + '&': '&', + '<': '<', + '>': '>', + '"': '"' + }; + + function replaceUnsafeChar(ch) { + return HTML_REPLACEMENTS[ch]; + } + + function escapeHtml(str) { + if (HTML_ESCAPE_TEST_RE.test(str)) { + return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); + } + return str; + } + + //////////////////////////////////////////////////////////////////////////////// + + var assign_1 = assign; + var isString_1 = isString; + var has_1 = has; + var unescapeMd_1 = unescapeMd; + var isValidEntityCode_1 = isValidEntityCode; + var fromCodePoint_1 = fromCodePoint; + var replaceEntities_1 = replaceEntities; + var escapeHtml_1 = escapeHtml; + + var utils = { + assign: assign_1, + isString: isString_1, + has: has_1, + unescapeMd: unescapeMd_1, + isValidEntityCode: isValidEntityCode_1, + fromCodePoint: fromCodePoint_1, + replaceEntities: replaceEntities_1, + escapeHtml: escapeHtml_1 + }; + + /** + * Local dependencies + */ + + var has$1 = utils.has; + var unescapeMd$1 = utils.unescapeMd; + var replaceEntities$1 = utils.replaceEntities; + var escapeHtml$1 = utils.escapeHtml; + + /** + * Renderer rules cache + */ + + var rules = {}; + + /** + * Blockquotes + */ + + rules.blockquote_open = function(/* tokens, idx, options, env */) { + return '
\n'; + }; + + rules.blockquote_close = function(tokens, idx /*, options, env */) { + return '
' + getBreak(tokens, idx); + }; + + /** + * Code + */ + + rules.code = function(tokens, idx /*, options, env */) { + if (tokens[idx].block) { + return '
' + escapeHtml$1(tokens[idx].content) + '
' + getBreak(tokens, idx); + } + return '' + escapeHtml$1(tokens[idx].content) + ''; + }; + + /** + * Fenced code blocks + */ + + rules.fence = function(tokens, idx, options, env, instance) { + var token = tokens[idx]; + var langClass = ''; + var langPrefix = options.langPrefix; + var langName = '', fences, fenceName; + var highlighted; + + if (token.params) { + + // + // ```foo bar + // + // Try custom renderer "foo" first. That will simplify overwrite + // for diagrams, latex, and any other fenced block with custom look + // + + fences = token.params.split(/\s+/g); + fenceName = fences.join(' '); + + if (has$1(instance.rules.fence_custom, fences[0])) { + return instance.rules.fence_custom[fences[0]](tokens, idx, options, env, instance); + } + + langName = escapeHtml$1(replaceEntities$1(unescapeMd$1(fenceName))); + langClass = ' class="' + langPrefix + langName + '"'; + } + + if (options.highlight) { + highlighted = options.highlight.apply(options.highlight, [ token.content ].concat(fences)) + || escapeHtml$1(token.content); + } else { + highlighted = escapeHtml$1(token.content); + } + + return '
'
+          + highlighted
+          + '
' + + getBreak(tokens, idx); + }; + + rules.fence_custom = {}; + + /** + * Headings + */ + + rules.heading_open = function(tokens, idx /*, options, env */) { + return ''; + }; + rules.heading_close = function(tokens, idx /*, options, env */) { + return '\n'; + }; + + /** + * Horizontal rules + */ + + rules.hr = function(tokens, idx, options /*, env */) { + return (options.xhtmlOut ? '
' : '
') + getBreak(tokens, idx); + }; + + /** + * Bullets + */ + + rules.bullet_list_open = function(/* tokens, idx, options, env */) { + return '
    \n'; + }; + rules.bullet_list_close = function(tokens, idx /*, options, env */) { + return '
' + getBreak(tokens, idx); + }; + + /** + * List items + */ + + rules.list_item_open = function(/* tokens, idx, options, env */) { + return '
  • '; + }; + rules.list_item_close = function(/* tokens, idx, options, env */) { + return '
  • \n'; + }; + + /** + * Ordered list items + */ + + rules.ordered_list_open = function(tokens, idx /*, options, env */) { + var token = tokens[idx]; + var order = token.order > 1 ? ' start="' + token.order + '"' : ''; + return '\n'; + }; + rules.ordered_list_close = function(tokens, idx /*, options, env */) { + return '' + getBreak(tokens, idx); + }; + + /** + * Paragraphs + */ + + rules.paragraph_open = function(tokens, idx /*, options, env */) { + return tokens[idx].tight ? '' : '

    '; + }; + rules.paragraph_close = function(tokens, idx /*, options, env */) { + var addBreak = !(tokens[idx].tight && idx && tokens[idx - 1].type === 'inline' && !tokens[idx - 1].content); + return (tokens[idx].tight ? '' : '

    ') + (addBreak ? getBreak(tokens, idx) : ''); + }; + + /** + * Links + */ + + rules.link_open = function(tokens, idx, options /* env */) { + var title = tokens[idx].title ? (' title="' + escapeHtml$1(replaceEntities$1(tokens[idx].title)) + '"') : ''; + var target = options.linkTarget ? (' target="' + options.linkTarget + '"') : ''; + return ''; + }; + rules.link_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Images + */ + + rules.image = function(tokens, idx, options /*, env */) { + var src = ' src="' + escapeHtml$1(tokens[idx].src) + '"'; + var title = tokens[idx].title ? (' title="' + escapeHtml$1(replaceEntities$1(tokens[idx].title)) + '"') : ''; + var alt = ' alt="' + (tokens[idx].alt ? escapeHtml$1(replaceEntities$1(unescapeMd$1(tokens[idx].alt))) : '') + '"'; + var suffix = options.xhtmlOut ? ' /' : ''; + return ''; + }; + + /** + * Tables + */ + + rules.table_open = function(/* tokens, idx, options, env */) { + return '\n'; + }; + rules.table_close = function(/* tokens, idx, options, env */) { + return '
    \n'; + }; + rules.thead_open = function(/* tokens, idx, options, env */) { + return '\n'; + }; + rules.thead_close = function(/* tokens, idx, options, env */) { + return '\n'; + }; + rules.tbody_open = function(/* tokens, idx, options, env */) { + return '\n'; + }; + rules.tbody_close = function(/* tokens, idx, options, env */) { + return '\n'; + }; + rules.tr_open = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.tr_close = function(/* tokens, idx, options, env */) { + return '\n'; + }; + rules.th_open = function(tokens, idx /*, options, env */) { + var token = tokens[idx]; + return ''; + }; + rules.th_close = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.td_open = function(tokens, idx /*, options, env */) { + var token = tokens[idx]; + return ''; + }; + rules.td_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Bold + */ + + rules.strong_open = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.strong_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Italicize + */ + + rules.em_open = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.em_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Strikethrough + */ + + rules.del_open = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.del_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Insert + */ + + rules.ins_open = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.ins_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Highlight + */ + + rules.mark_open = function(/* tokens, idx, options, env */) { + return ''; + }; + rules.mark_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Super- and sub-script + */ + + rules.sub = function(tokens, idx /*, options, env */) { + return '' + escapeHtml$1(tokens[idx].content) + ''; + }; + rules.sup = function(tokens, idx /*, options, env */) { + return '' + escapeHtml$1(tokens[idx].content) + ''; + }; + + /** + * Breaks + */ + + rules.hardbreak = function(tokens, idx, options /*, env */) { + return options.xhtmlOut ? '
    \n' : '
    \n'; + }; + rules.softbreak = function(tokens, idx, options /*, env */) { + return options.breaks ? (options.xhtmlOut ? '
    \n' : '
    \n') : '\n'; + }; + + /** + * Text + */ + + rules.text = function(tokens, idx /*, options, env */) { + return escapeHtml$1(tokens[idx].content); + }; + + /** + * Content + */ + + rules.htmlblock = function(tokens, idx /*, options, env */) { + return tokens[idx].content; + }; + rules.htmltag = function(tokens, idx /*, options, env */) { + return tokens[idx].content; + }; + + /** + * Abbreviations, initialism + */ + + rules.abbr_open = function(tokens, idx /*, options, env */) { + return ''; + }; + rules.abbr_close = function(/* tokens, idx, options, env */) { + return ''; + }; + + /** + * Footnotes + */ + + rules.footnote_ref = function(tokens, idx) { + var n = Number(tokens[idx].id + 1).toString(); + var id = 'fnref' + n; + if (tokens[idx].subId > 0) { + id += ':' + tokens[idx].subId; + } + return '[' + n + ']'; + }; + rules.footnote_block_open = function(tokens, idx, options) { + var hr = options.xhtmlOut + ? '
    \n' + : '
    \n'; + return hr + '
    \n
      \n'; + }; + rules.footnote_block_close = function() { + return '
    \n
    \n'; + }; + rules.footnote_open = function(tokens, idx) { + var id = Number(tokens[idx].id + 1).toString(); + return '
  • '; + }; + rules.footnote_close = function() { + return '
  • \n'; + }; + rules.footnote_anchor = function(tokens, idx) { + var n = Number(tokens[idx].id + 1).toString(); + var id = 'fnref' + n; + if (tokens[idx].subId > 0) { + id += ':' + tokens[idx].subId; + } + return ' '; + }; + + /** + * Definition lists + */ + + rules.dl_open = function() { + return '
    \n'; + }; + rules.dt_open = function() { + return '
    '; + }; + rules.dd_open = function() { + return '
    '; + }; + rules.dl_close = function() { + return '
    \n'; + }; + rules.dt_close = function() { + return '\n'; + }; + rules.dd_close = function() { + return '\n'; + }; + + /** + * Helper functions + */ + + function nextToken(tokens, idx) { + if (++idx >= tokens.length - 2) { + return idx; + } + if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) && + (tokens[idx + 1].type === 'inline' && tokens[idx + 1].content.length === 0) && + (tokens[idx + 2].type === 'paragraph_close' && tokens[idx + 2].tight)) { + return nextToken(tokens, idx + 2); + } + return idx; + } + + /** + * Check to see if `\n` is needed before the next token. + * + * @param {Array} `tokens` + * @param {Number} `idx` + * @return {String} Empty string or newline + * @api private + */ + + var getBreak = rules.getBreak = function getBreak(tokens, idx) { + idx = nextToken(tokens, idx); + if (idx < tokens.length && tokens[idx].type === 'list_item_close') { + return ''; + } + return '\n'; + }; + + /** + * Expose `rules` + */ + + var rules_1 = rules; + + /** + * Local dependencies + */ + + + + + /** + * Expose `Renderer` + */ + + var renderer = Renderer; + + /** + * Renderer class. Renders HTML and exposes `rules` to allow + * local modifications. + */ + + function Renderer() { + this.rules = utils.assign({}, rules_1); + + // exported helper, for custom rules only + this.getBreak = rules_1.getBreak; + } + + /** + * Render a string of inline HTML with the given `tokens` and + * `options`. + * + * @param {Array} `tokens` + * @param {Object} `options` + * @param {Object} `env` + * @return {String} + * @api public + */ + + Renderer.prototype.renderInline = function (tokens, options, env) { + var _rules = this.rules; + var len = tokens.length, i = 0; + var result = ''; + + while (len--) { + result += _rules[tokens[i].type](tokens, i++, options, env, this); + } + + return result; + }; + + /** + * Render a string of HTML with the given `tokens` and + * `options`. + * + * @param {Array} `tokens` + * @param {Object} `options` + * @param {Object} `env` + * @return {String} + * @api public + */ + + Renderer.prototype.render = function (tokens, options, env) { + var _rules = this.rules; + var len = tokens.length, i = -1; + var result = ''; + + while (++i < len) { + if (tokens[i].type === 'inline') { + result += this.renderInline(tokens[i].children, options, env); + } else { + result += _rules[tokens[i].type](tokens, i, options, env, this); + } + } + return result; + }; + + /** + * Ruler is a helper class for building responsibility chains from + * parse rules. It allows: + * + * - easy stack rules chains + * - getting main chain and named chains content (as arrays of functions) + * + * Helper methods, should not be used directly. + * @api private + */ + + function Ruler() { + // List of added rules. Each element is: + // + // { name: XXX, + // enabled: Boolean, + // fn: Function(), + // alt: [ name2, name3 ] } + // + this.__rules__ = []; + + // Cached rule chains. + // + // First level - chain name, '' for default. + // Second level - digital anchor for fast filtering by charcodes. + // + this.__cache__ = null; + } + + /** + * Find the index of a rule by `name`. + * + * @param {String} `name` + * @return {Number} Index of the given `name` + * @api private + */ + + Ruler.prototype.__find__ = function (name) { + var len = this.__rules__.length; + var i = -1; + + while (len--) { + if (this.__rules__[++i].name === name) { + return i; + } + } + return -1; + }; + + /** + * Build the rules lookup cache + * + * @api private + */ + + Ruler.prototype.__compile__ = function () { + var self = this; + var chains = [ '' ]; + + // collect unique names + self.__rules__.forEach(function (rule) { + if (!rule.enabled) { + return; + } + + rule.alt.forEach(function (altName) { + if (chains.indexOf(altName) < 0) { + chains.push(altName); + } + }); + }); + + self.__cache__ = {}; + + chains.forEach(function (chain) { + self.__cache__[chain] = []; + self.__rules__.forEach(function (rule) { + if (!rule.enabled) { + return; + } + + if (chain && rule.alt.indexOf(chain) < 0) { + return; + } + self.__cache__[chain].push(rule.fn); + }); + }); + }; + + /** + * Ruler public methods + * ------------------------------------------------ + */ + + /** + * Replace rule function + * + * @param {String} `name` Rule name + * @param {Function `fn` + * @param {Object} `options` + * @api private + */ + + Ruler.prototype.at = function (name, fn, options) { + var idx = this.__find__(name); + var opt = options || {}; + + if (idx === -1) { + throw new Error('Parser rule not found: ' + name); + } + + this.__rules__[idx].fn = fn; + this.__rules__[idx].alt = opt.alt || []; + this.__cache__ = null; + }; + + /** + * Add a rule to the chain before given the `ruleName`. + * + * @param {String} `beforeName` + * @param {String} `ruleName` + * @param {Function} `fn` + * @param {Object} `options` + * @api private + */ + + Ruler.prototype.before = function (beforeName, ruleName, fn, options) { + var idx = this.__find__(beforeName); + var opt = options || {}; + + if (idx === -1) { + throw new Error('Parser rule not found: ' + beforeName); + } + + this.__rules__.splice(idx, 0, { + name: ruleName, + enabled: true, + fn: fn, + alt: opt.alt || [] + }); + + this.__cache__ = null; + }; + + /** + * Add a rule to the chain after the given `ruleName`. + * + * @param {String} `afterName` + * @param {String} `ruleName` + * @param {Function} `fn` + * @param {Object} `options` + * @api private + */ + + Ruler.prototype.after = function (afterName, ruleName, fn, options) { + var idx = this.__find__(afterName); + var opt = options || {}; + + if (idx === -1) { + throw new Error('Parser rule not found: ' + afterName); + } + + this.__rules__.splice(idx + 1, 0, { + name: ruleName, + enabled: true, + fn: fn, + alt: opt.alt || [] + }); + + this.__cache__ = null; + }; + + /** + * Add a rule to the end of chain. + * + * @param {String} `ruleName` + * @param {Function} `fn` + * @param {Object} `options` + * @return {String} + */ + + Ruler.prototype.push = function (ruleName, fn, options) { + var opt = options || {}; + + this.__rules__.push({ + name: ruleName, + enabled: true, + fn: fn, + alt: opt.alt || [] + }); + + this.__cache__ = null; + }; + + /** + * Enable a rule or list of rules. + * + * @param {String|Array} `list` Name or array of rule names to enable + * @param {Boolean} `strict` If `true`, all non listed rules will be disabled. + * @api private + */ + + Ruler.prototype.enable = function (list, strict) { + list = !Array.isArray(list) + ? [ list ] + : list; + + // In strict mode disable all existing rules first + if (strict) { + this.__rules__.forEach(function (rule) { + rule.enabled = false; + }); + } + + // Search by name and enable + list.forEach(function (name) { + var idx = this.__find__(name); + if (idx < 0) { + throw new Error('Rules manager: invalid rule name ' + name); + } + this.__rules__[idx].enabled = true; + }, this); + + this.__cache__ = null; + }; + + + /** + * Disable a rule or list of rules. + * + * @param {String|Array} `list` Name or array of rule names to disable + * @api private + */ + + Ruler.prototype.disable = function (list) { + list = !Array.isArray(list) + ? [ list ] + : list; + + // Search by name and disable + list.forEach(function (name) { + var idx = this.__find__(name); + if (idx < 0) { + throw new Error('Rules manager: invalid rule name ' + name); + } + this.__rules__[idx].enabled = false; + }, this); + + this.__cache__ = null; + }; + + /** + * Get a rules list as an array of functions. + * + * @param {String} `chainName` + * @return {Object} + * @api private + */ + + Ruler.prototype.getRules = function (chainName) { + if (this.__cache__ === null) { + this.__compile__(); + } + return this.__cache__[chainName] || []; + }; + + /** + * Expose `Ruler` + */ + + var ruler = Ruler; + + var block = function block(state) { + + if (state.inlineMode) { + state.tokens.push({ + type: 'inline', + content: state.src.replace(/\n/g, ' ').trim(), + level: 0, + lines: [ 0, 1 ], + children: [] + }); + + } else { + state.block.parse(state.src, state.options, state.env, state.tokens); + } + }; + + // Inline parser state + + function StateInline(src, parserInline, options, env, outTokens) { + this.src = src; + this.env = env; + this.options = options; + this.parser = parserInline; + this.tokens = outTokens; + this.pos = 0; + this.posMax = this.src.length; + this.level = 0; + this.pending = ''; + this.pendingLevel = 0; + + this.cache = []; // Stores { start: end } pairs. Useful for backtrack + // optimization of pairs parse (emphasis, strikes). + + // Link parser state vars + + this.isInLabel = false; // Set true when seek link label - we should disable + // "paired" rules (emphasis, strikes) to not skip + // tailing `]` + + this.linkLevel = 0; // Increment for each nesting link. Used to prevent + // nesting in definitions + + this.linkContent = ''; // Temporary storage for link url + + this.labelUnmatchedScopes = 0; // Track unpaired `[` for link labels + // (backtrack optimization) + } + + // Flush pending text + // + StateInline.prototype.pushPending = function () { + this.tokens.push({ + type: 'text', + content: this.pending, + level: this.pendingLevel + }); + this.pending = ''; + }; + + // Push new token to "stream". + // If pending text exists - flush it as text token + // + StateInline.prototype.push = function (token) { + if (this.pending) { + this.pushPending(); + } + + this.tokens.push(token); + this.pendingLevel = this.level; + }; + + // Store value to cache. + // !!! Implementation has parser-specific optimizations + // !!! keys MUST be integer, >= 0; values MUST be integer, > 0 + // + StateInline.prototype.cacheSet = function (key, val) { + for (var i = this.cache.length; i <= key; i++) { + this.cache.push(0); + } + + this.cache[key] = val; + }; + + // Get cache value + // + StateInline.prototype.cacheGet = function (key) { + return key < this.cache.length ? this.cache[key] : 0; + }; + + var state_inline = StateInline; + + /** + * Parse link labels + * + * This function assumes that first character (`[`) already matches; + * returns the end of the label. + * + * @param {Object} state + * @param {Number} start + * @api private + */ + + var parse_link_label = function parseLinkLabel(state, start) { + var level, found, marker, + labelEnd = -1, + max = state.posMax, + oldPos = state.pos, + oldFlag = state.isInLabel; + + if (state.isInLabel) { return -1; } + + if (state.labelUnmatchedScopes) { + state.labelUnmatchedScopes--; + return -1; + } + + state.pos = start + 1; + state.isInLabel = true; + level = 1; + + while (state.pos < max) { + marker = state.src.charCodeAt(state.pos); + if (marker === 0x5B /* [ */) { + level++; + } else if (marker === 0x5D /* ] */) { + level--; + if (level === 0) { + found = true; + break; + } + } + + state.parser.skipToken(state); + } + + if (found) { + labelEnd = state.pos; + state.labelUnmatchedScopes = 0; + } else { + state.labelUnmatchedScopes = level - 1; + } + + // restore old state + state.pos = oldPos; + state.isInLabel = oldFlag; + + return labelEnd; + }; + + function parseAbbr(str, parserInline, options, env) { + var state, labelEnd, pos, max, label, title; + + if (str.charCodeAt(0) !== 0x2A/* * */) { return -1; } + if (str.charCodeAt(1) !== 0x5B/* [ */) { return -1; } + + if (str.indexOf(']:') === -1) { return -1; } + + state = new state_inline(str, parserInline, options, env, []); + labelEnd = parse_link_label(state, 1); + + if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } + + max = state.posMax; + + // abbr title is always one line, so looking for ending "\n" here + for (pos = labelEnd + 2; pos < max; pos++) { + if (state.src.charCodeAt(pos) === 0x0A) { break; } + } + + label = str.slice(2, labelEnd); + title = str.slice(labelEnd + 2, pos).trim(); + if (title.length === 0) { return -1; } + if (!env.abbreviations) { env.abbreviations = {}; } + // prepend ':' to avoid conflict with Object.prototype members + if (typeof env.abbreviations[':' + label] === 'undefined') { + env.abbreviations[':' + label] = title; + } + + return pos; + } + + var abbr = function abbr(state) { + var tokens = state.tokens, i, l, content, pos; + + if (state.inlineMode) { + return; + } + + // Parse inlines + for (i = 1, l = tokens.length - 1; i < l; i++) { + if (tokens[i - 1].type === 'paragraph_open' && + tokens[i].type === 'inline' && + tokens[i + 1].type === 'paragraph_close') { + + content = tokens[i].content; + while (content.length) { + pos = parseAbbr(content, state.inline, state.options, state.env); + if (pos < 0) { break; } + content = content.slice(pos).trim(); + } + + tokens[i].content = content; + if (!content.length) { + tokens[i - 1].tight = true; + tokens[i + 1].tight = true; + } + } + } + }; + + var replaceEntities$2 = utils.replaceEntities; + + var normalize_link = function normalizeLink(url) { + var normalized = replaceEntities$2(url); + // We shouldn't care about the result of malformed URIs, + // and should not throw an exception. + try { + normalized = decodeURI(normalized); + } catch (err) {} + return encodeURI(normalized); + }; + + var unescapeMd$2 = utils.unescapeMd; + + /** + * Parse link destination + * + * - on success it returns a string and updates state.pos; + * - on failure it returns null + * + * @param {Object} state + * @param {Number} pos + * @api private + */ + + var parse_link_destination = function parseLinkDestination(state, pos) { + var code, level, link, + start = pos, + max = state.posMax; + + if (state.src.charCodeAt(pos) === 0x3C /* < */) { + pos++; + while (pos < max) { + code = state.src.charCodeAt(pos); + if (code === 0x0A /* \n */) { return false; } + if (code === 0x3E /* > */) { + link = normalize_link(unescapeMd$2(state.src.slice(start + 1, pos))); + if (!state.parser.validateLink(link)) { return false; } + state.pos = pos + 1; + state.linkContent = link; + return true; + } + if (code === 0x5C /* \ */ && pos + 1 < max) { + pos += 2; + continue; + } + + pos++; + } + + // no closing '>' + return false; + } + + // this should be ... } else { ... branch + + level = 0; + while (pos < max) { + code = state.src.charCodeAt(pos); + + if (code === 0x20) { break; } + + if (code > 0x08 && code < 0x0e) { break; } + + if (code === 0x5C /* \ */ && pos + 1 < max) { + pos += 2; + continue; + } + + if (code === 0x28 /* ( */) { + level++; + if (level > 1) { break; } + } + + if (code === 0x29 /* ) */) { + level--; + if (level < 0) { break; } + } + + pos++; + } + + if (start === pos) { return false; } + + link = unescapeMd$2(state.src.slice(start, pos)); + if (!state.parser.validateLink(link)) { return false; } + + state.linkContent = link; + state.pos = pos; + return true; + }; + + var unescapeMd$3 = utils.unescapeMd; + + /** + * Parse link title + * + * - on success it returns a string and updates state.pos; + * - on failure it returns null + * + * @param {Object} state + * @param {Number} pos + * @api private + */ + + var parse_link_title = function parseLinkTitle(state, pos) { + var code, + start = pos, + max = state.posMax, + marker = state.src.charCodeAt(pos); + + if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return false; } + + pos++; + + // if opening marker is "(", switch it to closing marker ")" + if (marker === 0x28) { marker = 0x29; } + + while (pos < max) { + code = state.src.charCodeAt(pos); + if (code === marker) { + state.pos = pos + 1; + state.linkContent = unescapeMd$3(state.src.slice(start + 1, pos)); + return true; + } + if (code === 0x5C /* \ */ && pos + 1 < max) { + pos += 2; + continue; + } + + pos++; + } + + return false; + }; + + var normalize_reference = function normalizeReference(str) { + // use .toUpperCase() instead of .toLowerCase() + // here to avoid a conflict with Object.prototype + // members (most notably, `__proto__`) + return str.trim().replace(/\s+/g, ' ').toUpperCase(); + }; + + function parseReference(str, parser, options, env) { + var state, labelEnd, pos, max, code, start, href, title, label; + + if (str.charCodeAt(0) !== 0x5B/* [ */) { return -1; } + + if (str.indexOf(']:') === -1) { return -1; } + + state = new state_inline(str, parser, options, env, []); + labelEnd = parse_link_label(state, 0); + + if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; } + + max = state.posMax; + + // [label]: destination 'title' + // ^^^ skip optional whitespace here + for (pos = labelEnd + 2; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (code !== 0x20 && code !== 0x0A) { break; } + } + + // [label]: destination 'title' + // ^^^^^^^^^^^ parse this + if (!parse_link_destination(state, pos)) { return -1; } + href = state.linkContent; + pos = state.pos; + + // [label]: destination 'title' + // ^^^ skipping those spaces + start = pos; + for (pos = pos + 1; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (code !== 0x20 && code !== 0x0A) { break; } + } + + // [label]: destination 'title' + // ^^^^^^^ parse this + if (pos < max && start !== pos && parse_link_title(state, pos)) { + title = state.linkContent; + pos = state.pos; + } else { + title = ''; + pos = start; + } + + // ensure that the end of the line is empty + while (pos < max && state.src.charCodeAt(pos) === 0x20/* space */) { pos++; } + if (pos < max && state.src.charCodeAt(pos) !== 0x0A) { return -1; } + + label = normalize_reference(str.slice(1, labelEnd)); + if (typeof env.references[label] === 'undefined') { + env.references[label] = { title: title, href: href }; + } + + return pos; + } + + + var references = function references(state) { + var tokens = state.tokens, i, l, content, pos; + + state.env.references = state.env.references || {}; + + if (state.inlineMode) { + return; + } + + // Scan definitions in paragraph inlines + for (i = 1, l = tokens.length - 1; i < l; i++) { + if (tokens[i].type === 'inline' && + tokens[i - 1].type === 'paragraph_open' && + tokens[i + 1].type === 'paragraph_close') { + + content = tokens[i].content; + while (content.length) { + pos = parseReference(content, state.inline, state.options, state.env); + if (pos < 0) { break; } + content = content.slice(pos).trim(); + } + + tokens[i].content = content; + if (!content.length) { + tokens[i - 1].tight = true; + tokens[i + 1].tight = true; + } + } + } + }; + + var inline = function inline(state) { + var tokens = state.tokens, tok, i, l; + + // Parse inlines + for (i = 0, l = tokens.length; i < l; i++) { + tok = tokens[i]; + if (tok.type === 'inline') { + state.inline.parse(tok.content, state.options, state.env, tok.children); + } + } + }; + + var footnote_tail = function footnote_block(state) { + var i, l, j, t, lastParagraph, list, tokens, current, currentLabel, + level = 0, + insideRef = false, + refTokens = {}; + + if (!state.env.footnotes) { return; } + + state.tokens = state.tokens.filter(function(tok) { + if (tok.type === 'footnote_reference_open') { + insideRef = true; + current = []; + currentLabel = tok.label; + return false; + } + if (tok.type === 'footnote_reference_close') { + insideRef = false; + // prepend ':' to avoid conflict with Object.prototype members + refTokens[':' + currentLabel] = current; + return false; + } + if (insideRef) { current.push(tok); } + return !insideRef; + }); + + if (!state.env.footnotes.list) { return; } + list = state.env.footnotes.list; + + state.tokens.push({ + type: 'footnote_block_open', + level: level++ + }); + for (i = 0, l = list.length; i < l; i++) { + state.tokens.push({ + type: 'footnote_open', + id: i, + level: level++ + }); + + if (list[i].tokens) { + tokens = []; + tokens.push({ + type: 'paragraph_open', + tight: false, + level: level++ + }); + tokens.push({ + type: 'inline', + content: '', + level: level, + children: list[i].tokens + }); + tokens.push({ + type: 'paragraph_close', + tight: false, + level: --level + }); + } else if (list[i].label) { + tokens = refTokens[':' + list[i].label]; + } + + state.tokens = state.tokens.concat(tokens); + if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') { + lastParagraph = state.tokens.pop(); + } else { + lastParagraph = null; + } + + t = list[i].count > 0 ? list[i].count : 1; + for (j = 0; j < t; j++) { + state.tokens.push({ + type: 'footnote_anchor', + id: i, + subId: j, + level: level + }); + } + + if (lastParagraph) { + state.tokens.push(lastParagraph); + } + + state.tokens.push({ + type: 'footnote_close', + level: --level + }); + } + state.tokens.push({ + type: 'footnote_block_close', + level: --level + }); + }; + + // Enclose abbreviations in tags + + + var PUNCT_CHARS = ' \n()[]\'".,!?-'; + + + // from Google closure library + // http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021 + function regEscape(s) { + return s.replace(/([-()\[\]{}+?*.$\^|,:#= 0; i--) { + token = tokens[i]; + if (token.type !== 'text') { continue; } + + pos = 0; + text = token.content; + reg.lastIndex = 0; + level = token.level; + nodes = []; + + while ((m = reg.exec(text))) { + if (reg.lastIndex > pos) { + nodes.push({ + type: 'text', + content: text.slice(pos, m.index + m[1].length), + level: level + }); + } + + nodes.push({ + type: 'abbr_open', + title: state.env.abbreviations[':' + m[2]], + level: level++ + }); + nodes.push({ + type: 'text', + content: m[2], + level: level + }); + nodes.push({ + type: 'abbr_close', + level: --level + }); + pos = reg.lastIndex - m[3].length; + } + + if (!nodes.length) { continue; } + + if (pos < text.length) { + nodes.push({ + type: 'text', + content: text.slice(pos), + level: level + }); + } + + // replace current node + blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); + } + } + }; + + // Simple typographical replacements + + // TODO: + // - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾ + // - miltiplication 2 x 4 -> 2 × 4 + + var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; + + var SCOPED_ABBR_RE = /\((c|tm|r|p)\)/ig; + var SCOPED_ABBR = { + 'c': '©', + 'r': '®', + 'p': '§', + 'tm': '™' + }; + + function replaceScopedAbbr(str) { + if (str.indexOf('(') < 0) { return str; } + + return str.replace(SCOPED_ABBR_RE, function(match, name) { + return SCOPED_ABBR[name.toLowerCase()]; + }); + } + + + var replacements = function replace(state) { + var i, token, text, inlineTokens, blkIdx; + + if (!state.options.typographer) { return; } + + for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { + + if (state.tokens[blkIdx].type !== 'inline') { continue; } + + inlineTokens = state.tokens[blkIdx].children; + + for (i = inlineTokens.length - 1; i >= 0; i--) { + token = inlineTokens[i]; + if (token.type === 'text') { + text = token.content; + + text = replaceScopedAbbr(text); + + if (RARE_RE.test(text)) { + text = text + .replace(/\+-/g, '±') + // .., ..., ....... -> … + // but ?..... & !..... -> ?.. & !.. + .replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..') + .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') + // em-dash + .replace(/(^|[^-])---([^-]|$)/mg, '$1\u2014$2') + // en-dash + .replace(/(^|\s)--(\s|$)/mg, '$1\u2013$2') + .replace(/(^|[^-\s])--([^-\s]|$)/mg, '$1\u2013$2'); + } + + token.content = text; + } + } + } + }; + + // Convert straight quotation marks to typographic ones + + + var QUOTE_TEST_RE = /['"]/; + var QUOTE_RE = /['"]/g; + var PUNCT_RE = /[-\s()\[\]]/; + var APOSTROPHE = '’'; + + // This function returns true if the character at `pos` + // could be inside a word. + function isLetter(str, pos) { + if (pos < 0 || pos >= str.length) { return false; } + return !PUNCT_RE.test(str[pos]); + } + + + function replaceAt(str, index, ch) { + return str.substr(0, index) + ch + str.substr(index + 1); + } + + + var smartquotes = function smartquotes(state) { + /*eslint max-depth:0*/ + var i, token, text, t, pos, max, thisLevel, lastSpace, nextSpace, item, + canOpen, canClose, j, isSingle, blkIdx, tokens, + stack; + + if (!state.options.typographer) { return; } + + stack = []; + + for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { + + if (state.tokens[blkIdx].type !== 'inline') { continue; } + + tokens = state.tokens[blkIdx].children; + stack.length = 0; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + + if (token.type !== 'text' || QUOTE_TEST_RE.test(token.text)) { continue; } + + thisLevel = tokens[i].level; + + for (j = stack.length - 1; j >= 0; j--) { + if (stack[j].level <= thisLevel) { break; } + } + stack.length = j + 1; + + text = token.content; + pos = 0; + max = text.length; + + /*eslint no-labels:0,block-scoped-var:0*/ + OUTER: + while (pos < max) { + QUOTE_RE.lastIndex = pos; + t = QUOTE_RE.exec(text); + if (!t) { break; } + + lastSpace = !isLetter(text, t.index - 1); + pos = t.index + 1; + isSingle = (t[0] === "'"); + nextSpace = !isLetter(text, pos); + + if (!nextSpace && !lastSpace) { + // middle of word + if (isSingle) { + token.content = replaceAt(token.content, t.index, APOSTROPHE); + } + continue; + } + + canOpen = !nextSpace; + canClose = !lastSpace; + + if (canClose) { + // this could be a closing quote, rewind the stack to get a match + for (j = stack.length - 1; j >= 0; j--) { + item = stack[j]; + if (stack[j].level < thisLevel) { break; } + if (item.single === isSingle && stack[j].level === thisLevel) { + item = stack[j]; + if (isSingle) { + tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[2]); + token.content = replaceAt(token.content, t.index, state.options.quotes[3]); + } else { + tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[0]); + token.content = replaceAt(token.content, t.index, state.options.quotes[1]); + } + stack.length = j; + continue OUTER; + } + } + } + + if (canOpen) { + stack.push({ + token: i, + pos: t.index, + single: isSingle, + level: thisLevel + }); + } else if (canClose && isSingle) { + token.content = replaceAt(token.content, t.index, APOSTROPHE); + } + } + } + } + }; + + var Autolinker = createCommonjsModule(function (module, exports) { + (function (root, factory) { + if (typeof undefined === 'function' && undefined.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + undefined([], function () { + return (root['Autolinker'] = factory()); + }); + } else { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } + }(commonjsGlobal, function () { + + /*! + * Autolinker.js + * 0.15.3 + * + * Copyright(c) 2015 Gregory Jacobs + * MIT Licensed. http://www.opensource.org/licenses/mit-license.php + * + * https://github.com/gregjacobs/Autolinker.js + */ + /** + * @class Autolinker + * @extends Object + * + * Utility class used to process a given string of text, and wrap the URLs, email addresses, and Twitter handles in + * the appropriate anchor (<a>) tags to turn them into links. + * + * Any of the configuration options may be provided in an Object (map) provided to the Autolinker constructor, which + * will configure how the {@link #link link()} method will process the links. + * + * For example: + * + * var autolinker = new Autolinker( { + * newWindow : false, + * truncate : 30 + * } ); + * + * var html = autolinker.link( "Joe went to www.yahoo.com" ); + * // produces: 'Joe went to yahoo.com' + * + * + * The {@link #static-link static link()} method may also be used to inline options into a single call, which may + * be more convenient for one-off uses. For example: + * + * var html = Autolinker.link( "Joe went to www.yahoo.com", { + * newWindow : false, + * truncate : 30 + * } ); + * // produces: 'Joe went to yahoo.com' + * + * + * ## Custom Replacements of Links + * + * If the configuration options do not provide enough flexibility, a {@link #replaceFn} may be provided to fully customize + * the output of Autolinker. This function is called once for each URL/Email/Twitter handle match that is encountered. + * + * For example: + * + * var input = "..."; // string with URLs, Email Addresses, and Twitter Handles + * + * var linkedText = Autolinker.link( input, { + * replaceFn : function( autolinker, match ) { + * console.log( "href = ", match.getAnchorHref() ); + * console.log( "text = ", match.getAnchorText() ); + * + * switch( match.getType() ) { + * case 'url' : + * console.log( "url: ", match.getUrl() ); + * + * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) { + * var tag = autolinker.getTagBuilder().build( match ); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes + * tag.setAttr( 'rel', 'nofollow' ); + * tag.addClass( 'external-link' ); + * + * return tag; + * + * } else { + * return true; // let Autolinker perform its normal anchor tag replacement + * } + * + * case 'email' : + * var email = match.getEmail(); + * console.log( "email: ", email ); + * + * if( email === "my@own.address" ) { + * return false; // don't auto-link this particular email address; leave as-is + * } else { + * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`) + * } + * + * case 'twitter' : + * var twitterHandle = match.getTwitterHandle(); + * console.log( twitterHandle ); + * + * return '' + twitterHandle + ''; + * } + * } + * } ); + * + * + * The function may return the following values: + * + * - `true` (Boolean): Allow Autolinker to replace the match as it normally would. + * - `false` (Boolean): Do not replace the current match at all - leave as-is. + * - Any String: If a string is returned from the function, the string will be used directly as the replacement HTML for + * the match. + * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify an HTML tag before writing out its HTML text. + * + * @constructor + * @param {Object} [config] The configuration options for the Autolinker instance, specified in an Object (map). + */ + var Autolinker = function( cfg ) { + Autolinker.Util.assign( this, cfg ); // assign the properties of `cfg` onto the Autolinker instance. Prototype properties will be used for missing configs. + }; + + + Autolinker.prototype = { + constructor : Autolinker, // fix constructor property + + /** + * @cfg {Boolean} urls + * + * `true` if miscellaneous URLs should be automatically linked, `false` if they should not be. + */ + urls : true, + + /** + * @cfg {Boolean} email + * + * `true` if email addresses should be automatically linked, `false` if they should not be. + */ + email : true, + + /** + * @cfg {Boolean} twitter + * + * `true` if Twitter handles ("@example") should be automatically linked, `false` if they should not be. + */ + twitter : true, + + /** + * @cfg {Boolean} newWindow + * + * `true` if the links should open in a new window, `false` otherwise. + */ + newWindow : true, + + /** + * @cfg {Boolean} stripPrefix + * + * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped from the beginning of URL links' text, + * `false` otherwise. + */ + stripPrefix : true, + + /** + * @cfg {Number} truncate + * + * A number for how many characters long URLs/emails/twitter handles should be truncated to inside the text of + * a link. If the URL/email/twitter is over this number of characters, it will be truncated to this length by + * adding a two period ellipsis ('..') to the end of the string. + * + * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file' truncated to 25 characters might look + * something like this: 'yahoo.com/some/long/pat..' + */ + truncate : undefined, + + /** + * @cfg {String} className + * + * A CSS class name to add to the generated links. This class will be added to all links, as well as this class + * plus url/email/twitter suffixes for styling url/email/twitter links differently. + * + * For example, if this config is provided as "myLink", then: + * + * - URL links will have the CSS classes: "myLink myLink-url" + * - Email links will have the CSS classes: "myLink myLink-email", and + * - Twitter links will have the CSS classes: "myLink myLink-twitter" + */ + className : "", + + /** + * @cfg {Function} replaceFn + * + * A function to individually process each URL/Email/Twitter match found in the input string. + * + * See the class's description for usage. + * + * This function is called with the following parameters: + * + * @cfg {Autolinker} replaceFn.autolinker The Autolinker instance, which may be used to retrieve child objects from (such + * as the instance's {@link #getTagBuilder tag builder}). + * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which can be used to retrieve information about the + * {@link Autolinker.match.Url URL}/{@link Autolinker.match.Email email}/{@link Autolinker.match.Twitter Twitter} + * match that the `replaceFn` is currently processing. + */ + + + /** + * @private + * @property {Autolinker.htmlParser.HtmlParser} htmlParser + * + * The HtmlParser instance used to skip over HTML tags, while finding text nodes to process. This is lazily instantiated + * in the {@link #getHtmlParser} method. + */ + htmlParser : undefined, + + /** + * @private + * @property {Autolinker.matchParser.MatchParser} matchParser + * + * The MatchParser instance used to find URL/email/Twitter matches in the text nodes of an input string passed to + * {@link #link}. This is lazily instantiated in the {@link #getMatchParser} method. + */ + matchParser : undefined, + + /** + * @private + * @property {Autolinker.AnchorTagBuilder} tagBuilder + * + * The AnchorTagBuilder instance used to build the URL/email/Twitter replacement anchor tags. This is lazily instantiated + * in the {@link #getTagBuilder} method. + */ + tagBuilder : undefined, + + + /** + * Automatically links URLs, email addresses, and Twitter handles found in the given chunk of HTML. + * Does not link URLs found within HTML tags. + * + * For instance, if given the text: `You should go to http://www.yahoo.com`, then the result + * will be `You should go to <a href="http://www.yahoo.com">http://www.yahoo.com</a>` + * + * This method finds the text around any HTML elements in the input `textOrHtml`, which will be the text that is processed. + * Any original HTML elements will be left as-is, as well as the text that is already wrapped in anchor (<a>) tags. + * + * @param {String} textOrHtml The HTML or text to link URLs, email addresses, and Twitter handles within (depending on if + * the {@link #urls}, {@link #email}, and {@link #twitter} options are enabled). + * @return {String} The HTML, with URLs/emails/Twitter handles automatically linked. + */ + link : function( textOrHtml ) { + var htmlParser = this.getHtmlParser(), + htmlNodes = htmlParser.parse( textOrHtml ), + anchorTagStackCount = 0, // used to only process text around anchor tags, and any inner text/html they may have + resultHtml = []; + + for( var i = 0, len = htmlNodes.length; i < len; i++ ) { + var node = htmlNodes[ i ], + nodeType = node.getType(), + nodeText = node.getText(); + + if( nodeType === 'element' ) { + // Process HTML nodes in the input `textOrHtml` + if( node.getTagName() === 'a' ) { + if( !node.isClosing() ) { // it's the start tag + anchorTagStackCount++; + } else { // it's the end tag + anchorTagStackCount = Math.max( anchorTagStackCount - 1, 0 ); // attempt to handle extraneous tags by making sure the stack count never goes below 0 + } + } + resultHtml.push( nodeText ); // now add the text of the tag itself verbatim + + } else if( nodeType === 'entity' ) { + resultHtml.push( nodeText ); // append HTML entity nodes (such as ' ') verbatim + + } else { + // Process text nodes in the input `textOrHtml` + if( anchorTagStackCount === 0 ) { + // If we're not within an tag, process the text node to linkify + var linkifiedStr = this.linkifyStr( nodeText ); + resultHtml.push( linkifiedStr ); + + } else { + // `text` is within an tag, simply append the text - we do not want to autolink anything + // already within an ... tag + resultHtml.push( nodeText ); + } + } + } + + return resultHtml.join( "" ); + }, + + + /** + * Process the text that lies in between HTML tags, performing the anchor tag replacements for matched + * URLs/emails/Twitter handles, and returns the string with the replacements made. + * + * This method does the actual wrapping of URLs/emails/Twitter handles with anchor tags. + * + * @private + * @param {String} str The string of text to auto-link. + * @return {String} The text with anchor tags auto-filled. + */ + linkifyStr : function( str ) { + return this.getMatchParser().replace( str, this.createMatchReturnVal, this ); + }, + + + /** + * Creates the return string value for a given match in the input string, for the {@link #processTextNode} method. + * + * This method handles the {@link #replaceFn}, if one was provided. + * + * @private + * @param {Autolinker.match.Match} match The Match object that represents the match. + * @return {String} The string that the `match` should be replaced with. This is usually the anchor tag string, but + * may be the `matchStr` itself if the match is not to be replaced. + */ + createMatchReturnVal : function( match ) { + // Handle a custom `replaceFn` being provided + var replaceFnResult; + if( this.replaceFn ) { + replaceFnResult = this.replaceFn.call( this, this, match ); // Autolinker instance is the context, and the first arg + } + + if( typeof replaceFnResult === 'string' ) { + return replaceFnResult; // `replaceFn` returned a string, use that + + } else if( replaceFnResult === false ) { + return match.getMatchedText(); // no replacement for the match + + } else if( replaceFnResult instanceof Autolinker.HtmlTag ) { + return replaceFnResult.toString(); + + } else { // replaceFnResult === true, or no/unknown return value from function + // Perform Autolinker's default anchor tag generation + var tagBuilder = this.getTagBuilder(), + anchorTag = tagBuilder.build( match ); // returns an Autolinker.HtmlTag instance + + return anchorTag.toString(); + } + }, + + + /** + * Lazily instantiates and returns the {@link #htmlParser} instance for this Autolinker instance. + * + * @protected + * @return {Autolinker.htmlParser.HtmlParser} + */ + getHtmlParser : function() { + var htmlParser = this.htmlParser; + + if( !htmlParser ) { + htmlParser = this.htmlParser = new Autolinker.htmlParser.HtmlParser(); + } + + return htmlParser; + }, + + + /** + * Lazily instantiates and returns the {@link #matchParser} instance for this Autolinker instance. + * + * @protected + * @return {Autolinker.matchParser.MatchParser} + */ + getMatchParser : function() { + var matchParser = this.matchParser; + + if( !matchParser ) { + matchParser = this.matchParser = new Autolinker.matchParser.MatchParser( { + urls : this.urls, + email : this.email, + twitter : this.twitter, + stripPrefix : this.stripPrefix + } ); + } + + return matchParser; + }, + + + /** + * Returns the {@link #tagBuilder} instance for this Autolinker instance, lazily instantiating it + * if it does not yet exist. + * + * This method may be used in a {@link #replaceFn} to generate the {@link Autolinker.HtmlTag HtmlTag} instance that + * Autolinker would normally generate, and then allow for modifications before returning it. For example: + * + * var html = Autolinker.link( "Test google.com", { + * replaceFn : function( autolinker, match ) { + * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance + * tag.setAttr( 'rel', 'nofollow' ); + * + * return tag; + * } + * } ); + * + * // generated html: + * // Test google.com + * + * @return {Autolinker.AnchorTagBuilder} + */ + getTagBuilder : function() { + var tagBuilder = this.tagBuilder; + + if( !tagBuilder ) { + tagBuilder = this.tagBuilder = new Autolinker.AnchorTagBuilder( { + newWindow : this.newWindow, + truncate : this.truncate, + className : this.className + } ); + } + + return tagBuilder; + } + + }; + + + /** + * Automatically links URLs, email addresses, and Twitter handles found in the given chunk of HTML. + * Does not link URLs found within HTML tags. + * + * For instance, if given the text: `You should go to http://www.yahoo.com`, then the result + * will be `You should go to <a href="http://www.yahoo.com">http://www.yahoo.com</a>` + * + * Example: + * + * var linkedText = Autolinker.link( "Go to google.com", { newWindow: false } ); + * // Produces: "Go to google.com" + * + * @static + * @param {String} textOrHtml The HTML or text to find URLs, email addresses, and Twitter handles within (depending on if + * the {@link #urls}, {@link #email}, and {@link #twitter} options are enabled). + * @param {Object} [options] Any of the configuration options for the Autolinker class, specified in an Object (map). + * See the class description for an example call. + * @return {String} The HTML text, with URLs automatically linked + */ + Autolinker.link = function( textOrHtml, options ) { + var autolinker = new Autolinker( options ); + return autolinker.link( textOrHtml ); + }; + + + // Autolinker Namespaces + Autolinker.match = {}; + Autolinker.htmlParser = {}; + Autolinker.matchParser = {}; + /*global Autolinker */ + /*jshint eqnull:true, boss:true */ + /** + * @class Autolinker.Util + * @singleton + * + * A few utility methods for Autolinker. + */ + Autolinker.Util = { + + /** + * @property {Function} abstractMethod + * + * A function object which represents an abstract method. + */ + abstractMethod : function() { throw "abstract"; }, + + + /** + * Assigns (shallow copies) the properties of `src` onto `dest`. + * + * @param {Object} dest The destination object. + * @param {Object} src The source object. + * @return {Object} The destination object (`dest`) + */ + assign : function( dest, src ) { + for( var prop in src ) { + if( src.hasOwnProperty( prop ) ) { + dest[ prop ] = src[ prop ]; + } + } + + return dest; + }, + + + /** + * Extends `superclass` to create a new subclass, adding the `protoProps` to the new subclass's prototype. + * + * @param {Function} superclass The constructor function for the superclass. + * @param {Object} protoProps The methods/properties to add to the subclass's prototype. This may contain the + * special property `constructor`, which will be used as the new subclass's constructor function. + * @return {Function} The new subclass function. + */ + extend : function( superclass, protoProps ) { + var superclassProto = superclass.prototype; + + var F = function() {}; + F.prototype = superclassProto; + + var subclass; + if( protoProps.hasOwnProperty( 'constructor' ) ) { + subclass = protoProps.constructor; + } else { + subclass = function() { superclassProto.constructor.apply( this, arguments ); }; + } + + var subclassProto = subclass.prototype = new F(); // set up prototype chain + subclassProto.constructor = subclass; // fix constructor property + subclassProto.superclass = superclassProto; + + delete protoProps.constructor; // don't re-assign constructor property to the prototype, since a new function may have been created (`subclass`), which is now already there + Autolinker.Util.assign( subclassProto, protoProps ); + + return subclass; + }, + + + /** + * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the + * end of the string (by default, two periods: '..'). If the `str` length does not exceed + * `len`, the string will be returned unchanged. + * + * @param {String} str The string to truncate and add an ellipsis to. + * @param {Number} truncateLen The length to truncate the string at. + * @param {String} [ellipsisChars=..] The ellipsis character(s) to add to the end of `str` + * when truncated. Defaults to '..' + */ + ellipsis : function( str, truncateLen, ellipsisChars ) { + if( str.length > truncateLen ) { + ellipsisChars = ( ellipsisChars == null ) ? '..' : ellipsisChars; + str = str.substring( 0, truncateLen - ellipsisChars.length ) + ellipsisChars; + } + return str; + }, + + + /** + * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below). + * + * @param {Array} arr The array to find an element of. + * @param {*} element The element to find in the array, and return the index of. + * @return {Number} The index of the `element`, or -1 if it was not found. + */ + indexOf : function( arr, element ) { + if( Array.prototype.indexOf ) { + return arr.indexOf( element ); + + } else { + for( var i = 0, len = arr.length; i < len; i++ ) { + if( arr[ i ] === element ) return i; + } + return -1; + } + }, + + + + /** + * Performs the functionality of what modern browsers do when `String.prototype.split()` is called + * with a regular expression that contains capturing parenthesis. + * + * For example: + * + * // Modern browsers: + * "a,b,c".split( /(,)/ ); // --> [ 'a', ',', 'b', ',', 'c' ] + * + * // Old IE (including IE8): + * "a,b,c".split( /(,)/ ); // --> [ 'a', 'b', 'c' ] + * + * This method emulates the functionality of modern browsers for the old IE case. + * + * @param {String} str The string to split. + * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting + * character(s) will be spliced into the array, as in the "modern browsers" example in the + * description of this method. + * Note #1: the supplied regular expression **must** have the 'g' flag specified. + * Note #2: for simplicity's sake, the regular expression does not need + * to contain capturing parenthesis - it will be assumed that any match has them. + * @return {String[]} The split array of strings, with the splitting character(s) included. + */ + splitAndCapture : function( str, splitRegex ) { + if( !splitRegex.global ) throw new Error( "`splitRegex` must have the 'g' flag set" ); + + var result = [], + lastIdx = 0, + match; + + while( match = splitRegex.exec( str ) ) { + result.push( str.substring( lastIdx, match.index ) ); + result.push( match[ 0 ] ); // push the splitting char(s) + + lastIdx = match.index + match[ 0 ].length; + } + result.push( str.substring( lastIdx ) ); + + return result; + } + + }; + /*global Autolinker */ + /*jshint boss:true */ + /** + * @class Autolinker.HtmlTag + * @extends Object + * + * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically. + * + * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use + * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}. + * + * ## Examples + * + * Example instantiation: + * + * var tag = new Autolinker.HtmlTag( { + * tagName : 'a', + * attrs : { 'href': 'http://google.com', 'class': 'external-link' }, + * innerHtml : 'Google' + * } ); + * + * tag.toString(); // Google + * + * // Individual accessor methods + * tag.getTagName(); // 'a' + * tag.getAttr( 'href' ); // 'http://google.com' + * tag.hasClass( 'external-link' ); // true + * + * + * Using mutator methods (which may be used in combination with instantiation config properties): + * + * var tag = new Autolinker.HtmlTag(); + * tag.setTagName( 'a' ); + * tag.setAttr( 'href', 'http://google.com' ); + * tag.addClass( 'external-link' ); + * tag.setInnerHtml( 'Google' ); + * + * tag.getTagName(); // 'a' + * tag.getAttr( 'href' ); // 'http://google.com' + * tag.hasClass( 'external-link' ); // true + * + * tag.toString(); // Google + * + * + * ## Example use within a {@link Autolinker#replaceFn replaceFn} + * + * var html = Autolinker.link( "Test google.com", { + * replaceFn : function( autolinker, match ) { + * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text + * tag.setAttr( 'rel', 'nofollow' ); + * + * return tag; + * } + * } ); + * + * // generated html: + * // Test google.com + * + * + * ## Example use with a new tag for the replacement + * + * var html = Autolinker.link( "Test google.com", { + * replaceFn : function( autolinker, match ) { + * var tag = new Autolinker.HtmlTag( { + * tagName : 'button', + * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() }, + * innerHtml : 'Load URL: ' + match.getAnchorText() + * } ); + * + * return tag; + * } + * } ); + * + * // generated html: + * // Test + */ + Autolinker.HtmlTag = Autolinker.Util.extend( Object, { + + /** + * @cfg {String} tagName + * + * The tag name. Ex: 'a', 'button', etc. + * + * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toString} + * is executed. + */ + + /** + * @cfg {Object.} attrs + * + * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the + * values are the attribute values. + */ + + /** + * @cfg {String} innerHtml + * + * The inner HTML for the tag. + * + * Note the camel case name on `innerHtml`. Acronyms are camelCased in this utility (such as not to run into the acronym + * naming inconsistency that the DOM developers created with `XMLHttpRequest`). You may alternatively use {@link #innerHTML} + * if you prefer, but this one is recommended. + */ + + /** + * @cfg {String} innerHTML + * + * Alias of {@link #innerHtml}, accepted for consistency with the browser DOM api, but prefer the camelCased version + * for acronym names. + */ + + + /** + * @protected + * @property {RegExp} whitespaceRegex + * + * Regular expression used to match whitespace in a string of CSS classes. + */ + whitespaceRegex : /\s+/, + + + /** + * @constructor + * @param {Object} [cfg] The configuration properties for this class, in an Object (map) + */ + constructor : function( cfg ) { + Autolinker.Util.assign( this, cfg ); + + this.innerHtml = this.innerHtml || this.innerHTML; // accept either the camelCased form or the fully capitalized acronym + }, + + + /** + * Sets the tag name that will be used to generate the tag with. + * + * @param {String} tagName + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + setTagName : function( tagName ) { + this.tagName = tagName; + return this; + }, + + + /** + * Retrieves the tag name. + * + * @return {String} + */ + getTagName : function() { + return this.tagName || ""; + }, + + + /** + * Sets an attribute on the HtmlTag. + * + * @param {String} attrName The attribute name to set. + * @param {String} attrValue The attribute value to set. + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + setAttr : function( attrName, attrValue ) { + var tagAttrs = this.getAttrs(); + tagAttrs[ attrName ] = attrValue; + + return this; + }, + + + /** + * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`. + * + * @param {String} name The attribute name to retrieve. + * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag. + */ + getAttr : function( attrName ) { + return this.getAttrs()[ attrName ]; + }, + + + /** + * Sets one or more attributes on the HtmlTag. + * + * @param {Object.} attrs A key/value Object (map) of the attributes to set. + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + setAttrs : function( attrs ) { + var tagAttrs = this.getAttrs(); + Autolinker.Util.assign( tagAttrs, attrs ); + + return this; + }, + + + /** + * Retrieves the attributes Object (map) for the HtmlTag. + * + * @return {Object.} A key/value object of the attributes for the HtmlTag. + */ + getAttrs : function() { + return this.attrs || ( this.attrs = {} ); + }, + + + /** + * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag. + * + * @param {String} cssClass One or more space-separated CSS classes to set (overwrite). + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + setClass : function( cssClass ) { + return this.setAttr( 'class', cssClass ); + }, + + + /** + * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes. + * + * @param {String} cssClass One or more space-separated CSS classes to add. + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + addClass : function( cssClass ) { + var classAttr = this.getClass(), + whitespaceRegex = this.whitespaceRegex, + indexOf = Autolinker.Util.indexOf, // to support IE8 and below + classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ), + newClasses = cssClass.split( whitespaceRegex ), + newClass; + + while( newClass = newClasses.shift() ) { + if( indexOf( classes, newClass ) === -1 ) { + classes.push( newClass ); + } + } + + this.getAttrs()[ 'class' ] = classes.join( " " ); + return this; + }, + + + /** + * Convenience method to remove one or more CSS classes from the HtmlTag. + * + * @param {String} cssClass One or more space-separated CSS classes to remove. + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + removeClass : function( cssClass ) { + var classAttr = this.getClass(), + whitespaceRegex = this.whitespaceRegex, + indexOf = Autolinker.Util.indexOf, // to support IE8 and below + classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ), + removeClasses = cssClass.split( whitespaceRegex ), + removeClass; + + while( classes.length && ( removeClass = removeClasses.shift() ) ) { + var idx = indexOf( classes, removeClass ); + if( idx !== -1 ) { + classes.splice( idx, 1 ); + } + } + + this.getAttrs()[ 'class' ] = classes.join( " " ); + return this; + }, + + + /** + * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when + * there are multiple. + * + * @return {String} + */ + getClass : function() { + return this.getAttrs()[ 'class' ] || ""; + }, + + + /** + * Convenience method to check if the tag has a CSS class or not. + * + * @param {String} cssClass The CSS class to check for. + * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise. + */ + hasClass : function( cssClass ) { + return ( ' ' + this.getClass() + ' ' ).indexOf( ' ' + cssClass + ' ' ) !== -1; + }, + + + /** + * Sets the inner HTML for the tag. + * + * @param {String} html The inner HTML to set. + * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained. + */ + setInnerHtml : function( html ) { + this.innerHtml = html; + + return this; + }, + + + /** + * Retrieves the inner HTML for the tag. + * + * @return {String} + */ + getInnerHtml : function() { + return this.innerHtml || ""; + }, + + + /** + * Override of superclass method used to generate the HTML string for the tag. + * + * @return {String} + */ + toString : function() { + var tagName = this.getTagName(), + attrsStr = this.buildAttrsStr(); + + attrsStr = ( attrsStr ) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes + + return [ '<', tagName, attrsStr, '>', this.getInnerHtml(), '' ].join( "" ); + }, + + + /** + * Support method for {@link #toString}, returns the string space-separated key="value" pairs, used to populate + * the stringified HtmlTag. + * + * @protected + * @return {String} Example return: `attr1="value1" attr2="value2"` + */ + buildAttrsStr : function() { + if( !this.attrs ) return ""; // no `attrs` Object (map) has been set, return empty string + + var attrs = this.getAttrs(), + attrsArr = []; + + for( var prop in attrs ) { + if( attrs.hasOwnProperty( prop ) ) { + attrsArr.push( prop + '="' + attrs[ prop ] + '"' ); + } + } + return attrsArr.join( " " ); + } + + } ); + /*global Autolinker */ + /*jshint sub:true */ + /** + * @protected + * @class Autolinker.AnchorTagBuilder + * @extends Object + * + * Builds anchor (<a>) tags for the Autolinker utility when a match is found. + * + * Normally this class is instantiated, configured, and used internally by an {@link Autolinker} instance, but may + * actually be retrieved in a {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag} instances + * which may be modified before returning from the {@link Autolinker#replaceFn replaceFn}. For example: + * + * var html = Autolinker.link( "Test google.com", { + * replaceFn : function( autolinker, match ) { + * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance + * tag.setAttr( 'rel', 'nofollow' ); + * + * return tag; + * } + * } ); + * + * // generated html: + * // Test google.com + */ + Autolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, { + + /** + * @cfg {Boolean} newWindow + * @inheritdoc Autolinker#newWindow + */ + + /** + * @cfg {Number} truncate + * @inheritdoc Autolinker#truncate + */ + + /** + * @cfg {String} className + * @inheritdoc Autolinker#className + */ + + + /** + * @constructor + * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map). + */ + constructor : function( cfg ) { + Autolinker.Util.assign( this, cfg ); + }, + + + /** + * Generates the actual anchor (<a>) tag to use in place of the matched URL/email/Twitter text, + * via its `match` object. + * + * @param {Autolinker.match.Match} match The Match instance to generate an anchor tag from. + * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag. + */ + build : function( match ) { + var tag = new Autolinker.HtmlTag( { + tagName : 'a', + attrs : this.createAttrs( match.getType(), match.getAnchorHref() ), + innerHtml : this.processAnchorText( match.getAnchorText() ) + } ); + + return tag; + }, + + + /** + * Creates the Object (map) of the HTML attributes for the anchor (<a>) tag being generated. + * + * @protected + * @param {"url"/"email"/"twitter"} matchType The type of match that an anchor tag is being generated for. + * @param {String} href The href for the anchor tag. + * @return {Object} A key/value Object (map) of the anchor tag's attributes. + */ + createAttrs : function( matchType, anchorHref ) { + var attrs = { + 'href' : anchorHref // we'll always have the `href` attribute + }; + + var cssClass = this.createCssClass( matchType ); + if( cssClass ) { + attrs[ 'class' ] = cssClass; + } + if( this.newWindow ) { + attrs[ 'target' ] = "_blank"; + } + + return attrs; + }, + + + /** + * Creates the CSS class that will be used for a given anchor tag, based on the `matchType` and the {@link #className} + * config. + * + * @private + * @param {"url"/"email"/"twitter"} matchType The type of match that an anchor tag is being generated for. + * @return {String} The CSS class string for the link. Example return: "myLink myLink-url". If no {@link #className} + * was configured, returns an empty string. + */ + createCssClass : function( matchType ) { + var className = this.className; + + if( !className ) + return ""; + else + return className + " " + className + "-" + matchType; // ex: "myLink myLink-url", "myLink myLink-email", or "myLink myLink-twitter" + }, + + + /** + * Processes the `anchorText` by truncating the text according to the {@link #truncate} config. + * + * @private + * @param {String} anchorText The anchor tag's text (i.e. what will be displayed). + * @return {String} The processed `anchorText`. + */ + processAnchorText : function( anchorText ) { + anchorText = this.doTruncate( anchorText ); + + return anchorText; + }, + + + /** + * Performs the truncation of the `anchorText`, if the `anchorText` is longer than the {@link #truncate} option. + * Truncates the text to 2 characters fewer than the {@link #truncate} option, and adds ".." to the end. + * + * @private + * @param {String} text The anchor tag's text (i.e. what will be displayed). + * @return {String} The truncated anchor text. + */ + doTruncate : function( anchorText ) { + return Autolinker.Util.ellipsis( anchorText, this.truncate || Number.POSITIVE_INFINITY ); + } + + } ); + /*global Autolinker */ + /** + * @private + * @class Autolinker.htmlParser.HtmlParser + * @extends Object + * + * An HTML parser implementation which simply walks an HTML string and returns an array of + * {@link Autolinker.htmlParser.HtmlNode HtmlNodes} that represent the basic HTML structure of the input string. + * + * Autolinker uses this to only link URLs/emails/Twitter handles within text nodes, effectively ignoring / "walking + * around" HTML tags. + */ + Autolinker.htmlParser.HtmlParser = Autolinker.Util.extend( Object, { + + /** + * @private + * @property {RegExp} htmlRegex + * + * The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and + * attribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html. + * + * Capturing groups: + * + * 1. The "!DOCTYPE" tag name, if a tag is a <!DOCTYPE> tag. + * 2. If it is an end tag, this group will have the '/'. + * 3. The tag name for all tags (other than the <!DOCTYPE> tag) + */ + htmlRegex : (function() { + var tagNameRegex = /[0-9a-zA-Z][0-9a-zA-Z:]*/, + attrNameRegex = /[^\s\0"'>\/=\x01-\x1F\x7F]+/, // the unicode range accounts for excluding control chars, and the delete char + attrValueRegex = /(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/, // double quoted, single quoted, or unquoted attribute values + nameEqualsValueRegex = attrNameRegex.source + '(?:\\s*=\\s*' + attrValueRegex.source + ')?'; // optional '=[value]' + + return new RegExp( [ + // for tag. Ex: ) + '(?:', + '<(!DOCTYPE)', // *** Capturing Group 1 - If it's a doctype tag + + // Zero or more attributes following the tag name + '(?:', + '\\s+', // one or more whitespace chars before an attribute + + // Either: + // A. attr="value", or + // B. "value" alone (To cover example doctype tag: ) + '(?:', nameEqualsValueRegex, '|', attrValueRegex.source + ')', + ')*', + '>', + ')', + + '|', + + // All other HTML tags (i.e. tags that are not ) + '(?:', + '<(/)?', // Beginning of a tag. Either '<' for a start tag, or '' + '>', + ')' + ].join( "" ), 'gi' ); + } )(), + + /** + * @private + * @property {RegExp} htmlCharacterEntitiesRegex + * + * The regular expression that matches common HTML character entities. + * + * Ignoring & as it could be part of a query string -- handling it separately. + */ + htmlCharacterEntitiesRegex: /( | |<|<|>|>|"|"|')/gi, + + + /** + * Parses an HTML string and returns a simple array of {@link Autolinker.htmlParser.HtmlNode HtmlNodes} to represent + * the HTML structure of the input string. + * + * @param {String} html The HTML to parse. + * @return {Autolinker.htmlParser.HtmlNode[]} + */ + parse : function( html ) { + var htmlRegex = this.htmlRegex, + currentResult, + lastIndex = 0, + textAndEntityNodes, + nodes = []; // will be the result of the method + + while( ( currentResult = htmlRegex.exec( html ) ) !== null ) { + var tagText = currentResult[ 0 ], + tagName = currentResult[ 1 ] || currentResult[ 3 ], // The tag (ex: "!DOCTYPE"), or another tag (ex: "a" or "img") + isClosingTag = !!currentResult[ 2 ], + inBetweenTagsText = html.substring( lastIndex, currentResult.index ); + + // Push TextNodes and EntityNodes for any text found between tags + if( inBetweenTagsText ) { + textAndEntityNodes = this.parseTextAndEntityNodes( inBetweenTagsText ); + nodes.push.apply( nodes, textAndEntityNodes ); + } + + // Push the ElementNode + nodes.push( this.createElementNode( tagText, tagName, isClosingTag ) ); + + lastIndex = currentResult.index + tagText.length; + } + + // Process any remaining text after the last HTML element. Will process all of the text if there were no HTML elements. + if( lastIndex < html.length ) { + var text = html.substring( lastIndex ); + + // Push TextNodes and EntityNodes for any text found between tags + if( text ) { + textAndEntityNodes = this.parseTextAndEntityNodes( text ); + nodes.push.apply( nodes, textAndEntityNodes ); + } + } + + return nodes; + }, + + + /** + * Parses text and HTML entity nodes from a given string. The input string should not have any HTML tags (elements) + * within it. + * + * @private + * @param {String} text The text to parse. + * @return {Autolinker.htmlParser.HtmlNode[]} An array of HtmlNodes to represent the + * {@link Autolinker.htmlParser.TextNode TextNodes} and {@link Autolinker.htmlParser.EntityNode EntityNodes} found. + */ + parseTextAndEntityNodes : function( text ) { + var nodes = [], + textAndEntityTokens = Autolinker.Util.splitAndCapture( text, this.htmlCharacterEntitiesRegex ); // split at HTML entities, but include the HTML entities in the results array + + // Every even numbered token is a TextNode, and every odd numbered token is an EntityNode + // For example: an input `text` of "Test "this" today" would turn into the + // `textAndEntityTokens`: [ 'Test ', '"', 'this', '"', ' today' ] + for( var i = 0, len = textAndEntityTokens.length; i < len; i += 2 ) { + var textToken = textAndEntityTokens[ i ], + entityToken = textAndEntityTokens[ i + 1 ]; + + if( textToken ) nodes.push( this.createTextNode( textToken ) ); + if( entityToken ) nodes.push( this.createEntityNode( entityToken ) ); + } + return nodes; + }, + + + /** + * Factory method to create an {@link Autolinker.htmlParser.ElementNode ElementNode}. + * + * @private + * @param {String} tagText The full text of the tag (element) that was matched, including its attributes. + * @param {String} tagName The name of the tag. Ex: An <img> tag would be passed to this method as "img". + * @param {Boolean} isClosingTag `true` if it's a closing tag, false otherwise. + * @return {Autolinker.htmlParser.ElementNode} + */ + createElementNode : function( tagText, tagName, isClosingTag ) { + return new Autolinker.htmlParser.ElementNode( { + text : tagText, + tagName : tagName.toLowerCase(), + closing : isClosingTag + } ); + }, + + + /** + * Factory method to create a {@link Autolinker.htmlParser.EntityNode EntityNode}. + * + * @private + * @param {String} text The text that was matched for the HTML entity (such as '&nbsp;'). + * @return {Autolinker.htmlParser.EntityNode} + */ + createEntityNode : function( text ) { + return new Autolinker.htmlParser.EntityNode( { text: text } ); + }, + + + /** + * Factory method to create a {@link Autolinker.htmlParser.TextNode TextNode}. + * + * @private + * @param {String} text The text that was matched. + * @return {Autolinker.htmlParser.TextNode} + */ + createTextNode : function( text ) { + return new Autolinker.htmlParser.TextNode( { text: text } ); + } + + } ); + /*global Autolinker */ + /** + * @abstract + * @class Autolinker.htmlParser.HtmlNode + * + * Represents an HTML node found in an input string. An HTML node is one of the following: + * + * 1. An {@link Autolinker.htmlParser.ElementNode ElementNode}, which represents HTML tags. + * 2. A {@link Autolinker.htmlParser.TextNode TextNode}, which represents text outside or within HTML tags. + * 3. A {@link Autolinker.htmlParser.EntityNode EntityNode}, which represents one of the known HTML + * entities that Autolinker looks for. This includes common ones such as &quot; and &nbsp; + */ + Autolinker.htmlParser.HtmlNode = Autolinker.Util.extend( Object, { + + /** + * @cfg {String} text (required) + * + * The original text that was matched for the HtmlNode. + * + * - In the case of an {@link Autolinker.htmlParser.ElementNode ElementNode}, this will be the tag's + * text. + * - In the case of a {@link Autolinker.htmlParser.TextNode TextNode}, this will be the text itself. + * - In the case of a {@link Autolinker.htmlParser.EntityNode EntityNode}, this will be the text of + * the HTML entity. + */ + text : "", + + + /** + * @constructor + * @param {Object} cfg The configuration properties for the Match instance, specified in an Object (map). + */ + constructor : function( cfg ) { + Autolinker.Util.assign( this, cfg ); + }, + + + /** + * Returns a string name for the type of node that this class represents. + * + * @abstract + * @return {String} + */ + getType : Autolinker.Util.abstractMethod, + + + /** + * Retrieves the {@link #text} for the HtmlNode. + * + * @return {String} + */ + getText : function() { + return this.text; + } + + } ); + /*global Autolinker */ + /** + * @class Autolinker.htmlParser.ElementNode + * @extends Autolinker.htmlParser.HtmlNode + * + * Represents an HTML element node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. + * + * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more details. + */ + Autolinker.htmlParser.ElementNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { + + /** + * @cfg {String} tagName (required) + * + * The name of the tag that was matched. + */ + tagName : '', + + /** + * @cfg {Boolean} closing (required) + * + * `true` if the element (tag) is a closing tag, `false` if its an opening tag. + */ + closing : false, + + + /** + * Returns a string name for the type of node that this class represents. + * + * @return {String} + */ + getType : function() { + return 'element'; + }, + + + /** + * Returns the HTML element's (tag's) name. Ex: for an <img> tag, returns "img". + * + * @return {String} + */ + getTagName : function() { + return this.tagName; + }, + + + /** + * Determines if the HTML element (tag) is a closing tag. Ex: <div> returns + * `false`, while </div> returns `true`. + * + * @return {Boolean} + */ + isClosing : function() { + return this.closing; + } + + } ); + /*global Autolinker */ + /** + * @class Autolinker.htmlParser.EntityNode + * @extends Autolinker.htmlParser.HtmlNode + * + * Represents a known HTML entity node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. + * Ex: '&nbsp;', or '&#160;' (which will be retrievable from the {@link #getText} method. + * + * Note that this class will only be returned from the HtmlParser for the set of checked HTML entity nodes + * defined by the {@link Autolinker.htmlParser.HtmlParser#htmlCharacterEntitiesRegex}. + * + * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more details. + */ + Autolinker.htmlParser.EntityNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { + + /** + * Returns a string name for the type of node that this class represents. + * + * @return {String} + */ + getType : function() { + return 'entity'; + } + + } ); + /*global Autolinker */ + /** + * @class Autolinker.htmlParser.TextNode + * @extends Autolinker.htmlParser.HtmlNode + * + * Represents a text node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}. + * + * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more details. + */ + Autolinker.htmlParser.TextNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, { + + /** + * Returns a string name for the type of node that this class represents. + * + * @return {String} + */ + getType : function() { + return 'text'; + } + + } ); + /*global Autolinker */ + /** + * @private + * @class Autolinker.matchParser.MatchParser + * @extends Object + * + * Used by Autolinker to parse {@link #urls URLs}, {@link #emails email addresses}, and {@link #twitter Twitter handles}, + * given an input string of text. + * + * The MatchParser is fed a non-HTML string in order to search out URLs, email addresses and Twitter handles. Autolinker + * first uses the {@link HtmlParser} to "walk around" HTML tags, and then the text around the HTML tags is passed into + * the MatchParser in order to find the actual matches. + */ + Autolinker.matchParser.MatchParser = Autolinker.Util.extend( Object, { + + /** + * @cfg {Boolean} urls + * + * `true` if miscellaneous URLs should be automatically linked, `false` if they should not be. + */ + urls : true, + + /** + * @cfg {Boolean} email + * + * `true` if email addresses should be automatically linked, `false` if they should not be. + */ + email : true, + + /** + * @cfg {Boolean} twitter + * + * `true` if Twitter handles ("@example") should be automatically linked, `false` if they should not be. + */ + twitter : true, + + /** + * @cfg {Boolean} stripPrefix + * + * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped from the beginning of URL links' text + * in {@link Autolinker.match.Url URL matches}, `false` otherwise. + * + * TODO: Handle this before a URL Match object is instantiated. + */ + stripPrefix : true, + + + /** + * @private + * @property {RegExp} matcherRegex + * + * The regular expression that matches URLs, email addresses, and Twitter handles. + * + * This regular expression has the following capturing groups: + * + * 1. Group that is used to determine if there is a Twitter handle match (i.e. \@someTwitterUser). Simply check for its + * existence to determine if there is a Twitter handle match. The next couple of capturing groups give information + * about the Twitter handle match. + * 2. The whitespace character before the \@sign in a Twitter handle. This is needed because there are no lookbehinds in + * JS regular expressions, and can be used to reconstruct the original string in a replace(). + * 3. The Twitter handle itself in a Twitter match. If the match is '@someTwitterUser', the handle is 'someTwitterUser'. + * 4. Group that matches an email address. Used to determine if the match is an email address, as well as holding the full + * address. Ex: 'me@my.com' + * 5. Group that matches a URL in the input text. Ex: 'http://google.com', 'www.google.com', or just 'google.com'. + * This also includes a path, url parameters, or hash anchors. Ex: google.com/path/to/file?q1=1&q2=2#myAnchor + * 6. Group that matches a protocol URL (i.e. 'http://google.com'). This is used to match protocol URLs with just a single + * word, like 'http://localhost', where we won't double check that the domain name has at least one '.' in it. + * 7. A protocol-relative ('//') match for the case of a 'www.' prefixed URL. Will be an empty string if it is not a + * protocol-relative match. We need to know the character before the '//' in order to determine if it is a valid match + * or the // was in a string we don't want to auto-link. + * 8. A protocol-relative ('//') match for the case of a known TLD prefixed URL. Will be an empty string if it is not a + * protocol-relative match. See #6 for more info. + */ + matcherRegex : (function() { + var twitterRegex = /(^|[^\w])@(\w{1,15})/, // For matching a twitter handle. Ex: @gregory_jacobs + + emailRegex = /(?:[\-;:&=\+\$,\w\.]+@)/, // something@ for email addresses (a.k.a. local-part) + + protocolRegex = /(?:[A-Za-z][-.+A-Za-z0-9]+:(?![A-Za-z][-.+A-Za-z0-9]+:\/\/)(?!\d+\/?)(?:\/\/)?)/, // match protocol, allow in format "http://" or "mailto:". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match "link:"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex) + wwwRegex = /(?:www\.)/, // starting with 'www.' + domainNameRegex = /[A-Za-z0-9\.\-]*[A-Za-z0-9\-]/, // anything looking at all like a domain, non-unicode domains, not ending in a period + tldRegex = /\.(?:international|construction|contractors|enterprises|photography|productions|foundation|immobilien|industries|management|properties|technology|christmas|community|directory|education|equipment|institute|marketing|solutions|vacations|bargains|boutique|builders|catering|cleaning|clothing|computer|democrat|diamonds|graphics|holdings|lighting|partners|plumbing|supplies|training|ventures|academy|careers|company|cruises|domains|exposed|flights|florist|gallery|guitars|holiday|kitchen|neustar|okinawa|recipes|rentals|reviews|shiksha|singles|support|systems|agency|berlin|camera|center|coffee|condos|dating|estate|events|expert|futbol|kaufen|luxury|maison|monash|museum|nagoya|photos|repair|report|social|supply|tattoo|tienda|travel|viajes|villas|vision|voting|voyage|actor|build|cards|cheap|codes|dance|email|glass|house|mango|ninja|parts|photo|shoes|solar|today|tokyo|tools|watch|works|aero|arpa|asia|best|bike|blue|buzz|camp|club|cool|coop|farm|fish|gift|guru|info|jobs|kiwi|kred|land|limo|link|menu|mobi|moda|name|pics|pink|post|qpon|rich|ruhr|sexy|tips|vote|voto|wang|wien|wiki|zone|bar|bid|biz|cab|cat|ceo|com|edu|gov|int|kim|mil|net|onl|org|pro|pub|red|tel|uno|wed|xxx|xyz|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)\b/, // match our known top level domains (TLDs) + + // Allow optional path, query string, and hash anchor, not ending in the following characters: "?!:,.;" + // http://blog.codinghorror.com/the-problem-with-urls/ + urlSuffixRegex = /[\-A-Za-z0-9+&@#\/%=~_()|'$*\[\]?!:,.;]*[\-A-Za-z0-9+&@#\/%=~_()|'$*\[\]]/; + + return new RegExp( [ + '(', // *** Capturing group $1, which can be used to check for a twitter handle match. Use group $3 for the actual twitter handle though. $2 may be used to reconstruct the original string in a replace() + // *** Capturing group $2, which matches the whitespace character before the '@' sign (needed because of no lookbehinds), and + // *** Capturing group $3, which matches the actual twitter handle + twitterRegex.source, + ')', + + '|', + + '(', // *** Capturing group $4, which is used to determine an email match + emailRegex.source, + domainNameRegex.source, + tldRegex.source, + ')', + + '|', + + '(', // *** Capturing group $5, which is used to match a URL + '(?:', // parens to cover match for protocol (optional), and domain + '(', // *** Capturing group $6, for a protocol-prefixed url (ex: http://google.com) + protocolRegex.source, + domainNameRegex.source, + ')', + + '|', + + '(?:', // non-capturing paren for a 'www.' prefixed url (ex: www.google.com) + '(.?//)?', // *** Capturing group $7 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character + wwwRegex.source, + domainNameRegex.source, + ')', + + '|', + + '(?:', // non-capturing paren for known a TLD url (ex: google.com) + '(.?//)?', // *** Capturing group $8 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character + domainNameRegex.source, + tldRegex.source, + ')', + ')', + + '(?:' + urlSuffixRegex.source + ')?', // match for path, query string, and/or hash anchor - optional + ')' + ].join( "" ), 'gi' ); + } )(), + + /** + * @private + * @property {RegExp} charBeforeProtocolRelMatchRegex + * + * The regular expression used to retrieve the character before a protocol-relative URL match. + * + * This is used in conjunction with the {@link #matcherRegex}, which needs to grab the character before a protocol-relative + * '//' due to the lack of a negative look-behind in JavaScript regular expressions. The character before the match is stripped + * from the URL. + */ + charBeforeProtocolRelMatchRegex : /^(.)?\/\//, + + /** + * @private + * @property {Autolinker.MatchValidator} matchValidator + * + * The MatchValidator object, used to filter out any false positives from the {@link #matcherRegex}. See + * {@link Autolinker.MatchValidator} for details. + */ + + + /** + * @constructor + * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map). + */ + constructor : function( cfg ) { + Autolinker.Util.assign( this, cfg ); + + this.matchValidator = new Autolinker.MatchValidator(); + }, + + + /** + * Parses the input `text` to search for URLs/emails/Twitter handles, and calls the `replaceFn` + * to allow replacements of the matches. Returns the `text` with matches replaced. + * + * @param {String} text The text to search and repace matches in. + * @param {Function} replaceFn The iterator function to handle the replacements. The function takes a + * single argument, a {@link Autolinker.match.Match} object, and should return the text that should + * make the replacement. + * @param {Object} [contextObj=window] The context object ("scope") to run the `replaceFn` in. + * @return {String} + */ + replace : function( text, replaceFn, contextObj ) { + var me = this; // for closure + + return text.replace( this.matcherRegex, function( matchStr, $1, $2, $3, $4, $5, $6, $7, $8 ) { + var matchDescObj = me.processCandidateMatch( matchStr, $1, $2, $3, $4, $5, $6, $7, $8 ); // "match description" object + + // Return out with no changes for match types that are disabled (url, email, twitter), or for matches that are + // invalid (false positives from the matcherRegex, which can't use look-behinds since they are unavailable in JS). + if( !matchDescObj ) { + return matchStr; + + } else { + // Generate replacement text for the match from the `replaceFn` + var replaceStr = replaceFn.call( contextObj, matchDescObj.match ); + return matchDescObj.prefixStr + replaceStr + matchDescObj.suffixStr; + } + } ); + }, + + + /** + * Processes a candidate match from the {@link #matcherRegex}. + * + * Not all matches found by the regex are actual URL/email/Twitter matches, as determined by the {@link #matchValidator}. In + * this case, the method returns `null`. Otherwise, a valid Object with `prefixStr`, `match`, and `suffixStr` is returned. + * + * @private + * @param {String} matchStr The full match that was found by the {@link #matcherRegex}. + * @param {String} twitterMatch The matched text of a Twitter handle, if the match is a Twitter match. + * @param {String} twitterHandlePrefixWhitespaceChar The whitespace char before the @ sign in a Twitter handle match. This + * is needed because of no lookbehinds in JS regexes, and is need to re-include the character for the anchor tag replacement. + * @param {String} twitterHandle The actual Twitter user (i.e the word after the @ sign in a Twitter match). + * @param {String} emailAddressMatch The matched email address for an email address match. + * @param {String} urlMatch The matched URL string for a URL match. + * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to match + * something like 'http://localhost', where we won't double check that the domain name has at least one '.' in it. + * @param {String} wwwProtocolRelativeMatch The '//' for a protocol-relative match from a 'www' url, with the character that + * comes before the '//'. + * @param {String} tldProtocolRelativeMatch The '//' for a protocol-relative match from a TLD (top level domain) match, with + * the character that comes before the '//'. + * + * @return {Object} A "match description object". This will be `null` if the match was invalid, or if a match type is disabled. + * Otherwise, this will be an Object (map) with the following properties: + * @return {String} return.prefixStr The char(s) that should be prepended to the replacement string. These are char(s) that + * were needed to be included from the regex match that were ignored by processing code, and should be re-inserted into + * the replacement stream. + * @return {String} return.suffixStr The char(s) that should be appended to the replacement string. These are char(s) that + * were needed to be included from the regex match that were ignored by processing code, and should be re-inserted into + * the replacement stream. + * @return {Autolinker.match.Match} return.match The Match object that represents the match that was found. + */ + processCandidateMatch : function( + matchStr, twitterMatch, twitterHandlePrefixWhitespaceChar, twitterHandle, + emailAddressMatch, urlMatch, protocolUrlMatch, wwwProtocolRelativeMatch, tldProtocolRelativeMatch + ) { + // Note: The `matchStr` variable wil be fixed up to remove characters that are no longer needed (which will + // be added to `prefixStr` and `suffixStr`). + + var protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch, + match, // Will be an Autolinker.match.Match object + + prefixStr = "", // A string to use to prefix the anchor tag that is created. This is needed for the Twitter handle match + suffixStr = ""; // A string to suffix the anchor tag that is created. This is used if there is a trailing parenthesis that should not be auto-linked. + + + // Return out with `null` for match types that are disabled (url, email, twitter), or for matches that are + // invalid (false positives from the matcherRegex, which can't use look-behinds since they are unavailable in JS). + if( + ( twitterMatch && !this.twitter ) || ( emailAddressMatch && !this.email ) || ( urlMatch && !this.urls ) || + !this.matchValidator.isValidMatch( urlMatch, protocolUrlMatch, protocolRelativeMatch ) + ) { + return null; + } + + // Handle a closing parenthesis at the end of the match, and exclude it if there is not a matching open parenthesis + // in the match itself. + if( this.matchHasUnbalancedClosingParen( matchStr ) ) { + matchStr = matchStr.substr( 0, matchStr.length - 1 ); // remove the trailing ")" + suffixStr = ")"; // this will be added after the generated tag + } + + + if( emailAddressMatch ) { + match = new Autolinker.match.Email( { matchedText: matchStr, email: emailAddressMatch } ); + + } else if( twitterMatch ) { + // fix up the `matchStr` if there was a preceding whitespace char, which was needed to determine the match + // itself (since there are no look-behinds in JS regexes) + if( twitterHandlePrefixWhitespaceChar ) { + prefixStr = twitterHandlePrefixWhitespaceChar; + matchStr = matchStr.slice( 1 ); // remove the prefixed whitespace char from the match + } + match = new Autolinker.match.Twitter( { matchedText: matchStr, twitterHandle: twitterHandle } ); + + } else { // url match + // If it's a protocol-relative '//' match, remove the character before the '//' (which the matcherRegex needed + // to match due to the lack of a negative look-behind in JavaScript regular expressions) + if( protocolRelativeMatch ) { + var charBeforeMatch = protocolRelativeMatch.match( this.charBeforeProtocolRelMatchRegex )[ 1 ] || ""; + + if( charBeforeMatch ) { // fix up the `matchStr` if there was a preceding char before a protocol-relative match, which was needed to determine the match itself (since there are no look-behinds in JS regexes) + prefixStr = charBeforeMatch; + matchStr = matchStr.slice( 1 ); // remove the prefixed char from the match + } + } + + match = new Autolinker.match.Url( { + matchedText : matchStr, + url : matchStr, + protocolUrlMatch : !!protocolUrlMatch, + protocolRelativeMatch : !!protocolRelativeMatch, + stripPrefix : this.stripPrefix + } ); + } + + return { + prefixStr : prefixStr, + suffixStr : suffixStr, + match : match + }; + }, + + + /** + * Determines if a match found has an unmatched closing parenthesis. If so, this parenthesis will be removed + * from the match itself, and appended after the generated anchor tag in {@link #processTextNode}. + * + * A match may have an extra closing parenthesis at the end of the match because the regular expression must include parenthesis + * for URLs such as "wikipedia.com/something_(disambiguation)", which should be auto-linked. + * + * However, an extra parenthesis *will* be included when the URL itself is wrapped in parenthesis, such as in the case of + * "(wikipedia.com/something_(disambiguation))". In this case, the last closing parenthesis should *not* be part of the URL + * itself, and this method will return `true`. + * + * @private + * @param {String} matchStr The full match string from the {@link #matcherRegex}. + * @return {Boolean} `true` if there is an unbalanced closing parenthesis at the end of the `matchStr`, `false` otherwise. + */ + matchHasUnbalancedClosingParen : function( matchStr ) { + var lastChar = matchStr.charAt( matchStr.length - 1 ); + + if( lastChar === ')' ) { + var openParensMatch = matchStr.match( /\(/g ), + closeParensMatch = matchStr.match( /\)/g ), + numOpenParens = ( openParensMatch && openParensMatch.length ) || 0, + numCloseParens = ( closeParensMatch && closeParensMatch.length ) || 0; + + if( numOpenParens < numCloseParens ) { + return true; + } + } + + return false; + } + + } ); + /*global Autolinker */ + /*jshint scripturl:true */ + /** + * @private + * @class Autolinker.MatchValidator + * @extends Object + * + * Used by Autolinker to filter out false positives from the {@link Autolinker#matcherRegex}. + * + * Due to the limitations of regular expressions (including the missing feature of look-behinds in JS regular expressions), + * we cannot always determine the validity of a given match. This class applies a bit of additional logic to filter out any + * false positives that have been matched by the {@link Autolinker#matcherRegex}. + */ + Autolinker.MatchValidator = Autolinker.Util.extend( Object, { + + /** + * @private + * @property {RegExp} invalidProtocolRelMatchRegex + * + * The regular expression used to check a potential protocol-relative URL match, coming from the + * {@link Autolinker#matcherRegex}. A protocol-relative URL is, for example, "//yahoo.com" + * + * This regular expression checks to see if there is a word character before the '//' match in order to determine if + * we should actually autolink a protocol-relative URL. This is needed because there is no negative look-behind in + * JavaScript regular expressions. + * + * For instance, we want to autolink something like "Go to: //google.com", but we don't want to autolink something + * like "abc//google.com" + */ + invalidProtocolRelMatchRegex : /^[\w]\/\//, + + /** + * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://' + * + * @private + * @property {RegExp} hasFullProtocolRegex + */ + hasFullProtocolRegex : /^[A-Za-z][-.+A-Za-z0-9]+:\/\//, + + /** + * Regex to find the URI scheme, such as 'mailto:'. + * + * This is used to filter out 'javascript:' and 'vbscript:' schemes. + * + * @private + * @property {RegExp} uriSchemeRegex + */ + uriSchemeRegex : /^[A-Za-z][-.+A-Za-z0-9]+:/, + + /** + * Regex to determine if at least one word char exists after the protocol (i.e. after the ':') + * + * @private + * @property {RegExp} hasWordCharAfterProtocolRegex + */ + hasWordCharAfterProtocolRegex : /:[^\s]*?[A-Za-z]/, + + + /** + * Determines if a given match found by {@link Autolinker#processTextNode} is valid. Will return `false` for: + * + * 1) URL matches which do not have at least have one period ('.') in the domain name (effectively skipping over + * matches like "abc:def"). However, URL matches with a protocol will be allowed (ex: 'http://localhost') + * 2) URL matches which do not have at least one word character in the domain name (effectively skipping over + * matches like "git:1.0"). + * 3) A protocol-relative url match (a URL beginning with '//') whose previous character is a word character + * (effectively skipping over strings like "abc//google.com") + * + * Otherwise, returns `true`. + * + * @param {String} urlMatch The matched URL, if there was one. Will be an empty string if the match is not a URL match. + * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to match + * something like 'http://localhost', where we won't double check that the domain name has at least one '.' in it. + * @param {String} protocolRelativeMatch The protocol-relative string for a URL match (i.e. '//'), possibly with a preceding + * character (ex, a space, such as: ' //', or a letter, such as: 'a//'). The match is invalid if there is a word character + * preceding the '//'. + * @return {Boolean} `true` if the match given is valid and should be processed, or `false` if the match is invalid and/or + * should just not be processed. + */ + isValidMatch : function( urlMatch, protocolUrlMatch, protocolRelativeMatch ) { + if( + ( protocolUrlMatch && !this.isValidUriScheme( protocolUrlMatch ) ) || + this.urlMatchDoesNotHaveProtocolOrDot( urlMatch, protocolUrlMatch ) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost') + this.urlMatchDoesNotHaveAtLeastOneWordChar( urlMatch, protocolUrlMatch ) || // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like "git:1.0" + this.isInvalidProtocolRelativeMatch( protocolRelativeMatch ) // A protocol-relative match which has a word character in front of it (so we can skip something like "abc//google.com") + ) { + return false; + } + + return true; + }, + + + /** + * Determines if the URI scheme is a valid scheme to be autolinked. Returns `false` if the scheme is + * 'javascript:' or 'vbscript:' + * + * @private + * @param {String} uriSchemeMatch The match URL string for a full URI scheme match. Ex: 'http://yahoo.com' + * or 'mailto:a@a.com'. + * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise. + */ + isValidUriScheme : function( uriSchemeMatch ) { + var uriScheme = uriSchemeMatch.match( this.uriSchemeRegex )[ 0 ].toLowerCase(); + + return ( uriScheme !== 'javascript:' && uriScheme !== 'vbscript:' ); + }, + + + /** + * Determines if a URL match does not have either: + * + * a) a full protocol (i.e. 'http://'), or + * b) at least one dot ('.') in the domain name (for a non-full-protocol match). + * + * Either situation is considered an invalid URL (ex: 'git:d' does not have either the '://' part, or at least one dot + * in the domain name. If the match was 'git:abc.com', we would consider this valid.) + * + * @private + * @param {String} urlMatch The matched URL, if there was one. Will be an empty string if the match is not a URL match. + * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to match + * something like 'http://localhost', where we won't double check that the domain name has at least one '.' in it. + * @return {Boolean} `true` if the URL match does not have a full protocol, or at least one dot ('.') in a non-full-protocol + * match. + */ + urlMatchDoesNotHaveProtocolOrDot : function( urlMatch, protocolUrlMatch ) { + return ( !!urlMatch && ( !protocolUrlMatch || !this.hasFullProtocolRegex.test( protocolUrlMatch ) ) && urlMatch.indexOf( '.' ) === -1 ); + }, + + + /** + * Determines if a URL match does not have at least one word character after the protocol (i.e. in the domain name). + * + * At least one letter character must exist in the domain name after a protocol match. Ex: skip over something + * like "git:1.0" + * + * @private + * @param {String} urlMatch The matched URL, if there was one. Will be an empty string if the match is not a URL match. + * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to + * know whether or not we have a protocol in the URL string, in order to check for a word character after the protocol + * separator (':'). + * @return {Boolean} `true` if the URL match does not have at least one word character in it after the protocol, `false` + * otherwise. + */ + urlMatchDoesNotHaveAtLeastOneWordChar : function( urlMatch, protocolUrlMatch ) { + if( urlMatch && protocolUrlMatch ) { + return !this.hasWordCharAfterProtocolRegex.test( urlMatch ); + } else { + return false; + } + }, + + + /** + * Determines if a protocol-relative match is an invalid one. This method returns `true` if there is a `protocolRelativeMatch`, + * and that match contains a word character before the '//' (i.e. it must contain whitespace or nothing before the '//' in + * order to be considered valid). + * + * @private + * @param {String} protocolRelativeMatch The protocol-relative string for a URL match (i.e. '//'), possibly with a preceding + * character (ex, a space, such as: ' //', or a letter, such as: 'a//'). The match is invalid if there is a word character + * preceding the '//'. + * @return {Boolean} `true` if it is an invalid protocol-relative match, `false` otherwise. + */ + isInvalidProtocolRelativeMatch : function( protocolRelativeMatch ) { + return ( !!protocolRelativeMatch && this.invalidProtocolRelMatchRegex.test( protocolRelativeMatch ) ); + } + + } ); + /*global Autolinker */ + /** + * @abstract + * @class Autolinker.match.Match + * + * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a + * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match. + * + * For example: + * + * var input = "..."; // string with URLs, Email Addresses, and Twitter Handles + * + * var linkedText = Autolinker.link( input, { + * replaceFn : function( autolinker, match ) { + * console.log( "href = ", match.getAnchorHref() ); + * console.log( "text = ", match.getAnchorText() ); + * + * switch( match.getType() ) { + * case 'url' : + * console.log( "url: ", match.getUrl() ); + * + * case 'email' : + * console.log( "email: ", match.getEmail() ); + * + * case 'twitter' : + * console.log( "twitter: ", match.getTwitterHandle() ); + * } + * } + * } ); + * + * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}. + */ + Autolinker.match.Match = Autolinker.Util.extend( Object, { + + /** + * @cfg {String} matchedText (required) + * + * The original text that was matched. + */ + + + /** + * @constructor + * @param {Object} cfg The configuration properties for the Match instance, specified in an Object (map). + */ + constructor : function( cfg ) { + Autolinker.Util.assign( this, cfg ); + }, + + + /** + * Returns a string name for the type of match that this class represents. + * + * @abstract + * @return {String} + */ + getType : Autolinker.Util.abstractMethod, + + + /** + * Returns the original text that was matched. + * + * @return {String} + */ + getMatchedText : function() { + return this.matchedText; + }, + + + /** + * Returns the anchor href that should be generated for the match. + * + * @abstract + * @return {String} + */ + getAnchorHref : Autolinker.Util.abstractMethod, + + + /** + * Returns the anchor text that should be generated for the match. + * + * @abstract + * @return {String} + */ + getAnchorText : Autolinker.Util.abstractMethod + + } ); + /*global Autolinker */ + /** + * @class Autolinker.match.Email + * @extends Autolinker.match.Match + * + * Represents a Email match found in an input string which should be Autolinked. + * + * See this class's superclass ({@link Autolinker.match.Match}) for more details. + */ + Autolinker.match.Email = Autolinker.Util.extend( Autolinker.match.Match, { + + /** + * @cfg {String} email (required) + * + * The email address that was matched. + */ + + + /** + * Returns a string name for the type of match that this class represents. + * + * @return {String} + */ + getType : function() { + return 'email'; + }, + + + /** + * Returns the email address that was matched. + * + * @return {String} + */ + getEmail : function() { + return this.email; + }, + + + /** + * Returns the anchor href that should be generated for the match. + * + * @return {String} + */ + getAnchorHref : function() { + return 'mailto:' + this.email; + }, + + + /** + * Returns the anchor text that should be generated for the match. + * + * @return {String} + */ + getAnchorText : function() { + return this.email; + } + + } ); + /*global Autolinker */ + /** + * @class Autolinker.match.Twitter + * @extends Autolinker.match.Match + * + * Represents a Twitter match found in an input string which should be Autolinked. + * + * See this class's superclass ({@link Autolinker.match.Match}) for more details. + */ + Autolinker.match.Twitter = Autolinker.Util.extend( Autolinker.match.Match, { + + /** + * @cfg {String} twitterHandle (required) + * + * The Twitter handle that was matched. + */ + + + /** + * Returns the type of match that this class represents. + * + * @return {String} + */ + getType : function() { + return 'twitter'; + }, + + + /** + * Returns a string name for the type of match that this class represents. + * + * @return {String} + */ + getTwitterHandle : function() { + return this.twitterHandle; + }, + + + /** + * Returns the anchor href that should be generated for the match. + * + * @return {String} + */ + getAnchorHref : function() { + return 'https://twitter.com/' + this.twitterHandle; + }, + + + /** + * Returns the anchor text that should be generated for the match. + * + * @return {String} + */ + getAnchorText : function() { + return '@' + this.twitterHandle; + } + + } ); + /*global Autolinker */ + /** + * @class Autolinker.match.Url + * @extends Autolinker.match.Match + * + * Represents a Url match found in an input string which should be Autolinked. + * + * See this class's superclass ({@link Autolinker.match.Match}) for more details. + */ + Autolinker.match.Url = Autolinker.Util.extend( Autolinker.match.Match, { + + /** + * @cfg {String} url (required) + * + * The url that was matched. + */ + + /** + * @cfg {Boolean} protocolUrlMatch (required) + * + * `true` if the URL is a match which already has a protocol (i.e. 'http://'), `false` if the match was from a 'www' or + * known TLD match. + */ + + /** + * @cfg {Boolean} protocolRelativeMatch (required) + * + * `true` if the URL is a protocol-relative match. A protocol-relative match is a URL that starts with '//', + * and will be either http:// or https:// based on the protocol that the site is loaded under. + */ + + /** + * @cfg {Boolean} stripPrefix (required) + * @inheritdoc Autolinker#stripPrefix + */ + + + /** + * @private + * @property {RegExp} urlPrefixRegex + * + * A regular expression used to remove the 'http://' or 'https://' and/or the 'www.' from URLs. + */ + urlPrefixRegex: /^(https?:\/\/)?(www\.)?/i, + + /** + * @private + * @property {RegExp} protocolRelativeRegex + * + * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes + * of {@link #getAnchorText}. A protocol-relative URL is, for example, "//yahoo.com" + */ + protocolRelativeRegex : /^\/\//, + + /** + * @private + * @property {Boolean} protocolPrepended + * + * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the + * {@link #url} did not have a protocol) + */ + protocolPrepended : false, + + + /** + * Returns a string name for the type of match that this class represents. + * + * @return {String} + */ + getType : function() { + return 'url'; + }, + + + /** + * Returns the url that was matched, assuming the protocol to be 'http://' if the original + * match was missing a protocol. + * + * @return {String} + */ + getUrl : function() { + var url = this.url; + + // if the url string doesn't begin with a protocol, assume 'http://' + if( !this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended ) { + url = this.url = 'http://' + url; + + this.protocolPrepended = true; + } + + return url; + }, + + + /** + * Returns the anchor href that should be generated for the match. + * + * @return {String} + */ + getAnchorHref : function() { + var url = this.getUrl(); + + return url.replace( /&/g, '&' ); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html + }, + + + /** + * Returns the anchor text that should be generated for the match. + * + * @return {String} + */ + getAnchorText : function() { + var anchorText = this.getUrl(); + + if( this.protocolRelativeMatch ) { + // Strip off any protocol-relative '//' from the anchor text + anchorText = this.stripProtocolRelativePrefix( anchorText ); + } + if( this.stripPrefix ) { + anchorText = this.stripUrlPrefix( anchorText ); + } + anchorText = this.removeTrailingSlash( anchorText ); // remove trailing slash, if there is one + + return anchorText; + }, + + + // --------------------------------------- + + // Utility Functionality + + /** + * Strips the URL prefix (such as "http://" or "https://") from the given text. + * + * @private + * @param {String} text The text of the anchor that is being generated, for which to strip off the + * url prefix (such as stripping off "http://") + * @return {String} The `anchorText`, with the prefix stripped. + */ + stripUrlPrefix : function( text ) { + return text.replace( this.urlPrefixRegex, '' ); + }, + + + /** + * Strips any protocol-relative '//' from the anchor text. + * + * @private + * @param {String} text The text of the anchor that is being generated, for which to strip off the + * protocol-relative prefix (such as stripping off "//") + * @return {String} The `anchorText`, with the protocol-relative prefix stripped. + */ + stripProtocolRelativePrefix : function( text ) { + return text.replace( this.protocolRelativeRegex, '' ); + }, + + + /** + * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed. + * + * @private + * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing + * slash ('/') that may exist. + * @return {String} The `anchorText`, with the trailing slash removed. + */ + removeTrailingSlash : function( anchorText ) { + if( anchorText.charAt( anchorText.length - 1 ) === '/' ) { + anchorText = anchorText.slice( 0, -1 ); + } + return anchorText; + } + + } ); + return Autolinker; + + })); + }); + + var LINK_SCAN_RE = /www|@|\:\/\//; + + + function isLinkOpen(str) { + return /^\s]/i.test(str); + } + function isLinkClose(str) { + return /^<\/a\s*>/i.test(str); + } + + // Stupid fabric to avoid singletons, for thread safety. + // Required for engines like Nashorn. + // + function createLinkifier() { + var links = []; + var autolinker = new Autolinker({ + stripPrefix: false, + url: true, + email: true, + twitter: false, + replaceFn: function (linker, match) { + // Only collect matched strings but don't change anything. + switch (match.getType()) { + /*eslint default-case:0*/ + case 'url': + links.push({ + text: match.matchedText, + url: match.getUrl() + }); + break; + case 'email': + links.push({ + text: match.matchedText, + // normalize email protocol + url: 'mailto:' + match.getEmail().replace(/^mailto:/i, '') + }); + break; + } + return false; + } + }); + + return { + links: links, + autolinker: autolinker + }; + } + + + var linkify = function linkify(state) { + var i, j, l, tokens, token, text, nodes, ln, pos, level, htmlLinkLevel, + blockTokens = state.tokens, + linkifier = null, links, autolinker; + + if (!state.options.linkify) { return; } + + for (j = 0, l = blockTokens.length; j < l; j++) { + if (blockTokens[j].type !== 'inline') { continue; } + tokens = blockTokens[j].children; + + htmlLinkLevel = 0; + + // We scan from the end, to keep position when new tags added. + // Use reversed logic in links start/end match + for (i = tokens.length - 1; i >= 0; i--) { + token = tokens[i]; + + // Skip content of markdown links + if (token.type === 'link_close') { + i--; + while (tokens[i].level !== token.level && tokens[i].type !== 'link_open') { + i--; + } + continue; + } + + // Skip content of html tag links + if (token.type === 'htmltag') { + if (isLinkOpen(token.content) && htmlLinkLevel > 0) { + htmlLinkLevel--; + } + if (isLinkClose(token.content)) { + htmlLinkLevel++; + } + } + if (htmlLinkLevel > 0) { continue; } + + if (token.type === 'text' && LINK_SCAN_RE.test(token.content)) { + + // Init linkifier in lazy manner, only if required. + if (!linkifier) { + linkifier = createLinkifier(); + links = linkifier.links; + autolinker = linkifier.autolinker; + } + + text = token.content; + links.length = 0; + autolinker.link(text); + + if (!links.length) { continue; } + + // Now split string to nodes + nodes = []; + level = token.level; + + for (ln = 0; ln < links.length; ln++) { + + if (!state.inline.validateLink(links[ln].url)) { continue; } + + pos = text.indexOf(links[ln].text); + + if (pos) { + level = level; + nodes.push({ + type: 'text', + content: text.slice(0, pos), + level: level + }); + } + nodes.push({ + type: 'link_open', + href: links[ln].url, + title: '', + level: level++ + }); + nodes.push({ + type: 'text', + content: links[ln].text, + level: level + }); + nodes.push({ + type: 'link_close', + level: --level + }); + text = text.slice(pos + links[ln].text.length); + } + if (text.length) { + nodes.push({ + type: 'text', + content: text, + level: level + }); + } + + // replace current node + blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); + } + } + } + }; + + /** + * Local dependencies + */ + + + + /** + * Core parser `rules` + */ + + var _rules = [ + [ 'block', block ], + [ 'abbr', abbr ], + [ 'references', references ], + [ 'inline', inline ], + [ 'footnote_tail', footnote_tail ], + [ 'abbr2', abbr2 ], + [ 'replacements', replacements ], + [ 'smartquotes', smartquotes ], + [ 'linkify', linkify ] + ]; + + /** + * Class for top level (`core`) parser rules + * + * @api private + */ + + function Core() { + this.options = {}; + this.ruler = new ruler(); + for (var i = 0; i < _rules.length; i++) { + this.ruler.push(_rules[i][0], _rules[i][1]); + } + } + + /** + * Process rules with the given `state` + * + * @param {Object} `state` + * @api private + */ + + Core.prototype.process = function (state) { + var i, l, rules; + rules = this.ruler.getRules(''); + for (i = 0, l = rules.length; i < l; i++) { + rules[i](state); + } + }; + + /** + * Expose `Core` + */ + + var parser_core = Core; + + // Parser state class + + + function StateBlock(src, parser, options, env, tokens) { + var ch, s, start, pos, len, indent, indent_found; + + this.src = src; + + // Shortcuts to simplify nested calls + this.parser = parser; + + this.options = options; + + this.env = env; + + // + // Internal state vartiables + // + + this.tokens = tokens; + + this.bMarks = []; // line begin offsets for fast jumps + this.eMarks = []; // line end offsets for fast jumps + this.tShift = []; // indent for each line + + // block parser variables + this.blkIndent = 0; // required block content indent + // (for example, if we are in list) + this.line = 0; // line index in src + this.lineMax = 0; // lines count + this.tight = false; // loose/tight mode for lists + this.parentType = 'root'; // if `list`, block parser stops on two newlines + this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any) + + this.level = 0; + + // renderer + this.result = ''; + + // Create caches + // Generate markers. + s = this.src; + indent = 0; + indent_found = false; + + for (start = pos = indent = 0, len = s.length; pos < len; pos++) { + ch = s.charCodeAt(pos); + + if (!indent_found) { + if (ch === 0x20/* space */) { + indent++; + continue; + } else { + indent_found = true; + } + } + + if (ch === 0x0A || pos === len - 1) { + if (ch !== 0x0A) { pos++; } + this.bMarks.push(start); + this.eMarks.push(pos); + this.tShift.push(indent); + + indent_found = false; + indent = 0; + start = pos + 1; + } + } + + // Push fake entry to simplify cache bounds checks + this.bMarks.push(s.length); + this.eMarks.push(s.length); + this.tShift.push(0); + + this.lineMax = this.bMarks.length - 1; // don't count last fake line + } + + StateBlock.prototype.isEmpty = function isEmpty(line) { + return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; + }; + + StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { + for (var max = this.lineMax; from < max; from++) { + if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { + break; + } + } + return from; + }; + + // Skip spaces from given position. + StateBlock.prototype.skipSpaces = function skipSpaces(pos) { + for (var max = this.src.length; pos < max; pos++) { + if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; } + } + return pos; + }; + + // Skip char codes from given position + StateBlock.prototype.skipChars = function skipChars(pos, code) { + for (var max = this.src.length; pos < max; pos++) { + if (this.src.charCodeAt(pos) !== code) { break; } + } + return pos; + }; + + // Skip char codes reverse from given position - 1 + StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { + if (pos <= min) { return pos; } + + while (pos > min) { + if (code !== this.src.charCodeAt(--pos)) { return pos + 1; } + } + return pos; + }; + + // cut lines range from source. + StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { + var i, first, last, queue, shift, + line = begin; + + if (begin >= end) { + return ''; + } + + // Opt: don't use push queue for single line; + if (line + 1 === end) { + first = this.bMarks[line] + Math.min(this.tShift[line], indent); + last = keepLastLF ? this.eMarks[line] + 1 : this.eMarks[line]; + return this.src.slice(first, last); + } + + queue = new Array(end - begin); + + for (i = 0; line < end; line++, i++) { + shift = this.tShift[line]; + if (shift > indent) { shift = indent; } + if (shift < 0) { shift = 0; } + + first = this.bMarks[line] + shift; + + if (line + 1 < end || keepLastLF) { + // No need for bounds check because we have fake entry on tail. + last = this.eMarks[line] + 1; + } else { + last = this.eMarks[line]; + } + + queue[i] = this.src.slice(first, last); + } + + return queue.join(''); + }; + + + var state_block = StateBlock; + + // Code block (4 spaces padded) + + + var code = function code(state, startLine, endLine/*, silent*/) { + var nextLine, last; + + if (state.tShift[startLine] - state.blkIndent < 4) { return false; } + + last = nextLine = startLine + 1; + + while (nextLine < endLine) { + if (state.isEmpty(nextLine)) { + nextLine++; + continue; + } + if (state.tShift[nextLine] - state.blkIndent >= 4) { + nextLine++; + last = nextLine; + continue; + } + break; + } + + state.line = nextLine; + state.tokens.push({ + type: 'code', + content: state.getLines(startLine, last, 4 + state.blkIndent, true), + block: true, + lines: [ startLine, state.line ], + level: state.level + }); + + return true; + }; + + // fences (``` lang, ~~~ lang) + + + var fences = function fences(state, startLine, endLine, silent) { + var marker, len, params, nextLine, mem, + haveEndMarker = false, + pos = state.bMarks[startLine] + state.tShift[startLine], + max = state.eMarks[startLine]; + + if (pos + 3 > max) { return false; } + + marker = state.src.charCodeAt(pos); + + if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) { + return false; + } + + // scan marker length + mem = pos; + pos = state.skipChars(pos, marker); + + len = pos - mem; + + if (len < 3) { return false; } + + params = state.src.slice(pos, max).trim(); + + if (params.indexOf('`') >= 0) { return false; } + + // Since start is found, we can report success here in validation mode + if (silent) { return true; } + + // search end of block + nextLine = startLine; + + for (;;) { + nextLine++; + if (nextLine >= endLine) { + // unclosed block should be autoclosed by end of document. + // also block seems to be autoclosed by end of parent + break; + } + + pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; + max = state.eMarks[nextLine]; + + if (pos < max && state.tShift[nextLine] < state.blkIndent) { + // non-empty line with negative indent should stop the list: + // - ``` + // test + break; + } + + if (state.src.charCodeAt(pos) !== marker) { continue; } + + if (state.tShift[nextLine] - state.blkIndent >= 4) { + // closing fence should be indented less than 4 spaces + continue; + } + + pos = state.skipChars(pos, marker); + + // closing code fence must be at least as long as the opening one + if (pos - mem < len) { continue; } + + // make sure tail has spaces only + pos = state.skipSpaces(pos); + + if (pos < max) { continue; } + + haveEndMarker = true; + // found! + break; + } + + // If a fence has heading spaces, they should be removed from its inner block + len = state.tShift[startLine]; + + state.line = nextLine + (haveEndMarker ? 1 : 0); + state.tokens.push({ + type: 'fence', + params: params, + content: state.getLines(startLine + 1, nextLine, len, true), + lines: [ startLine, state.line ], + level: state.level + }); + + return true; + }; + + // Block quotes + + + var blockquote = function blockquote(state, startLine, endLine, silent) { + var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines, + terminatorRules, + i, l, terminate, + pos = state.bMarks[startLine] + state.tShift[startLine], + max = state.eMarks[startLine]; + + if (pos > max) { return false; } + + // check the block quote marker + if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; } + + if (state.level >= state.options.maxNesting) { return false; } + + // we know that it's going to be a valid blockquote, + // so no point trying to find the end of it in silent mode + if (silent) { return true; } + + // skip one optional space after '>' + if (state.src.charCodeAt(pos) === 0x20) { pos++; } + + oldIndent = state.blkIndent; + state.blkIndent = 0; + + oldBMarks = [ state.bMarks[startLine] ]; + state.bMarks[startLine] = pos; + + // check if we have an empty blockquote + pos = pos < max ? state.skipSpaces(pos) : pos; + lastLineEmpty = pos >= max; + + oldTShift = [ state.tShift[startLine] ]; + state.tShift[startLine] = pos - state.bMarks[startLine]; + + terminatorRules = state.parser.ruler.getRules('blockquote'); + + // Search the end of the block + // + // Block ends with either: + // 1. an empty line outside: + // ``` + // > test + // + // ``` + // 2. an empty line inside: + // ``` + // > + // test + // ``` + // 3. another tag + // ``` + // > test + // - - - + // ``` + for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max = state.eMarks[nextLine]; + + if (pos >= max) { + // Case 1: line is not inside the blockquote, and this line is empty. + break; + } + + if (state.src.charCodeAt(pos++) === 0x3E/* > */) { + // This line is inside the blockquote. + + // skip one optional space after '>' + if (state.src.charCodeAt(pos) === 0x20) { pos++; } + + oldBMarks.push(state.bMarks[nextLine]); + state.bMarks[nextLine] = pos; + + pos = pos < max ? state.skipSpaces(pos) : pos; + lastLineEmpty = pos >= max; + + oldTShift.push(state.tShift[nextLine]); + state.tShift[nextLine] = pos - state.bMarks[nextLine]; + continue; + } + + // Case 2: line is not inside the blockquote, and the last line was empty. + if (lastLineEmpty) { break; } + + // Case 3: another tag found. + terminate = false; + for (i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { break; } + + oldBMarks.push(state.bMarks[nextLine]); + oldTShift.push(state.tShift[nextLine]); + + // A negative number means that this is a paragraph continuation; + // + // Any negative number will do the job here, but it's better for it + // to be large enough to make any bugs obvious. + state.tShift[nextLine] = -1337; + } + + oldParentType = state.parentType; + state.parentType = 'blockquote'; + state.tokens.push({ + type: 'blockquote_open', + lines: lines = [ startLine, 0 ], + level: state.level++ + }); + state.parser.tokenize(state, startLine, nextLine); + state.tokens.push({ + type: 'blockquote_close', + level: --state.level + }); + state.parentType = oldParentType; + lines[1] = state.line; + + // Restore original tShift; this might not be necessary since the parser + // has already been here, but just to make sure we can do that. + for (i = 0; i < oldTShift.length; i++) { + state.bMarks[i + startLine] = oldBMarks[i]; + state.tShift[i + startLine] = oldTShift[i]; + } + state.blkIndent = oldIndent; + + return true; + }; + + // Horizontal rule + + + var hr = function hr(state, startLine, endLine, silent) { + var marker, cnt, ch, + pos = state.bMarks[startLine], + max = state.eMarks[startLine]; + + pos += state.tShift[startLine]; + + if (pos > max) { return false; } + + marker = state.src.charCodeAt(pos++); + + // Check hr marker + if (marker !== 0x2A/* * */ && + marker !== 0x2D/* - */ && + marker !== 0x5F/* _ */) { + return false; + } + + // markers can be mixed with spaces, but there should be at least 3 one + + cnt = 1; + while (pos < max) { + ch = state.src.charCodeAt(pos++); + if (ch !== marker && ch !== 0x20/* space */) { return false; } + if (ch === marker) { cnt++; } + } + + if (cnt < 3) { return false; } + + if (silent) { return true; } + + state.line = startLine + 1; + state.tokens.push({ + type: 'hr', + lines: [ startLine, state.line ], + level: state.level + }); + + return true; + }; + + // Lists + + + // Search `[-+*][\n ]`, returns next pos arter marker on success + // or -1 on fail. + function skipBulletListMarker(state, startLine) { + var marker, pos, max; + + pos = state.bMarks[startLine] + state.tShift[startLine]; + max = state.eMarks[startLine]; + + if (pos >= max) { return -1; } + + marker = state.src.charCodeAt(pos++); + // Check bullet + if (marker !== 0x2A/* * */ && + marker !== 0x2D/* - */ && + marker !== 0x2B/* + */) { + return -1; + } + + if (pos < max && state.src.charCodeAt(pos) !== 0x20) { + // " 1.test " - is not a list item + return -1; + } + + return pos; + } + + // Search `\d+[.)][\n ]`, returns next pos arter marker on success + // or -1 on fail. + function skipOrderedListMarker(state, startLine) { + var ch, + pos = state.bMarks[startLine] + state.tShift[startLine], + max = state.eMarks[startLine]; + + if (pos + 1 >= max) { return -1; } + + ch = state.src.charCodeAt(pos++); + + if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; } + + for (;;) { + // EOL -> fail + if (pos >= max) { return -1; } + + ch = state.src.charCodeAt(pos++); + + if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) { + continue; + } + + // found valid marker + if (ch === 0x29/* ) */ || ch === 0x2e/* . */) { + break; + } + + return -1; + } + + + if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) { + // " 1.test " - is not a list item + return -1; + } + return pos; + } + + function markTightParagraphs(state, idx) { + var i, l, + level = state.level + 2; + + for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { + if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { + state.tokens[i + 2].tight = true; + state.tokens[i].tight = true; + i += 2; + } + } + } + + + var list = function list(state, startLine, endLine, silent) { + var nextLine, + indent, + oldTShift, + oldIndent, + oldTight, + oldParentType, + start, + posAfterMarker, + max, + indentAfterMarker, + markerValue, + markerCharCode, + isOrdered, + contentStart, + listTokIdx, + prevEmptyEnd, + listLines, + itemLines, + tight = true, + terminatorRules, + i, l, terminate; + + // Detect list type and position after marker + if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { + isOrdered = true; + } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { + isOrdered = false; + } else { + return false; + } + + if (state.level >= state.options.maxNesting) { return false; } + + // We should terminate list on style change. Remember first one to compare. + markerCharCode = state.src.charCodeAt(posAfterMarker - 1); + + // For validation mode we can terminate immediately + if (silent) { return true; } + + // Start list + listTokIdx = state.tokens.length; + + if (isOrdered) { + start = state.bMarks[startLine] + state.tShift[startLine]; + markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); + + state.tokens.push({ + type: 'ordered_list_open', + order: markerValue, + lines: listLines = [ startLine, 0 ], + level: state.level++ + }); + + } else { + state.tokens.push({ + type: 'bullet_list_open', + lines: listLines = [ startLine, 0 ], + level: state.level++ + }); + } + + // + // Iterate list items + // + + nextLine = startLine; + prevEmptyEnd = false; + terminatorRules = state.parser.ruler.getRules('list'); + + while (nextLine < endLine) { + contentStart = state.skipSpaces(posAfterMarker); + max = state.eMarks[nextLine]; + + if (contentStart >= max) { + // trimming space in "- \n 3" case, indent is 1 here + indentAfterMarker = 1; + } else { + indentAfterMarker = contentStart - posAfterMarker; + } + + // If we have more than 4 spaces, the indent is 1 + // (the rest is just indented code block) + if (indentAfterMarker > 4) { indentAfterMarker = 1; } + + // If indent is less than 1, assume that it's one, example: + // "-\n test" + if (indentAfterMarker < 1) { indentAfterMarker = 1; } + + // " - test" + // ^^^^^ - calculating total length of this thing + indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker; + + // Run subparser & write tokens + state.tokens.push({ + type: 'list_item_open', + lines: itemLines = [ startLine, 0 ], + level: state.level++ + }); + + oldIndent = state.blkIndent; + oldTight = state.tight; + oldTShift = state.tShift[startLine]; + oldParentType = state.parentType; + state.tShift[startLine] = contentStart - state.bMarks[startLine]; + state.blkIndent = indent; + state.tight = true; + state.parentType = 'list'; + + state.parser.tokenize(state, startLine, endLine, true); + + // If any of list item is tight, mark list as tight + if (!state.tight || prevEmptyEnd) { + tight = false; + } + // Item become loose if finish with empty line, + // but we should filter last element, because it means list finish + prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1); + + state.blkIndent = oldIndent; + state.tShift[startLine] = oldTShift; + state.tight = oldTight; + state.parentType = oldParentType; + + state.tokens.push({ + type: 'list_item_close', + level: --state.level + }); + + nextLine = startLine = state.line; + itemLines[1] = nextLine; + contentStart = state.bMarks[startLine]; + + if (nextLine >= endLine) { break; } + + if (state.isEmpty(nextLine)) { + break; + } + + // + // Try to check if list is terminated or continued. + // + if (state.tShift[nextLine] < state.blkIndent) { break; } + + // fail if terminating block found + terminate = false; + for (i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { break; } + + // fail if list has another type + if (isOrdered) { + posAfterMarker = skipOrderedListMarker(state, nextLine); + if (posAfterMarker < 0) { break; } + } else { + posAfterMarker = skipBulletListMarker(state, nextLine); + if (posAfterMarker < 0) { break; } + } + + if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; } + } + + // Finilize list + state.tokens.push({ + type: isOrdered ? 'ordered_list_close' : 'bullet_list_close', + level: --state.level + }); + listLines[1] = nextLine; + + state.line = nextLine; + + // mark paragraphs tight if needed + if (tight) { + markTightParagraphs(state, listTokIdx); + } + + return true; + }; + + // Process footnote reference list + + + var footnote = function footnote(state, startLine, endLine, silent) { + var oldBMark, oldTShift, oldParentType, pos, label, + start = state.bMarks[startLine] + state.tShift[startLine], + max = state.eMarks[startLine]; + + // line should be at least 5 chars - "[^x]:" + if (start + 4 > max) { return false; } + + if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } + if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + for (pos = start + 2; pos < max; pos++) { + if (state.src.charCodeAt(pos) === 0x20) { return false; } + if (state.src.charCodeAt(pos) === 0x5D /* ] */) { + break; + } + } + + if (pos === start + 2) { return false; } // no empty footnote labels + if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; } + if (silent) { return true; } + pos++; + + if (!state.env.footnotes) { state.env.footnotes = {}; } + if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; } + label = state.src.slice(start + 2, pos - 2); + state.env.footnotes.refs[':' + label] = -1; + + state.tokens.push({ + type: 'footnote_reference_open', + label: label, + level: state.level++ + }); + + oldBMark = state.bMarks[startLine]; + oldTShift = state.tShift[startLine]; + oldParentType = state.parentType; + state.tShift[startLine] = state.skipSpaces(pos) - pos; + state.bMarks[startLine] = pos; + state.blkIndent += 4; + state.parentType = 'footnote'; + + if (state.tShift[startLine] < state.blkIndent) { + state.tShift[startLine] += state.blkIndent; + state.bMarks[startLine] -= state.blkIndent; + } + + state.parser.tokenize(state, startLine, endLine, true); + + state.parentType = oldParentType; + state.blkIndent -= 4; + state.tShift[startLine] = oldTShift; + state.bMarks[startLine] = oldBMark; + + state.tokens.push({ + type: 'footnote_reference_close', + level: --state.level + }); + + return true; + }; + + // heading (#, ##, ...) + + + var heading = function heading(state, startLine, endLine, silent) { + var ch, level, tmp, + pos = state.bMarks[startLine] + state.tShift[startLine], + max = state.eMarks[startLine]; + + if (pos >= max) { return false; } + + ch = state.src.charCodeAt(pos); + + if (ch !== 0x23/* # */ || pos >= max) { return false; } + + // count heading level + level = 1; + ch = state.src.charCodeAt(++pos); + while (ch === 0x23/* # */ && pos < max && level <= 6) { + level++; + ch = state.src.charCodeAt(++pos); + } + + if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; } + + if (silent) { return true; } + + // Let's cut tails like ' ### ' from the end of string + + max = state.skipCharsBack(max, 0x20, pos); // space + tmp = state.skipCharsBack(max, 0x23, pos); // # + if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) { + max = tmp; + } + + state.line = startLine + 1; + + state.tokens.push({ type: 'heading_open', + hLevel: level, + lines: [ startLine, state.line ], + level: state.level + }); + + // only if header is not empty + if (pos < max) { + state.tokens.push({ + type: 'inline', + content: state.src.slice(pos, max).trim(), + level: state.level + 1, + lines: [ startLine, state.line ], + children: [] + }); + } + state.tokens.push({ type: 'heading_close', hLevel: level, level: state.level }); + + return true; + }; + + // lheading (---, ===) + + + var lheading = function lheading(state, startLine, endLine/*, silent*/) { + var marker, pos, max, + next = startLine + 1; + + if (next >= endLine) { return false; } + if (state.tShift[next] < state.blkIndent) { return false; } + + // Scan next line + + if (state.tShift[next] - state.blkIndent > 3) { return false; } + + pos = state.bMarks[next] + state.tShift[next]; + max = state.eMarks[next]; + + if (pos >= max) { return false; } + + marker = state.src.charCodeAt(pos); + + if (marker !== 0x2D/* - */ && marker !== 0x3D/* = */) { return false; } + + pos = state.skipChars(pos, marker); + + pos = state.skipSpaces(pos); + + if (pos < max) { return false; } + + pos = state.bMarks[startLine] + state.tShift[startLine]; + + state.line = next + 1; + state.tokens.push({ + type: 'heading_open', + hLevel: marker === 0x3D/* = */ ? 1 : 2, + lines: [ startLine, state.line ], + level: state.level + }); + state.tokens.push({ + type: 'inline', + content: state.src.slice(pos, state.eMarks[startLine]).trim(), + level: state.level + 1, + lines: [ startLine, state.line - 1 ], + children: [] + }); + state.tokens.push({ + type: 'heading_close', + hLevel: marker === 0x3D/* = */ ? 1 : 2, + level: state.level + }); + + return true; + }; + + // List of valid html blocks names, accorting to commonmark spec + + var html_blocks = {}; + + [ + 'article', + 'aside', + 'button', + 'blockquote', + 'body', + 'canvas', + 'caption', + 'col', + 'colgroup', + 'dd', + 'div', + 'dl', + 'dt', + 'embed', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'header', + 'hgroup', + 'hr', + 'iframe', + 'li', + 'map', + 'object', + 'ol', + 'output', + 'p', + 'pre', + 'progress', + 'script', + 'section', + 'style', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'tr', + 'thead', + 'ul', + 'video' + ].forEach(function (name) { html_blocks[name] = true; }); + + + var html_blocks_1 = html_blocks; + + var HTML_TAG_OPEN_RE = /^<([a-zA-Z]{1,15})[\s\/>]/; + var HTML_TAG_CLOSE_RE = /^<\/([a-zA-Z]{1,15})[\s>]/; + + function isLetter$1(ch) { + /*eslint no-bitwise:0*/ + var lc = ch | 0x20; // to lower case + return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); + } + + var htmlblock = function htmlblock(state, startLine, endLine, silent) { + var ch, match, nextLine, + pos = state.bMarks[startLine], + max = state.eMarks[startLine], + shift = state.tShift[startLine]; + + pos += shift; + + if (!state.options.html) { return false; } + + if (shift > 3 || pos + 2 >= max) { return false; } + + if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } + + ch = state.src.charCodeAt(pos + 1); + + if (ch === 0x21/* ! */ || ch === 0x3F/* ? */) { + // Directive start / comment start / processing instruction start + if (silent) { return true; } + + } else if (ch === 0x2F/* / */ || isLetter$1(ch)) { + + // Probably start or end of tag + if (ch === 0x2F/* \ */) { + // closing tag + match = state.src.slice(pos, max).match(HTML_TAG_CLOSE_RE); + if (!match) { return false; } + } else { + // opening tag + match = state.src.slice(pos, max).match(HTML_TAG_OPEN_RE); + if (!match) { return false; } + } + // Make sure tag name is valid + if (html_blocks_1[match[1].toLowerCase()] !== true) { return false; } + if (silent) { return true; } + + } else { + return false; + } + + // If we are here - we detected HTML block. + // Let's roll down till empty line (block end). + nextLine = startLine + 1; + while (nextLine < state.lineMax && !state.isEmpty(nextLine)) { + nextLine++; + } + + state.line = nextLine; + state.tokens.push({ + type: 'htmlblock', + level: state.level, + lines: [ startLine, state.line ], + content: state.getLines(startLine, nextLine, 0, true) + }); + + return true; + }; + + // GFM table, non-standard + + + function getLine(state, line) { + var pos = state.bMarks[line] + state.blkIndent, + max = state.eMarks[line]; + + return state.src.substr(pos, max - pos); + } + + var table = function table(state, startLine, endLine, silent) { + var ch, lineText, pos, i, nextLine, rows, cell, + aligns, t, tableLines, tbodyLines; + + // should have at least three lines + if (startLine + 2 > endLine) { return false; } + + nextLine = startLine + 1; + + if (state.tShift[nextLine] < state.blkIndent) { return false; } + + // first character of the second line should be '|' or '-' + + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + if (pos >= state.eMarks[nextLine]) { return false; } + + ch = state.src.charCodeAt(pos); + if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; } + + lineText = getLine(state, startLine + 1); + if (!/^[-:| ]+$/.test(lineText)) { return false; } + + rows = lineText.split('|'); + if (rows <= 2) { return false; } + aligns = []; + for (i = 0; i < rows.length; i++) { + t = rows[i].trim(); + if (!t) { + // allow empty columns before and after table, but not in between columns; + // e.g. allow ` |---| `, disallow ` ---||--- ` + if (i === 0 || i === rows.length - 1) { + continue; + } else { + return false; + } + } + + if (!/^:?-+:?$/.test(t)) { return false; } + if (t.charCodeAt(t.length - 1) === 0x3A/* : */) { + aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right'); + } else if (t.charCodeAt(0) === 0x3A/* : */) { + aligns.push('left'); + } else { + aligns.push(''); + } + } + + lineText = getLine(state, startLine).trim(); + if (lineText.indexOf('|') === -1) { return false; } + rows = lineText.replace(/^\||\|$/g, '').split('|'); + if (aligns.length !== rows.length) { return false; } + if (silent) { return true; } + + state.tokens.push({ + type: 'table_open', + lines: tableLines = [ startLine, 0 ], + level: state.level++ + }); + state.tokens.push({ + type: 'thead_open', + lines: [ startLine, startLine + 1 ], + level: state.level++ + }); + + state.tokens.push({ + type: 'tr_open', + lines: [ startLine, startLine + 1 ], + level: state.level++ + }); + for (i = 0; i < rows.length; i++) { + state.tokens.push({ + type: 'th_open', + align: aligns[i], + lines: [ startLine, startLine + 1 ], + level: state.level++ + }); + state.tokens.push({ + type: 'inline', + content: rows[i].trim(), + lines: [ startLine, startLine + 1 ], + level: state.level, + children: [] + }); + state.tokens.push({ type: 'th_close', level: --state.level }); + } + state.tokens.push({ type: 'tr_close', level: --state.level }); + state.tokens.push({ type: 'thead_close', level: --state.level }); + + state.tokens.push({ + type: 'tbody_open', + lines: tbodyLines = [ startLine + 2, 0 ], + level: state.level++ + }); + + for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { + if (state.tShift[nextLine] < state.blkIndent) { break; } + + lineText = getLine(state, nextLine).trim(); + if (lineText.indexOf('|') === -1) { break; } + rows = lineText.replace(/^\||\|$/g, '').split('|'); + + state.tokens.push({ type: 'tr_open', level: state.level++ }); + for (i = 0; i < rows.length; i++) { + state.tokens.push({ type: 'td_open', align: aligns[i], level: state.level++ }); + // 0x7c === '|' + cell = rows[i].substring( + rows[i].charCodeAt(0) === 0x7c ? 1 : 0, + rows[i].charCodeAt(rows[i].length - 1) === 0x7c ? rows[i].length - 1 : rows[i].length + ).trim(); + state.tokens.push({ + type: 'inline', + content: cell, + level: state.level, + children: [] + }); + state.tokens.push({ type: 'td_close', level: --state.level }); + } + state.tokens.push({ type: 'tr_close', level: --state.level }); + } + state.tokens.push({ type: 'tbody_close', level: --state.level }); + state.tokens.push({ type: 'table_close', level: --state.level }); + + tableLines[1] = tbodyLines[1] = nextLine; + state.line = nextLine; + return true; + }; + + // Definition lists + + + // Search `[:~][\n ]`, returns next pos after marker on success + // or -1 on fail. + function skipMarker(state, line) { + var pos, marker, + start = state.bMarks[line] + state.tShift[line], + max = state.eMarks[line]; + + if (start >= max) { return -1; } + + // Check bullet + marker = state.src.charCodeAt(start++); + if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; } + + pos = state.skipSpaces(start); + + // require space after ":" + if (start === pos) { return -1; } + + // no empty definitions, e.g. " : " + if (pos >= max) { return -1; } + + return pos; + } + + function markTightParagraphs$1(state, idx) { + var i, l, + level = state.level + 2; + + for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { + if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { + state.tokens[i + 2].tight = true; + state.tokens[i].tight = true; + i += 2; + } + } + } + + var deflist = function deflist(state, startLine, endLine, silent) { + var contentStart, + ddLine, + dtLine, + itemLines, + listLines, + listTokIdx, + nextLine, + oldIndent, + oldDDIndent, + oldParentType, + oldTShift, + oldTight, + prevEmptyEnd, + tight; + + if (silent) { + // quirk: validation mode validates a dd block only, not a whole deflist + if (state.ddIndent < 0) { return false; } + return skipMarker(state, startLine) >= 0; + } + + nextLine = startLine + 1; + if (state.isEmpty(nextLine)) { + if (++nextLine > endLine) { return false; } + } + + if (state.tShift[nextLine] < state.blkIndent) { return false; } + contentStart = skipMarker(state, nextLine); + if (contentStart < 0) { return false; } + + if (state.level >= state.options.maxNesting) { return false; } + + // Start list + listTokIdx = state.tokens.length; + + state.tokens.push({ + type: 'dl_open', + lines: listLines = [ startLine, 0 ], + level: state.level++ + }); + + // + // Iterate list items + // + + dtLine = startLine; + ddLine = nextLine; + + // One definition list can contain multiple DTs, + // and one DT can be followed by multiple DDs. + // + // Thus, there is two loops here, and label is + // needed to break out of the second one + // + /*eslint no-labels:0,block-scoped-var:0*/ + OUTER: + for (;;) { + tight = true; + prevEmptyEnd = false; + + state.tokens.push({ + type: 'dt_open', + lines: [ dtLine, dtLine ], + level: state.level++ + }); + state.tokens.push({ + type: 'inline', + content: state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim(), + level: state.level + 1, + lines: [ dtLine, dtLine ], + children: [] + }); + state.tokens.push({ + type: 'dt_close', + level: --state.level + }); + + for (;;) { + state.tokens.push({ + type: 'dd_open', + lines: itemLines = [ nextLine, 0 ], + level: state.level++ + }); + + oldTight = state.tight; + oldDDIndent = state.ddIndent; + oldIndent = state.blkIndent; + oldTShift = state.tShift[ddLine]; + oldParentType = state.parentType; + state.blkIndent = state.ddIndent = state.tShift[ddLine] + 2; + state.tShift[ddLine] = contentStart - state.bMarks[ddLine]; + state.tight = true; + state.parentType = 'deflist'; + + state.parser.tokenize(state, ddLine, endLine, true); + + // If any of list item is tight, mark list as tight + if (!state.tight || prevEmptyEnd) { + tight = false; + } + // Item become loose if finish with empty line, + // but we should filter last element, because it means list finish + prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1); + + state.tShift[ddLine] = oldTShift; + state.tight = oldTight; + state.parentType = oldParentType; + state.blkIndent = oldIndent; + state.ddIndent = oldDDIndent; + + state.tokens.push({ + type: 'dd_close', + level: --state.level + }); + + itemLines[1] = nextLine = state.line; + + if (nextLine >= endLine) { break OUTER; } + + if (state.tShift[nextLine] < state.blkIndent) { break OUTER; } + contentStart = skipMarker(state, nextLine); + if (contentStart < 0) { break; } + + ddLine = nextLine; + + // go to the next loop iteration: + // insert DD tag and repeat checking + } + + if (nextLine >= endLine) { break; } + dtLine = nextLine; + + if (state.isEmpty(dtLine)) { break; } + if (state.tShift[dtLine] < state.blkIndent) { break; } + + ddLine = dtLine + 1; + if (ddLine >= endLine) { break; } + if (state.isEmpty(ddLine)) { ddLine++; } + if (ddLine >= endLine) { break; } + + if (state.tShift[ddLine] < state.blkIndent) { break; } + contentStart = skipMarker(state, ddLine); + if (contentStart < 0) { break; } + + // go to the next loop iteration: + // insert DT and DD tags and repeat checking + } + + // Finilize list + state.tokens.push({ + type: 'dl_close', + level: --state.level + }); + listLines[1] = nextLine; + + state.line = nextLine; + + // mark paragraphs tight if needed + if (tight) { + markTightParagraphs$1(state, listTokIdx); + } + + return true; + }; + + // Paragraph + + + var paragraph = function paragraph(state, startLine/*, endLine*/) { + var endLine, content, terminate, i, l, + nextLine = startLine + 1, + terminatorRules; + + endLine = state.lineMax; + + // jump line-by-line until empty one or EOF + if (nextLine < endLine && !state.isEmpty(nextLine)) { + terminatorRules = state.parser.ruler.getRules('paragraph'); + + for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { + // this would be a code block normally, but after paragraph + // it's considered a lazy continuation regardless of what's there + if (state.tShift[nextLine] - state.blkIndent > 3) { continue; } + + // Some tags can terminate paragraph without empty line. + terminate = false; + for (i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { break; } + } + } + + content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); + + state.line = nextLine; + if (content.length) { + state.tokens.push({ + type: 'paragraph_open', + tight: false, + lines: [ startLine, state.line ], + level: state.level + }); + state.tokens.push({ + type: 'inline', + content: content, + level: state.level + 1, + lines: [ startLine, state.line ], + children: [] + }); + state.tokens.push({ + type: 'paragraph_close', + tight: false, + level: state.level + }); + } + + return true; + }; + + /** + * Local dependencies + */ + + + + + /** + * Parser rules + */ + + var _rules$1 = [ + [ 'code', code ], + [ 'fences', fences, [ 'paragraph', 'blockquote', 'list' ] ], + [ 'blockquote', blockquote, [ 'paragraph', 'blockquote', 'list' ] ], + [ 'hr', hr, [ 'paragraph', 'blockquote', 'list' ] ], + [ 'list', list, [ 'paragraph', 'blockquote' ] ], + [ 'footnote', footnote, [ 'paragraph' ] ], + [ 'heading', heading, [ 'paragraph', 'blockquote' ] ], + [ 'lheading', lheading ], + [ 'htmlblock', htmlblock, [ 'paragraph', 'blockquote' ] ], + [ 'table', table, [ 'paragraph' ] ], + [ 'deflist', deflist, [ 'paragraph' ] ], + [ 'paragraph', paragraph ] + ]; + + /** + * Block Parser class + * + * @api private + */ + + function ParserBlock() { + this.ruler = new ruler(); + for (var i = 0; i < _rules$1.length; i++) { + this.ruler.push(_rules$1[i][0], _rules$1[i][1], { + alt: (_rules$1[i][2] || []).slice() + }); + } + } + + /** + * Generate tokens for the given input range. + * + * @param {Object} `state` Has properties like `src`, `parser`, `options` etc + * @param {Number} `startLine` + * @param {Number} `endLine` + * @api private + */ + + ParserBlock.prototype.tokenize = function (state, startLine, endLine) { + var rules = this.ruler.getRules(''); + var len = rules.length; + var line = startLine; + var hasEmptyLines = false; + var ok, i; + + while (line < endLine) { + state.line = line = state.skipEmptyLines(line); + if (line >= endLine) { + break; + } + + // Termination condition for nested calls. + // Nested calls currently used for blockquotes & lists + if (state.tShift[line] < state.blkIndent) { + break; + } + + // Try all possible rules. + // On success, rule should: + // + // - update `state.line` + // - update `state.tokens` + // - return true + + for (i = 0; i < len; i++) { + ok = rules[i](state, line, endLine, false); + if (ok) { + break; + } + } + + // set state.tight iff we had an empty line before current tag + // i.e. latest empty line should not count + state.tight = !hasEmptyLines; + + // paragraph might "eat" one newline after it in nested lists + if (state.isEmpty(state.line - 1)) { + hasEmptyLines = true; + } + + line = state.line; + + if (line < endLine && state.isEmpty(line)) { + hasEmptyLines = true; + line++; + + // two empty lines should stop the parser in list mode + if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; } + state.line = line; + } + } + }; + + var TABS_SCAN_RE = /[\n\t]/g; + var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g; + var SPACES_RE = /\u00a0/g; + + /** + * Tokenize the given `str`. + * + * @param {String} `str` Source string + * @param {Object} `options` + * @param {Object} `env` + * @param {Array} `outTokens` + * @api private + */ + + ParserBlock.prototype.parse = function (str, options, env, outTokens) { + var state, lineStart = 0, lastTabPos = 0; + if (!str) { return []; } + + // Normalize spaces + str = str.replace(SPACES_RE, ' '); + + // Normalize newlines + str = str.replace(NEWLINES_RE, '\n'); + + // Replace tabs with proper number of spaces (1..4) + if (str.indexOf('\t') >= 0) { + str = str.replace(TABS_SCAN_RE, function (match, offset) { + var result; + if (str.charCodeAt(offset) === 0x0A) { + lineStart = offset + 1; + lastTabPos = 0; + return match; + } + result = ' '.slice((offset - lineStart - lastTabPos) % 4); + lastTabPos = offset - lineStart + 1; + return result; + }); + } + + state = new state_block(str, this, options, env, outTokens); + this.tokenize(state, state.line, state.lineMax); + }; + + /** + * Expose `ParserBlock` + */ + + var parser_block = ParserBlock; + + // Skip text characters for text token, place those to pending buffer + + // Rule to skip pure text + // '{}$%@~+=:' reserved for extentions + + function isTerminatorChar(ch) { + switch (ch) { + case 0x0A/* \n */: + case 0x5C/* \ */: + case 0x60/* ` */: + case 0x2A/* * */: + case 0x5F/* _ */: + case 0x5E/* ^ */: + case 0x5B/* [ */: + case 0x5D/* ] */: + case 0x21/* ! */: + case 0x26/* & */: + case 0x3C/* < */: + case 0x3E/* > */: + case 0x7B/* { */: + case 0x7D/* } */: + case 0x24/* $ */: + case 0x25/* % */: + case 0x40/* @ */: + case 0x7E/* ~ */: + case 0x2B/* + */: + case 0x3D/* = */: + case 0x3A/* : */: + return true; + default: + return false; + } + } + + var text = function text(state, silent) { + var pos = state.pos; + + while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { + pos++; + } + + if (pos === state.pos) { return false; } + + if (!silent) { state.pending += state.src.slice(state.pos, pos); } + + state.pos = pos; + + return true; + }; + + // Proceess '\n' + + var newline = function newline(state, silent) { + var pmax, max, pos = state.pos; + + if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; } + + pmax = state.pending.length - 1; + max = state.posMax; + + // ' \n' -> hardbreak + // Lookup in pending chars is bad practice! Don't copy to other rules! + // Pending string is stored in concat mode, indexed lookups will cause + // convertion to flat mode. + if (!silent) { + if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { + if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { + // Strip out all trailing spaces on this line. + for (var i = pmax - 2; i >= 0; i--) { + if (state.pending.charCodeAt(i) !== 0x20) { + state.pending = state.pending.substring(0, i + 1); + break; + } + } + state.push({ + type: 'hardbreak', + level: state.level + }); + } else { + state.pending = state.pending.slice(0, -1); + state.push({ + type: 'softbreak', + level: state.level + }); + } + + } else { + state.push({ + type: 'softbreak', + level: state.level + }); + } + } + + pos++; + + // skip heading spaces for next line + while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } + + state.pos = pos; + return true; + }; + + // Proceess escaped chars and hardbreaks + + var ESCAPED = []; + + for (var i = 0; i < 256; i++) { ESCAPED.push(0); } + + '\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-' + .split('').forEach(function(ch) { ESCAPED[ch.charCodeAt(0)] = 1; }); + + + var _escape = function escape(state, silent) { + var ch, pos = state.pos, max = state.posMax; + + if (state.src.charCodeAt(pos) !== 0x5C/* \ */) { return false; } + + pos++; + + if (pos < max) { + ch = state.src.charCodeAt(pos); + + if (ch < 256 && ESCAPED[ch] !== 0) { + if (!silent) { state.pending += state.src[pos]; } + state.pos += 2; + return true; + } + + if (ch === 0x0A) { + if (!silent) { + state.push({ + type: 'hardbreak', + level: state.level + }); + } + + pos++; + // skip leading whitespaces from next line + while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; } + + state.pos = pos; + return true; + } + } + + if (!silent) { state.pending += '\\'; } + state.pos++; + return true; + }; + + // Parse backticks + + var backticks = function backticks(state, silent) { + var start, max, marker, matchStart, matchEnd, + pos = state.pos, + ch = state.src.charCodeAt(pos); + + if (ch !== 0x60/* ` */) { return false; } + + start = pos; + pos++; + max = state.posMax; + + while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } + + marker = state.src.slice(start, pos); + + matchStart = matchEnd = pos; + + while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { + matchEnd = matchStart + 1; + + while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } + + if (matchEnd - matchStart === marker.length) { + if (!silent) { + state.push({ + type: 'code', + content: state.src.slice(pos, matchStart) + .replace(/[ \n]+/g, ' ') + .trim(), + block: false, + level: state.level + }); + } + state.pos = matchEnd; + return true; + } + } + + if (!silent) { state.pending += marker; } + state.pos += marker.length; + return true; + }; + + // Process ~~deleted text~~ + + var del = function del(state, silent) { + var found, + pos, + stack, + max = state.posMax, + start = state.pos, + lastChar, + nextChar; + + if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } + if (silent) { return false; } // don't run any pairs in validation mode + if (start + 4 >= max) { return false; } + if (state.src.charCodeAt(start + 1) !== 0x7E/* ~ */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; + nextChar = state.src.charCodeAt(start + 2); + + if (lastChar === 0x7E/* ~ */) { return false; } + if (nextChar === 0x7E/* ~ */) { return false; } + if (nextChar === 0x20 || nextChar === 0x0A) { return false; } + + pos = start + 2; + while (pos < max && state.src.charCodeAt(pos) === 0x7E/* ~ */) { pos++; } + if (pos > start + 3) { + // sequence of 4+ markers taking as literal, same as in a emphasis + state.pos += pos - start; + if (!silent) { state.pending += state.src.slice(start, pos); } + return true; + } + + state.pos = start + 2; + stack = 1; + + while (state.pos + 1 < max) { + if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { + if (state.src.charCodeAt(state.pos + 1) === 0x7E/* ~ */) { + lastChar = state.src.charCodeAt(state.pos - 1); + nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; + if (nextChar !== 0x7E/* ~ */ && lastChar !== 0x7E/* ~ */) { + if (lastChar !== 0x20 && lastChar !== 0x0A) { + // closing '~~' + stack--; + } else if (nextChar !== 0x20 && nextChar !== 0x0A) { + // opening '~~' + stack++; + } // else { + // // standalone ' ~~ ' indented with spaces + // } + if (stack <= 0) { + found = true; + break; + } + } + } + } + + state.parser.skipToken(state); + } + + if (!found) { + // parser failed to find ending tag, so it's not valid emphasis + state.pos = start; + return false; + } + + // found! + state.posMax = state.pos; + state.pos = start + 2; + + if (!silent) { + state.push({ type: 'del_open', level: state.level++ }); + state.parser.tokenize(state); + state.push({ type: 'del_close', level: --state.level }); + } + + state.pos = state.posMax + 2; + state.posMax = max; + return true; + }; + + // Process ++inserted text++ + + var ins = function ins(state, silent) { + var found, + pos, + stack, + max = state.posMax, + start = state.pos, + lastChar, + nextChar; + + if (state.src.charCodeAt(start) !== 0x2B/* + */) { return false; } + if (silent) { return false; } // don't run any pairs in validation mode + if (start + 4 >= max) { return false; } + if (state.src.charCodeAt(start + 1) !== 0x2B/* + */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; + nextChar = state.src.charCodeAt(start + 2); + + if (lastChar === 0x2B/* + */) { return false; } + if (nextChar === 0x2B/* + */) { return false; } + if (nextChar === 0x20 || nextChar === 0x0A) { return false; } + + pos = start + 2; + while (pos < max && state.src.charCodeAt(pos) === 0x2B/* + */) { pos++; } + if (pos !== start + 2) { + // sequence of 3+ markers taking as literal, same as in a emphasis + state.pos += pos - start; + if (!silent) { state.pending += state.src.slice(start, pos); } + return true; + } + + state.pos = start + 2; + stack = 1; + + while (state.pos + 1 < max) { + if (state.src.charCodeAt(state.pos) === 0x2B/* + */) { + if (state.src.charCodeAt(state.pos + 1) === 0x2B/* + */) { + lastChar = state.src.charCodeAt(state.pos - 1); + nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; + if (nextChar !== 0x2B/* + */ && lastChar !== 0x2B/* + */) { + if (lastChar !== 0x20 && lastChar !== 0x0A) { + // closing '++' + stack--; + } else if (nextChar !== 0x20 && nextChar !== 0x0A) { + // opening '++' + stack++; + } // else { + // // standalone ' ++ ' indented with spaces + // } + if (stack <= 0) { + found = true; + break; + } + } + } + } + + state.parser.skipToken(state); + } + + if (!found) { + // parser failed to find ending tag, so it's not valid emphasis + state.pos = start; + return false; + } + + // found! + state.posMax = state.pos; + state.pos = start + 2; + + if (!silent) { + state.push({ type: 'ins_open', level: state.level++ }); + state.parser.tokenize(state); + state.push({ type: 'ins_close', level: --state.level }); + } + + state.pos = state.posMax + 2; + state.posMax = max; + return true; + }; + + // Process ==highlighted text== + + var mark = function del(state, silent) { + var found, + pos, + stack, + max = state.posMax, + start = state.pos, + lastChar, + nextChar; + + if (state.src.charCodeAt(start) !== 0x3D/* = */) { return false; } + if (silent) { return false; } // don't run any pairs in validation mode + if (start + 4 >= max) { return false; } + if (state.src.charCodeAt(start + 1) !== 0x3D/* = */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; + nextChar = state.src.charCodeAt(start + 2); + + if (lastChar === 0x3D/* = */) { return false; } + if (nextChar === 0x3D/* = */) { return false; } + if (nextChar === 0x20 || nextChar === 0x0A) { return false; } + + pos = start + 2; + while (pos < max && state.src.charCodeAt(pos) === 0x3D/* = */) { pos++; } + if (pos !== start + 2) { + // sequence of 3+ markers taking as literal, same as in a emphasis + state.pos += pos - start; + if (!silent) { state.pending += state.src.slice(start, pos); } + return true; + } + + state.pos = start + 2; + stack = 1; + + while (state.pos + 1 < max) { + if (state.src.charCodeAt(state.pos) === 0x3D/* = */) { + if (state.src.charCodeAt(state.pos + 1) === 0x3D/* = */) { + lastChar = state.src.charCodeAt(state.pos - 1); + nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1; + if (nextChar !== 0x3D/* = */ && lastChar !== 0x3D/* = */) { + if (lastChar !== 0x20 && lastChar !== 0x0A) { + // closing '==' + stack--; + } else if (nextChar !== 0x20 && nextChar !== 0x0A) { + // opening '==' + stack++; + } // else { + // // standalone ' == ' indented with spaces + // } + if (stack <= 0) { + found = true; + break; + } + } + } + } + + state.parser.skipToken(state); + } + + if (!found) { + // parser failed to find ending tag, so it's not valid emphasis + state.pos = start; + return false; + } + + // found! + state.posMax = state.pos; + state.pos = start + 2; + + if (!silent) { + state.push({ type: 'mark_open', level: state.level++ }); + state.parser.tokenize(state); + state.push({ type: 'mark_close', level: --state.level }); + } + + state.pos = state.posMax + 2; + state.posMax = max; + return true; + }; + + // Process *this* and _that_ + + + function isAlphaNum(code) { + return (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) || + (code >= 0x41 /* A */ && code <= 0x5A /* Z */) || + (code >= 0x61 /* a */ && code <= 0x7A /* z */); + } + + // parse sequence of emphasis markers, + // "start" should point at a valid marker + function scanDelims(state, start) { + var pos = start, lastChar, nextChar, count, + can_open = true, + can_close = true, + max = state.posMax, + marker = state.src.charCodeAt(start); + + lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1; + + while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; } + if (pos >= max) { can_open = false; } + count = pos - start; + + if (count >= 4) { + // sequence of four or more unescaped markers can't start/end an emphasis + can_open = can_close = false; + } else { + nextChar = pos < max ? state.src.charCodeAt(pos) : -1; + + // check whitespace conditions + if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; } + if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; } + + if (marker === 0x5F /* _ */) { + // check if we aren't inside the word + if (isAlphaNum(lastChar)) { can_open = false; } + if (isAlphaNum(nextChar)) { can_close = false; } + } + } + + return { + can_open: can_open, + can_close: can_close, + delims: count + }; + } + + var emphasis = function emphasis(state, silent) { + var startCount, + count, + found, + oldCount, + newCount, + stack, + res, + max = state.posMax, + start = state.pos, + marker = state.src.charCodeAt(start); + + if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; } + if (silent) { return false; } // don't run any pairs in validation mode + + res = scanDelims(state, start); + startCount = res.delims; + if (!res.can_open) { + state.pos += startCount; + if (!silent) { state.pending += state.src.slice(start, state.pos); } + return true; + } + + if (state.level >= state.options.maxNesting) { return false; } + + state.pos = start + startCount; + stack = [ startCount ]; + + while (state.pos < max) { + if (state.src.charCodeAt(state.pos) === marker) { + res = scanDelims(state, state.pos); + count = res.delims; + if (res.can_close) { + oldCount = stack.pop(); + newCount = count; + + while (oldCount !== newCount) { + if (newCount < oldCount) { + stack.push(oldCount - newCount); + break; + } + + // assert(newCount > oldCount) + newCount -= oldCount; + + if (stack.length === 0) { break; } + state.pos += oldCount; + oldCount = stack.pop(); + } + + if (stack.length === 0) { + startCount = oldCount; + found = true; + break; + } + state.pos += count; + continue; + } + + if (res.can_open) { stack.push(count); } + state.pos += count; + continue; + } + + state.parser.skipToken(state); + } + + if (!found) { + // parser failed to find ending tag, so it's not valid emphasis + state.pos = start; + return false; + } + + // found! + state.posMax = state.pos; + state.pos = start + startCount; + + if (!silent) { + if (startCount === 2 || startCount === 3) { + state.push({ type: 'strong_open', level: state.level++ }); + } + if (startCount === 1 || startCount === 3) { + state.push({ type: 'em_open', level: state.level++ }); + } + + state.parser.tokenize(state); + + if (startCount === 1 || startCount === 3) { + state.push({ type: 'em_close', level: --state.level }); + } + if (startCount === 2 || startCount === 3) { + state.push({ type: 'strong_close', level: --state.level }); + } + } + + state.pos = state.posMax + startCount; + state.posMax = max; + return true; + }; + + // Process ~subscript~ + + // same as UNESCAPE_MD_RE plus a space + var UNESCAPE_RE = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; + + var sub = function sub(state, silent) { + var found, + content, + max = state.posMax, + start = state.pos; + + if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; } + if (silent) { return false; } // don't run any pairs in validation mode + if (start + 2 >= max) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + state.pos = start + 1; + + while (state.pos < max) { + if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) { + found = true; + break; + } + + state.parser.skipToken(state); + } + + if (!found || start + 1 === state.pos) { + state.pos = start; + return false; + } + + content = state.src.slice(start + 1, state.pos); + + // don't allow unescaped spaces/newlines inside + if (content.match(/(^|[^\\])(\\\\)*\s/)) { + state.pos = start; + return false; + } + + // found! + state.posMax = state.pos; + state.pos = start + 1; + + if (!silent) { + state.push({ + type: 'sub', + level: state.level, + content: content.replace(UNESCAPE_RE, '$1') + }); + } + + state.pos = state.posMax + 1; + state.posMax = max; + return true; + }; + + // Process ^superscript^ + + // same as UNESCAPE_MD_RE plus a space + var UNESCAPE_RE$1 = /\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; + + var sup = function sup(state, silent) { + var found, + content, + max = state.posMax, + start = state.pos; + + if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } + if (silent) { return false; } // don't run any pairs in validation mode + if (start + 2 >= max) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + state.pos = start + 1; + + while (state.pos < max) { + if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) { + found = true; + break; + } + + state.parser.skipToken(state); + } + + if (!found || start + 1 === state.pos) { + state.pos = start; + return false; + } + + content = state.src.slice(start + 1, state.pos); + + // don't allow unescaped spaces/newlines inside + if (content.match(/(^|[^\\])(\\\\)*\s/)) { + state.pos = start; + return false; + } + + // found! + state.posMax = state.pos; + state.pos = start + 1; + + if (!silent) { + state.push({ + type: 'sup', + level: state.level, + content: content.replace(UNESCAPE_RE$1, '$1') + }); + } + + state.pos = state.posMax + 1; + state.posMax = max; + return true; + }; + + var links = function links(state, silent) { + var labelStart, + labelEnd, + label, + href, + title, + pos, + ref, + code, + isImage = false, + oldPos = state.pos, + max = state.posMax, + start = state.pos, + marker = state.src.charCodeAt(start); + + if (marker === 0x21/* ! */) { + isImage = true; + marker = state.src.charCodeAt(++start); + } + + if (marker !== 0x5B/* [ */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + labelStart = start + 1; + labelEnd = parse_link_label(state, start); + + // parser failed to find ']', so it's not a valid link + if (labelEnd < 0) { return false; } + + pos = labelEnd + 1; + if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { + // + // Inline link + // + + // [link]( "title" ) + // ^^ skipping these spaces + pos++; + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (code !== 0x20 && code !== 0x0A) { break; } + } + if (pos >= max) { return false; } + + // [link]( "title" ) + // ^^^^^^ parsing link destination + start = pos; + if (parse_link_destination(state, pos)) { + href = state.linkContent; + pos = state.pos; + } else { + href = ''; + } + + // [link]( "title" ) + // ^^ skipping these spaces + start = pos; + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (code !== 0x20 && code !== 0x0A) { break; } + } + + // [link]( "title" ) + // ^^^^^^^ parsing link title + if (pos < max && start !== pos && parse_link_title(state, pos)) { + title = state.linkContent; + pos = state.pos; + + // [link]( "title" ) + // ^^ skipping these spaces + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (code !== 0x20 && code !== 0x0A) { break; } + } + } else { + title = ''; + } + + if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { + state.pos = oldPos; + return false; + } + pos++; + } else { + // + // Link reference + // + + // do not allow nested reference links + if (state.linkLevel > 0) { return false; } + + // [foo] [bar] + // ^^ optional whitespace (can include newlines) + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (code !== 0x20 && code !== 0x0A) { break; } + } + + if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { + start = pos + 1; + pos = parse_link_label(state, pos); + if (pos >= 0) { + label = state.src.slice(start, pos++); + } else { + pos = start - 1; + } + } + + // covers label === '' and label === undefined + // (collapsed reference link and shortcut reference link respectively) + if (!label) { + if (typeof label === 'undefined') { + pos = labelEnd + 1; + } + label = state.src.slice(labelStart, labelEnd); + } + + ref = state.env.references[normalize_reference(label)]; + if (!ref) { + state.pos = oldPos; + return false; + } + href = ref.href; + title = ref.title; + } + + // + // We found the end of the link, and know for a fact it's a valid link; + // so all that's left to do is to call tokenizer. + // + if (!silent) { + state.pos = labelStart; + state.posMax = labelEnd; + + if (isImage) { + state.push({ + type: 'image', + src: href, + title: title, + alt: state.src.substr(labelStart, labelEnd - labelStart), + level: state.level + }); + } else { + state.push({ + type: 'link_open', + href: href, + title: title, + level: state.level++ + }); + state.linkLevel++; + state.parser.tokenize(state); + state.linkLevel--; + state.push({ type: 'link_close', level: --state.level }); + } + } + + state.pos = pos; + state.posMax = max; + return true; + }; + + var footnote_inline = function footnote_inline(state, silent) { + var labelStart, + labelEnd, + footnoteId, + oldLength, + max = state.posMax, + start = state.pos; + + if (start + 2 >= max) { return false; } + if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; } + if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + labelStart = start + 2; + labelEnd = parse_link_label(state, start + 1); + + // parser failed to find ']', so it's not a valid note + if (labelEnd < 0) { return false; } + + // We found the end of the link, and know for a fact it's a valid link; + // so all that's left to do is to call tokenizer. + // + if (!silent) { + if (!state.env.footnotes) { state.env.footnotes = {}; } + if (!state.env.footnotes.list) { state.env.footnotes.list = []; } + footnoteId = state.env.footnotes.list.length; + + state.pos = labelStart; + state.posMax = labelEnd; + + state.push({ + type: 'footnote_ref', + id: footnoteId, + level: state.level + }); + state.linkLevel++; + oldLength = state.tokens.length; + state.parser.tokenize(state); + state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) }; + state.linkLevel--; + } + + state.pos = labelEnd + 1; + state.posMax = max; + return true; + }; + + // Process footnote references ([^...]) + + + var footnote_ref = function footnote_ref(state, silent) { + var label, + pos, + footnoteId, + footnoteSubId, + max = state.posMax, + start = state.pos; + + // should be at least 4 chars - "[^x]" + if (start + 3 > max) { return false; } + + if (!state.env.footnotes || !state.env.footnotes.refs) { return false; } + if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; } + if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; } + if (state.level >= state.options.maxNesting) { return false; } + + for (pos = start + 2; pos < max; pos++) { + if (state.src.charCodeAt(pos) === 0x20) { return false; } + if (state.src.charCodeAt(pos) === 0x0A) { return false; } + if (state.src.charCodeAt(pos) === 0x5D /* ] */) { + break; + } + } + + if (pos === start + 2) { return false; } // no empty footnote labels + if (pos >= max) { return false; } + pos++; + + label = state.src.slice(start + 2, pos - 1); + if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; } + + if (!silent) { + if (!state.env.footnotes.list) { state.env.footnotes.list = []; } + + if (state.env.footnotes.refs[':' + label] < 0) { + footnoteId = state.env.footnotes.list.length; + state.env.footnotes.list[footnoteId] = { label: label, count: 0 }; + state.env.footnotes.refs[':' + label] = footnoteId; + } else { + footnoteId = state.env.footnotes.refs[':' + label]; + } + + footnoteSubId = state.env.footnotes.list[footnoteId].count; + state.env.footnotes.list[footnoteId].count++; + + state.push({ + type: 'footnote_ref', + id: footnoteId, + subId: footnoteSubId, + level: state.level + }); + } + + state.pos = pos; + state.posMax = max; + return true; + }; + + // List of valid url schemas, accorting to commonmark spec + + + var url_schemas = [ + 'coap', + 'doi', + 'javascript', + 'aaa', + 'aaas', + 'about', + 'acap', + 'cap', + 'cid', + 'crid', + 'data', + 'dav', + 'dict', + 'dns', + 'file', + 'ftp', + 'geo', + 'go', + 'gopher', + 'h323', + 'http', + 'https', + 'iax', + 'icap', + 'im', + 'imap', + 'info', + 'ipp', + 'iris', + 'iris.beep', + 'iris.xpc', + 'iris.xpcs', + 'iris.lwz', + 'ldap', + 'mailto', + 'mid', + 'msrp', + 'msrps', + 'mtqp', + 'mupdate', + 'news', + 'nfs', + 'ni', + 'nih', + 'nntp', + 'opaquelocktoken', + 'pop', + 'pres', + 'rtsp', + 'service', + 'session', + 'shttp', + 'sieve', + 'sip', + 'sips', + 'sms', + 'snmp', + 'soap.beep', + 'soap.beeps', + 'tag', + 'tel', + 'telnet', + 'tftp', + 'thismessage', + 'tn3270', + 'tip', + 'tv', + 'urn', + 'vemmi', + 'ws', + 'wss', + 'xcon', + 'xcon-userid', + 'xmlrpc.beep', + 'xmlrpc.beeps', + 'xmpp', + 'z39.50r', + 'z39.50s', + 'adiumxtra', + 'afp', + 'afs', + 'aim', + 'apt', + 'attachment', + 'aw', + 'beshare', + 'bitcoin', + 'bolo', + 'callto', + 'chrome', + 'chrome-extension', + 'com-eventbrite-attendee', + 'content', + 'cvs', + 'dlna-playsingle', + 'dlna-playcontainer', + 'dtn', + 'dvb', + 'ed2k', + 'facetime', + 'feed', + 'finger', + 'fish', + 'gg', + 'git', + 'gizmoproject', + 'gtalk', + 'hcp', + 'icon', + 'ipn', + 'irc', + 'irc6', + 'ircs', + 'itms', + 'jar', + 'jms', + 'keyparc', + 'lastfm', + 'ldaps', + 'magnet', + 'maps', + 'market', + 'message', + 'mms', + 'ms-help', + 'msnim', + 'mumble', + 'mvn', + 'notes', + 'oid', + 'palm', + 'paparazzi', + 'platform', + 'proxy', + 'psyc', + 'query', + 'res', + 'resource', + 'rmi', + 'rsync', + 'rtmp', + 'secondlife', + 'sftp', + 'sgn', + 'skype', + 'smb', + 'soldat', + 'spotify', + 'ssh', + 'steam', + 'svn', + 'teamspeak', + 'things', + 'udp', + 'unreal', + 'ut2004', + 'ventrilo', + 'view-source', + 'webcal', + 'wtai', + 'wyciwyg', + 'xfire', + 'xri', + 'ymsgr' + ]; + + /*eslint max-len:0*/ + var EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; + var AUTOLINK_RE = /^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/; + + + var autolink = function autolink(state, silent) { + var tail, linkMatch, emailMatch, url, fullUrl, pos = state.pos; + + if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } + + tail = state.src.slice(pos); + + if (tail.indexOf('>') < 0) { return false; } + + linkMatch = tail.match(AUTOLINK_RE); + + if (linkMatch) { + if (url_schemas.indexOf(linkMatch[1].toLowerCase()) < 0) { return false; } + + url = linkMatch[0].slice(1, -1); + fullUrl = normalize_link(url); + if (!state.parser.validateLink(url)) { return false; } + + if (!silent) { + state.push({ + type: 'link_open', + href: fullUrl, + level: state.level + }); + state.push({ + type: 'text', + content: url, + level: state.level + 1 + }); + state.push({ type: 'link_close', level: state.level }); + } + + state.pos += linkMatch[0].length; + return true; + } + + emailMatch = tail.match(EMAIL_RE); + + if (emailMatch) { + + url = emailMatch[0].slice(1, -1); + + fullUrl = normalize_link('mailto:' + url); + if (!state.parser.validateLink(fullUrl)) { return false; } + + if (!silent) { + state.push({ + type: 'link_open', + href: fullUrl, + level: state.level + }); + state.push({ + type: 'text', + content: url, + level: state.level + 1 + }); + state.push({ type: 'link_close', level: state.level }); + } + + state.pos += emailMatch[0].length; + return true; + } + + return false; + }; + + // Regexps to match html elements + + + function replace(regex, options) { + regex = regex.source; + options = options || ''; + + return function self(name, val) { + if (!name) { + return new RegExp(regex, options); + } + val = val.source || val; + regex = regex.replace(name, val); + return self; + }; + } + + + var attr_name = /[a-zA-Z_:][a-zA-Z0-9:._-]*/; + + var unquoted = /[^"'=<>`\x00-\x20]+/; + var single_quoted = /'[^']*'/; + var double_quoted = /"[^"]*"/; + + /*eslint no-spaced-func:0*/ + var attr_value = replace(/(?:unquoted|single_quoted|double_quoted)/) + ('unquoted', unquoted) + ('single_quoted', single_quoted) + ('double_quoted', double_quoted) + (); + + var attribute = replace(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/) + ('attr_name', attr_name) + ('attr_value', attr_value) + (); + + var open_tag = replace(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/) + ('attribute', attribute) + (); + + var close_tag = /<\/[A-Za-z][A-Za-z0-9]*\s*>/; + var comment = //; + var processing = /<[?].*?[?]>/; + var declaration = /]*>/; + var cdata = /])*\]\]>/; + + var HTML_TAG_RE = replace(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/) + ('open_tag', open_tag) + ('close_tag', close_tag) + ('comment', comment) + ('processing', processing) + ('declaration', declaration) + ('cdata', cdata) + (); + + + var HTML_TAG_RE_1 = HTML_TAG_RE; + + var html_re = { + HTML_TAG_RE: HTML_TAG_RE_1 + }; + + var HTML_TAG_RE$1 = html_re.HTML_TAG_RE; + + + function isLetter$2(ch) { + /*eslint no-bitwise:0*/ + var lc = ch | 0x20; // to lower case + return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); + } + + + var htmltag = function htmltag(state, silent) { + var ch, match, max, pos = state.pos; + + if (!state.options.html) { return false; } + + // Check start + max = state.posMax; + if (state.src.charCodeAt(pos) !== 0x3C/* < */ || + pos + 2 >= max) { + return false; + } + + // Quick fail on second char + ch = state.src.charCodeAt(pos + 1); + if (ch !== 0x21/* ! */ && + ch !== 0x3F/* ? */ && + ch !== 0x2F/* / */ && + !isLetter$2(ch)) { + return false; + } + + match = state.src.slice(pos).match(HTML_TAG_RE$1); + if (!match) { return false; } + + if (!silent) { + state.push({ + type: 'htmltag', + content: state.src.slice(pos, pos + match[0].length), + level: state.level + }); + } + state.pos += match[0].length; + return true; + }; + + var has$2 = utils.has; + var isValidEntityCode$1 = utils.isValidEntityCode; + var fromCodePoint$1 = utils.fromCodePoint; + + + var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i; + var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; + + + var entity = function entity(state, silent) { + var ch, code, match, pos = state.pos, max = state.posMax; + + if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; } + + if (pos + 1 < max) { + ch = state.src.charCodeAt(pos + 1); + + if (ch === 0x23 /* # */) { + match = state.src.slice(pos).match(DIGITAL_RE); + if (match) { + if (!silent) { + code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); + state.pending += isValidEntityCode$1(code) ? fromCodePoint$1(code) : fromCodePoint$1(0xFFFD); + } + state.pos += match[0].length; + return true; + } + } else { + match = state.src.slice(pos).match(NAMED_RE); + if (match) { + if (has$2(entities, match[1])) { + if (!silent) { state.pending += entities[match[1]]; } + state.pos += match[0].length; + return true; + } + } + } + } + + if (!silent) { state.pending += '&'; } + state.pos++; + return true; + }; + + /** + * Local dependencies + */ + + + + + + /** + * Inline Parser `rules` + */ + + var _rules$2 = [ + [ 'text', text ], + [ 'newline', newline ], + [ 'escape', _escape ], + [ 'backticks', backticks ], + [ 'del', del ], + [ 'ins', ins ], + [ 'mark', mark ], + [ 'emphasis', emphasis ], + [ 'sub', sub ], + [ 'sup', sup ], + [ 'links', links ], + [ 'footnote_inline', footnote_inline ], + [ 'footnote_ref', footnote_ref ], + [ 'autolink', autolink ], + [ 'htmltag', htmltag ], + [ 'entity', entity ] + ]; + + /** + * Inline Parser class. Note that link validation is stricter + * in Remarkable than what is specified by CommonMark. If you + * want to change this you can use a custom validator. + * + * @api private + */ + + function ParserInline() { + this.ruler = new ruler(); + for (var i = 0; i < _rules$2.length; i++) { + this.ruler.push(_rules$2[i][0], _rules$2[i][1]); + } + + // Can be overridden with a custom validator + this.validateLink = validateLink; + } + + /** + * Skip a single token by running all rules in validation mode. + * Returns `true` if any rule reports success. + * + * @param {Object} `state` + * @api privage + */ + + ParserInline.prototype.skipToken = function (state) { + var rules = this.ruler.getRules(''); + var len = rules.length; + var pos = state.pos; + var i, cached_pos; + + if ((cached_pos = state.cacheGet(pos)) > 0) { + state.pos = cached_pos; + return; + } + + for (i = 0; i < len; i++) { + if (rules[i](state, true)) { + state.cacheSet(pos, state.pos); + return; + } + } + + state.pos++; + state.cacheSet(pos, state.pos); + }; + + /** + * Generate tokens for the given input range. + * + * @param {Object} `state` + * @api private + */ + + ParserInline.prototype.tokenize = function (state) { + var rules = this.ruler.getRules(''); + var len = rules.length; + var end = state.posMax; + var ok, i; + + while (state.pos < end) { + + // Try all possible rules. + // On success, the rule should: + // + // - update `state.pos` + // - update `state.tokens` + // - return true + for (i = 0; i < len; i++) { + ok = rules[i](state, false); + + if (ok) { + break; + } + } + + if (ok) { + if (state.pos >= end) { break; } + continue; + } + + state.pending += state.src[state.pos++]; + } + + if (state.pending) { + state.pushPending(); + } + }; + + /** + * Parse the given input string. + * + * @param {String} `str` + * @param {Object} `options` + * @param {Object} `env` + * @param {Array} `outTokens` + * @api private + */ + + ParserInline.prototype.parse = function (str, options, env, outTokens) { + var state = new state_inline(str, this, options, env, outTokens); + this.tokenize(state); + }; + + /** + * Validate the given `url` by checking for bad protocols. + * + * @param {String} `url` + * @return {Boolean} + */ + + function validateLink(url) { + var BAD_PROTOCOLS = [ 'vbscript', 'javascript', 'file', 'data' ]; + var str = url.trim().toLowerCase(); + // Care about digital entities "javascript:alert(1)" + str = utils.replaceEntities(str); + if (str.indexOf(':') !== -1 && BAD_PROTOCOLS.indexOf(str.split(':')[0]) !== -1) { + return false; + } + return true; + } + + /** + * Expose `ParserInline` + */ + + var parser_inline = ParserInline; + + // Remarkable default options + + + var _default = { + options: { + html: false, // Enable HTML tags in source + xhtmlOut: false, // Use '/' to close single tags (
    ) + breaks: false, // Convert '\n' in paragraphs into
    + langPrefix: 'language-', // CSS language prefix for fenced blocks + linkify: false, // autoconvert URL-like texts to links + linkTarget: '', // set target to open link in + + // Enable some language-neutral replacements + quotes beautification + typographer: false, + + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. + quotes: '“”‘’', + + // Highlighter function. Should return escaped HTML, + // or '' if input not changed + // + // function (/*str, lang*/) { return ''; } + // + highlight: null, + + maxNesting: 20 // Internal protection, recursion limit + }, + + components: { + + core: { + rules: [ + 'block', + 'inline', + 'references', + 'replacements', + 'linkify', + 'smartquotes', + 'references', + 'abbr2', + 'footnote_tail' + ] + }, + + block: { + rules: [ + 'blockquote', + 'code', + 'fences', + 'footnote', + 'heading', + 'hr', + 'htmlblock', + 'lheading', + 'list', + 'paragraph', + 'table' + ] + }, + + inline: { + rules: [ + 'autolink', + 'backticks', + 'del', + 'emphasis', + 'entity', + 'escape', + 'footnote_ref', + 'htmltag', + 'links', + 'newline', + 'text' + ] + } + } + }; + + // Remarkable default options + + + var full = { + options: { + html: false, // Enable HTML tags in source + xhtmlOut: false, // Use '/' to close single tags (
    ) + breaks: false, // Convert '\n' in paragraphs into
    + langPrefix: 'language-', // CSS language prefix for fenced blocks + linkify: false, // autoconvert URL-like texts to links + linkTarget: '', // set target to open link in + + // Enable some language-neutral replacements + quotes beautification + typographer: false, + + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. + quotes: '“”‘’', + + // Highlighter function. Should return escaped HTML, + // or '' if input not changed + // + // function (/*str, lang*/) { return ''; } + // + highlight: null, + + maxNesting: 20 // Internal protection, recursion limit + }, + + components: { + // Don't restrict core/block/inline rules + core: {}, + block: {}, + inline: {} + } + }; + + // Commonmark default options + + + var commonmark = { + options: { + html: true, // Enable HTML tags in source + xhtmlOut: true, // Use '/' to close single tags (
    ) + breaks: false, // Convert '\n' in paragraphs into
    + langPrefix: 'language-', // CSS language prefix for fenced blocks + linkify: false, // autoconvert URL-like texts to links + linkTarget: '', // set target to open link in + + // Enable some language-neutral replacements + quotes beautification + typographer: false, + + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German. + quotes: '“”‘’', + + // Highlighter function. Should return escaped HTML, + // or '' if input not changed + // + // function (/*str, lang*/) { return ''; } + // + highlight: null, + + maxNesting: 20 // Internal protection, recursion limit + }, + + components: { + + core: { + rules: [ + 'block', + 'inline', + 'references', + 'abbr2' + ] + }, + + block: { + rules: [ + 'blockquote', + 'code', + 'fences', + 'heading', + 'hr', + 'htmlblock', + 'lheading', + 'list', + 'paragraph' + ] + }, + + inline: { + rules: [ + 'autolink', + 'backticks', + 'emphasis', + 'entity', + 'escape', + 'htmltag', + 'links', + 'newline', + 'text' + ] + } + } + }; + + /** + * Local dependencies + */ + + var assign$1 = utils.assign; + + + + + + + /** + * Preset configs + */ + + var config = { + 'default': _default, + 'full': full, + 'commonmark': commonmark + }; + + /** + * The `StateCore` class manages state. + * + * @param {Object} `instance` Remarkable instance + * @param {String} `str` Markdown string + * @param {Object} `env` + */ + + function StateCore(instance, str, env) { + this.src = str; + this.env = env; + this.options = instance.options; + this.tokens = []; + this.inlineMode = false; + + this.inline = instance.inline; + this.block = instance.block; + this.renderer = instance.renderer; + this.typographer = instance.typographer; + } + + /** + * The main `Remarkable` class. Create an instance of + * `Remarkable` with a `preset` and/or `options`. + * + * @param {String} `preset` If no preset is given, `default` is used. + * @param {Object} `options` + */ + + function Remarkable(preset, options) { + if (typeof preset !== 'string') { + options = preset; + preset = 'default'; + } + + this.inline = new parser_inline(); + this.block = new parser_block(); + this.core = new parser_core(); + this.renderer = new renderer(); + this.ruler = new ruler(); + + this.options = {}; + this.configure(config[preset]); + this.set(options || {}); + } + + /** + * Set options as an alternative to passing them + * to the constructor. + * + * ```js + * md.set({typographer: true}); + * ``` + * @param {Object} `options` + * @api public + */ + + Remarkable.prototype.set = function (options) { + assign$1(this.options, options); + }; + + /** + * Batch loader for components rules states, and options + * + * @param {Object} `presets` + */ + + Remarkable.prototype.configure = function (presets) { + var self = this; + + if (!presets) { throw new Error('Wrong `remarkable` preset, check name/content'); } + if (presets.options) { self.set(presets.options); } + if (presets.components) { + Object.keys(presets.components).forEach(function (name) { + if (presets.components[name].rules) { + self[name].ruler.enable(presets.components[name].rules, true); + } + }); + } + }; + + /** + * Use a plugin. + * + * ```js + * var md = new Remarkable(); + * + * md.use(plugin1) + * .use(plugin2, opts) + * .use(plugin3); + * ``` + * + * @param {Function} `plugin` + * @param {Object} `options` + * @return {Object} `Remarkable` for chaining + */ + + Remarkable.prototype.use = function (plugin, options) { + plugin(this, options); + return this; + }; + + + /** + * Parse the input `string` and return a tokens array. + * Modifies `env` with definitions data. + * + * @param {String} `string` + * @param {Object} `env` + * @return {Array} Array of tokens + */ + + Remarkable.prototype.parse = function (str, env) { + var state = new StateCore(this, str, env); + this.core.process(state); + return state.tokens; + }; + + /** + * The main `.render()` method that does all the magic :) + * + * @param {String} `string` + * @param {Object} `env` + * @return {String} Rendered HTML. + */ + + Remarkable.prototype.render = function (str, env) { + env = env || {}; + return this.renderer.render(this.parse(str, env), this.options, env); + }; + + /** + * Parse the given content `string` as a single string. + * + * @param {String} `string` + * @param {Object} `env` + * @return {Array} Array of tokens + */ + + Remarkable.prototype.parseInline = function (str, env) { + var state = new StateCore(this, str, env); + state.inlineMode = true; + this.core.process(state); + return state.tokens; + }; + + /** + * Render a single content `string`, without wrapping it + * to paragraphs + * + * @param {String} `str` + * @param {Object} `env` + * @return {String} + */ + + Remarkable.prototype.renderInline = function (str, env) { + env = env || {}; + return this.renderer.render(this.parseInline(str, env), this.options, env); + }; + + /** + * Expose `Remarkable` + */ + + var lib = Remarkable; + + /** + * Expose `utils`, Useful helper functions for custom + * rendering. + */ + + var utils$1 = utils; + lib.utils = utils$1; + + var remarkable = lib; + + function _classCallCheck$3(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn$3(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits$3(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var MarkdownEditor = function (_React$Component) { + _inherits$3(MarkdownEditor, _React$Component); + + function MarkdownEditor(props) { + _classCallCheck$3(this, MarkdownEditor); + + var _this = _possibleConstructorReturn$3(this, _React$Component.call(this, props)); + + _this.handleChange = _this.handleChange.bind(_this); + _this.state = { value: 'Hello, **world**!' }; + return _this; + } + + MarkdownEditor.prototype.handleChange = function handleChange(e) { + this.setState({ value: e.target.value }); + }; + + MarkdownEditor.prototype.getRawMarkup = function getRawMarkup() { + var md = new remarkable(); + return { __html: md.render(this.state.value) }; + }; + + MarkdownEditor.prototype.render = function render() { + return Omi.h( + 'div', + { className: 'MarkdownEditor' }, + Omi.h( + 'h3', + null, + 'Input' + ), + Omi.h( + 'label', + { htmlFor: 'markdown-content' }, + 'Enter some markdown' + ), + Omi.h('br', null), + Omi.h('textarea', { + id: 'markdown-content', + onChange: this.handleChange, + defaultValue: this.state.value + }), + Omi.h( + 'h3', + null, + 'Output' + ), + Omi.h('div', { + className: 'content', + dangerouslySetInnerHTML: this.getRawMarkup() + }) + ); + }; + + return MarkdownEditor; + }(react.Component); + + function _classCallCheck$4(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn$4(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits$4(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + define('my-app', function (_WeElement) { + _inherits$4(_class, _WeElement); + + function _class() { + _classCallCheck$4(this, _class); + + return _possibleConstructorReturn$4(this, _WeElement.apply(this, arguments)); + } + + _class.prototype.render = function render$$1(props, data) { + return Omi.h( + 'div', + null, + Omi.h(MarkdownEditor, null) + ); + }; + + return _class; + }(WeElement)); + + render(Omi.h('my-app', null), document.body); + +}()); +//# sourceMappingURL=b.js.map diff --git a/packages/omire/examples/markdown/b.js.map b/packages/omire/examples/markdown/b.js.map new file mode 100644 index 000000000..236179767 --- /dev/null +++ b/packages/omire/examples/markdown/b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"b.js","sources":["../../src/options.js","../../src/util.js","../../src/constants.js","../../src/vdom/index.js","../../src/dom/index.js","../../node_modules/object-assign/index.js","../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/index.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/react-dom/index.js","../../node_modules/morphdom/dist/morphdom-esm.js","../../src/vdom/diff.js","../../src/proxy.js","../../src/tick.js","../../src/observe.js","../../src/define.js","../../src/event.js","../../src/we-element.js","../../src/render.js","../../src/tag.js","../../src/get-host.js","../../src/rpx.js","../../src/model-view.js","../../src/class.js","../../node_modules/htm/dist/htm.mjs","../../src/omi.js","../../node_modules/remarkable/lib/common/entities.js","../../node_modules/remarkable/lib/common/utils.js","../../node_modules/remarkable/lib/rules.js","../../node_modules/remarkable/lib/renderer.js","../../node_modules/remarkable/lib/ruler.js","../../node_modules/remarkable/lib/rules_core/block.js","../../node_modules/remarkable/lib/rules_inline/state_inline.js","../../node_modules/remarkable/lib/helpers/parse_link_label.js","../../node_modules/remarkable/lib/rules_core/abbr.js","../../node_modules/remarkable/lib/helpers/normalize_link.js","../../node_modules/remarkable/lib/helpers/parse_link_destination.js","../../node_modules/remarkable/lib/helpers/parse_link_title.js","../../node_modules/remarkable/lib/helpers/normalize_reference.js","../../node_modules/remarkable/lib/rules_core/references.js","../../node_modules/remarkable/lib/rules_core/inline.js","../../node_modules/remarkable/lib/rules_core/footnote_tail.js","../../node_modules/remarkable/lib/rules_core/abbr2.js","../../node_modules/remarkable/lib/rules_core/replacements.js","../../node_modules/remarkable/lib/rules_core/smartquotes.js","../../node_modules/autolinker/dist/Autolinker.js","../../node_modules/remarkable/lib/rules_core/linkify.js","../../node_modules/remarkable/lib/parser_core.js","../../node_modules/remarkable/lib/rules_block/state_block.js","../../node_modules/remarkable/lib/rules_block/code.js","../../node_modules/remarkable/lib/rules_block/fences.js","../../node_modules/remarkable/lib/rules_block/blockquote.js","../../node_modules/remarkable/lib/rules_block/hr.js","../../node_modules/remarkable/lib/rules_block/list.js","../../node_modules/remarkable/lib/rules_block/footnote.js","../../node_modules/remarkable/lib/rules_block/heading.js","../../node_modules/remarkable/lib/rules_block/lheading.js","../../node_modules/remarkable/lib/common/html_blocks.js","../../node_modules/remarkable/lib/rules_block/htmlblock.js","../../node_modules/remarkable/lib/rules_block/table.js","../../node_modules/remarkable/lib/rules_block/deflist.js","../../node_modules/remarkable/lib/rules_block/paragraph.js","../../node_modules/remarkable/lib/parser_block.js","../../node_modules/remarkable/lib/rules_inline/text.js","../../node_modules/remarkable/lib/rules_inline/newline.js","../../node_modules/remarkable/lib/rules_inline/escape.js","../../node_modules/remarkable/lib/rules_inline/backticks.js","../../node_modules/remarkable/lib/rules_inline/del.js","../../node_modules/remarkable/lib/rules_inline/ins.js","../../node_modules/remarkable/lib/rules_inline/mark.js","../../node_modules/remarkable/lib/rules_inline/emphasis.js","../../node_modules/remarkable/lib/rules_inline/sub.js","../../node_modules/remarkable/lib/rules_inline/sup.js","../../node_modules/remarkable/lib/rules_inline/links.js","../../node_modules/remarkable/lib/rules_inline/footnote_inline.js","../../node_modules/remarkable/lib/rules_inline/footnote_ref.js","../../node_modules/remarkable/lib/common/url_schemas.js","../../node_modules/remarkable/lib/rules_inline/autolink.js","../../node_modules/remarkable/lib/common/html_re.js","../../node_modules/remarkable/lib/rules_inline/htmltag.js","../../node_modules/remarkable/lib/rules_inline/entity.js","../../node_modules/remarkable/lib/parser_inline.js","../../node_modules/remarkable/lib/configs/default.js","../../node_modules/remarkable/lib/configs/full.js","../../node_modules/remarkable/lib/configs/commonmark.js","../../node_modules/remarkable/lib/index.js","../../node_modules/remarkable/index.js","markdown-edit.js","main.js"],"sourcesContent":["function getGlobal() {\n if (\n typeof global !== 'object' ||\n !global ||\n global.Math !== Math ||\n global.Array !== Array\n ) {\n return (\n self ||\n window ||\n global ||\n (function() {\n return this\n })()\n )\n }\n return global\n}\n\n/** Global options\n *\t@public\n *\t@namespace options {Object}\n */\nexport default {\n store: null,\n root: getGlobal(),\n mapping: {}\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This shim allows elements written in, or compiled to, ES5 to work on native\n * implementations of Custom Elements v1. It sets new.target to the value of\n * this.constructor so that the native HTMLElement constructor can access the\n * current under-construction element's definition.\n */\n; (function () {\n if (\n // No Reflect, no classes, no need for shim because native custom elements\n // require ES2015 classes or Reflect.\n window.Reflect === undefined ||\n window.customElements === undefined ||\n // The webcomponentsjs custom elements polyfill doesn't require\n // ES2015-compatible construction (`super()` or `Reflect.construct`).\n window.customElements.hasOwnProperty('polyfillWrapFlushCallback')\n ) {\n return\n }\n const BuiltInHTMLElement = HTMLElement\n window.HTMLElement = function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor)\n }\n HTMLElement.prototype = BuiltInHTMLElement.prototype\n HTMLElement.prototype.constructor = HTMLElement\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement)\n})()\n\nexport function cssToDom(css) {\n const node = document.createElement('style')\n node.textContent = css\n return node\n}\n\nexport function npn(str) {\n return str.replace(/-(\\w)/g, ($, $1) => {\n return $1.toUpperCase()\n })\n}\n\nexport function extend(obj, props) {\n for (let i in props) obj[i] = props[i]\n return obj\n}\n\n/** Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} [ref=null]\n * @param {any} [value]\n */\nexport function applyRef(ref, value) {\n if (ref != null) {\n if (typeof ref == 'function') ref(value)\n else ref.current = value\n }\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n * @type {(callback: function) => void}\n */\nexport const defer =\n typeof Promise == 'function'\n ? Promise.resolve().then.bind(Promise.resolve())\n : setTimeout\n\nexport function isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n}\n\nexport function nProps(props) {\n if (!props || isArray(props)) return {}\n const result = {}\n Object.keys(props).forEach(key => {\n result[key] = props[key].value\n })\n return result\n}\n\nexport function getUse(data, paths) {\n const obj = []\n paths.forEach((path, index) => {\n const isPath = typeof path === 'string'\n if (isPath) {\n obj[index] = getTargetByPath(data, path)\n } else {\n const key = Object.keys(path)[0]\n const value = path[key]\n if (typeof value === 'string') {\n obj[index] = getTargetByPath(data, value)\n } else {\n const tempPath = value[0]\n if (typeof tempPath === 'string') {\n const tempVal = getTargetByPath(data, tempPath)\n obj[index] = value[1] ? value[1](tempVal) : tempVal\n } else {\n const args = []\n tempPath.forEach(path =>{\n args.push(getTargetByPath(data, path))\n })\n obj[index] = value[1].apply(null, args)\n }\n }\n obj[key] = obj[index]\n }\n })\n return obj\n}\n\nexport function getTargetByPath(origin, path) {\n const arr = path.replace(/]/g, '').replace(/\\[/g, '.').split('.')\n let current = origin\n for (let i = 0, len = arr.length; i < len; i++) {\n current = current[arr[i]]\n }\n return current\n}\n","// render modes\n\nexport const NO_RENDER = 0\nexport const SYNC_RENDER = 1\nexport const FORCE_RENDER = 2\nexport const ASYNC_RENDER = 3\n\nexport const ATTR_KEY = '__omiattr_'\n\n// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i\n","import { extend } from '../util'\nimport options from '../options'\n/**\n * Check if two nodes are equivalent.\n *\n * @param {Node} node\t\t\tDOM Node to compare\n * @param {VNode} vnode\t\t\tVirtual DOM node to compare\n * @param {boolean} [hydrating=false]\tIf true, ignores component constructors when comparing.\n * @private\n */\nexport function isSameNodeType(node, vnode, hydrating) {\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return node.splitText !== undefined\n }\n if (typeof vnode.type === 'string') {\n return !node._componentConstructor && isNamedNode(node, vnode.type)\n } else if (typeof vnode.type === 'function'){\n return options.mapping[node.nodeName.toLowerCase()] === vnode.type\n }\n return hydrating || node._componentConstructor === vnode.type\n}\n\n/**\n * Check if an Element has a given type, case-insensitively.\n *\n * @param {Element} node\tA DOM Element to inspect the name of.\n * @param {String} type\tUnnormalized name to compare against.\n */\nexport function isNamedNode(node, type) {\n return (\n node.normalizedNodeName === type ||\n node.nodeName.toLowerCase() === type.toLowerCase()\n )\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n *\n * @param {VNode} vnode\n * @returns {Object} props\n */\nexport function getNodeProps(vnode) {\n let props = extend({}, vnode.attributes)\n props.children = vnode.children\n\n let defaultProps = vnode.type.defaultProps\n if (defaultProps !== undefined) {\n for (let i in defaultProps) {\n if (props[i] === undefined) {\n props[i] = defaultProps[i]\n }\n }\n }\n\n return props\n}\n","import { IS_NON_DIMENSIONAL } from '../constants'\nimport { applyRef } from '../util'\nimport options from '../options'\n\n/**\n * Create an element with the given type.\n * @param {string} type The DOM node to create\n * @param {boolean} [isSvg=false] If `true`, creates an element within the SVG\n * namespace.\n * @returns {Element} The created DOM node\n */\nexport function createNode(type, isSvg) {\n /** @type {Element} */\n let node = isSvg\n ? document.createElementNS('http://www.w3.org/2000/svg', type)\n : document.createElement(type)\n node.normalizedNodeName = type\n return node\n}\n\n/**\n * Remove a child node from its parent if attached.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n let parentNode = node.parentNode\n if (parentNode) parentNode.removeChild(node)\n}\n\n/**\n * Set a named attribute on the given Node, with special behavior for some names\n * and event handlers. If `value` is `null`, the attribute/handler will be\n * removed.\n * @param {Element} node An element to mutate\n * @param {string} name The name/key to set, such as an event or attribute name\n * @param {*} old The last value that was set for this name/node pair\n * @param {*} value An attribute value, such as a function to be used as an\n * event handler\n * @param {boolean} isSvg Are we currently diffing inside an svg?\n * @private\n */\nexport function setAccessor(node, name, old, value, isSvg) {\n if (name === 'className') name = 'class'\n\n if (name === 'key') {\n // ignore\n } else if (name === 'ref') {\n applyRef(old, null)\n applyRef(value, node)\n } else if (name === 'class' && !isSvg) {\n node.className = value || ''\n } else if (name === 'style') {\n if (!value || typeof value === 'string' || typeof old === 'string') {\n node.style.cssText = value || ''\n }\n if (value && typeof value === 'object') {\n if (typeof old !== 'string') {\n for (let i in old) if (!(i in value)) node.style[i] = ''\n }\n for (let i in value) {\n node.style[i] =\n typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false\n ? value[i] + 'px'\n : value[i]\n }\n }\n } else if (name === 'dangerouslySetInnerHTML') {\n if (value) node.innerHTML = value.__html || ''\n } else if (name[0] == 'o' && name[1] == 'n') {\n let useCapture = name !== (name = name.replace(/Capture$/, ''))\n name = name.toLowerCase().substring(2)\n if (value) {\n if (!old) {\n node.addEventListener(name, eventProxy, useCapture)\n if (name == 'tap') {\n node.addEventListener('touchstart', touchStart, useCapture)\n node.addEventListener('touchend', touchEnd, useCapture)\n }\n }\n } else {\n node.removeEventListener(name, eventProxy, useCapture)\n if (name == 'tap') {\n node.removeEventListener('touchstart', touchStart, useCapture)\n node.removeEventListener('touchend', touchEnd, useCapture)\n }\n }\n ;(node._listeners || (node._listeners = {}))[name] = value\n } else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n // Attempt to set a DOM property to the given value.\n // IE & FF throw for certain property-value combinations.\n try {\n node[name] = value == null ? '' : value\n } catch (e) {}\n if ((value == null || value === false) && name != 'spellcheck')\n node.removeAttribute(name)\n } else {\n let ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''))\n // spellcheck is treated differently than all other boolean values and\n // should not be removed when the value is `false`. See:\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-spellcheck\n if (value == null || value === false) {\n if (ns)\n node.removeAttributeNS(\n 'http://www.w3.org/1999/xlink',\n name.toLowerCase()\n )\n else node.removeAttribute(name)\n } else if (typeof value !== 'function') {\n if (ns) {\n node.setAttributeNS(\n 'http://www.w3.org/1999/xlink',\n name.toLowerCase(),\n value\n )\n } else {\n node.setAttribute(name, value)\n }\n }\n }\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n return this._listeners[e.type]((options.event && options.event(e)) || e)\n}\n\nfunction touchStart(e) {\n this.___touchX = e.touches[0].pageX\n this.___touchY = e.touches[0].pageY\n this.___scrollTop = document.body.scrollTop\n}\n\nfunction touchEnd(e) {\n if (\n Math.abs(e.changedTouches[0].pageX - this.___touchX) < 30 &&\n Math.abs(e.changedTouches[0].pageY - this.___touchY) < 30 &&\n Math.abs(document.body.scrollTop - this.___scrollTop) < 30\n ) {\n this.dispatchEvent(new CustomEvent('tap', { detail: e }))\n }\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cP.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8),S=bb?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTimethis.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"\"+b+\"\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;dGe||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:cb&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{bb?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):bc&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:cb&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||da&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,du?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;uu?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;md?e:d);Ih.current=null;d=void 0;1c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;hg&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1=v)t=0;else if(-1===t||v component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&eb?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTimeU&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(ba.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2= 0; --i) {\n attr = attrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n attrs = fromNode.attributes;\n\n for (i = attrs.length - 1; i >= 0; --i) {\n attr = attrs[i];\n if (attr.specified !== false) {\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nvar doc = typeof document === 'undefined' ? undefined : document;\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nfunction toElement(str) {\n if (!range && doc.createRange) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment;\n if (range && range.createContextualFragment) {\n fragment = range.createContextualFragment(str);\n } else {\n fragment = doc.createElement('body');\n fragment.innerHTML = str;\n }\n return fragment.childNodes[0];\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n * nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */\nfunction compareNodeNames(fromEl, toEl) {\n var fromNodeName = fromEl.nodeName;\n var toNodeName = toEl.nodeName;\n\n if (fromNodeName === toNodeName) {\n return true;\n }\n\n if (toEl.actualize &&\n fromNodeName.charCodeAt(0) < 91 && /* from tag name is upper case */\n toNodeName.charCodeAt(0) > 90 /* target tag name is lower case */) {\n // If the target element is a virtual DOM node then we may need to normalize the tag name\n // before comparing. Normal HTML elements that are in the \"http://www.w3.org/1999/xhtml\"\n // are converted to upper case\n return fromNodeName === toNodeName.toUpperCase();\n } else {\n return false;\n }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */\nfunction createElementNS(name, namespaceURI) {\n return !namespaceURI || namespaceURI === NS_XHTML ?\n doc.createElement(name) :\n doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */\nfunction moveChildren(fromEl, toEl) {\n var curChild = fromEl.firstChild;\n while (curChild) {\n var nextChild = curChild.nextSibling;\n toEl.appendChild(curChild);\n curChild = nextChild;\n }\n return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n if (fromEl[name] !== toEl[name]) {\n fromEl[name] = toEl[name];\n if (fromEl[name]) {\n fromEl.setAttribute(name, '');\n } else {\n fromEl.removeAttribute(name);\n }\n }\n}\n\nvar specialElHandlers = {\n OPTION: function(fromEl, toEl) {\n var parentNode = fromEl.parentNode;\n if (parentNode) {\n var parentName = parentNode.nodeName.toUpperCase();\n if (parentName === 'OPTGROUP') {\n parentNode = parentNode.parentNode;\n parentName = parentNode && parentNode.nodeName.toUpperCase();\n }\n if (parentName === 'SELECT' && !parentNode.hasAttribute('multiple')) {\n if (fromEl.hasAttribute('selected') && !toEl.selected) {\n // Workaround for MS Edge bug where the 'selected' attribute can only be\n // removed if set to a non-empty value:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n fromEl.setAttribute('selected', 'selected');\n fromEl.removeAttribute('selected');\n }\n // We have to reset select element's selectedIndex to -1, otherwise setting\n // fromEl.selected using the syncBooleanAttrProp below has no effect.\n // The correct selectedIndex will be set in the SELECT special handler below.\n parentNode.selectedIndex = -1;\n }\n }\n syncBooleanAttrProp(fromEl, toEl, 'selected');\n },\n /**\n * The \"value\" attribute is special for the element since it sets\n * the initial value. Changing the \"value\" attribute without changing the\n * \"value\" property will have no effect since it is only used to the set the\n * initial value. Similar for the \"checked\" attribute, and \"disabled\".\n */\n INPUT: function(fromEl, toEl) {\n syncBooleanAttrProp(fromEl, toEl, 'checked');\n syncBooleanAttrProp(fromEl, toEl, 'disabled');\n\n if (fromEl.value !== toEl.value) {\n fromEl.value = toEl.value;\n }\n\n if (!toEl.hasAttribute('value')) {\n fromEl.removeAttribute('value');\n }\n },\n\n TEXTAREA: function(fromEl, toEl) {\n var newValue = toEl.value;\n if (fromEl.value !== newValue) {\n fromEl.value = newValue;\n }\n\n var firstChild = fromEl.firstChild;\n if (firstChild) {\n // Needed for IE. Apparently IE sets the placeholder as the\n // node value and vise versa. This ignores an empty update.\n var oldValue = firstChild.nodeValue;\n\n if (oldValue == newValue || (!newValue && oldValue == fromEl.placeholder)) {\n return;\n }\n\n firstChild.nodeValue = newValue;\n }\n },\n SELECT: function(fromEl, toEl) {\n if (!toEl.hasAttribute('multiple')) {\n var selectedIndex = -1;\n var i = 0;\n // We have to loop through children of fromEl, not toEl since nodes can be moved\n // from toEl to fromEl directly when morphing.\n // At the time this special handler is invoked, all children have already been morphed\n // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n var curChild = fromEl.firstChild;\n var optgroup;\n var nodeName;\n while(curChild) {\n nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n if (nodeName === 'OPTGROUP') {\n optgroup = curChild;\n curChild = optgroup.firstChild;\n } else {\n if (nodeName === 'OPTION') {\n if (curChild.hasAttribute('selected')) {\n selectedIndex = i;\n break;\n }\n i++;\n }\n curChild = curChild.nextSibling;\n if (!curChild && optgroup) {\n curChild = optgroup.nextSibling;\n optgroup = null;\n }\n }\n }\n\n fromEl.selectedIndex = selectedIndex;\n }\n }\n};\n\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n return node.id;\n}\n\nfunction morphdomFactory(morphAttrs) {\n\n return function morphdom(fromNode, toNode, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof toNode === 'string') {\n if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML') {\n var toNodeHtml = toNode;\n toNode = doc.createElement('html');\n toNode.innerHTML = toNodeHtml;\n } else {\n toNode = toElement(toNode);\n }\n }\n\n var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n var onNodeAdded = options.onNodeAdded || noop;\n var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n var onElUpdated = options.onElUpdated || noop;\n var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n var onNodeDiscarded = options.onNodeDiscarded || noop;\n var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n var childrenOnly = options.childrenOnly === true;\n\n // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n var fromNodesLookup = {};\n var keyedRemovalList;\n\n function addKeyedRemoval(key) {\n if (keyedRemovalList) {\n keyedRemovalList.push(key);\n } else {\n keyedRemovalList = [key];\n }\n }\n\n function walkDiscardedChildNodes(node, skipKeyedNodes) {\n if (node.nodeType === ELEMENT_NODE) {\n var curChild = node.firstChild;\n while (curChild) {\n\n var key = undefined;\n\n if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n // If we are skipping keyed nodes then we add the key\n // to a list so that it can be handled at the very end.\n addKeyedRemoval(key);\n } else {\n // Only report the node as discarded if it is not keyed. We do this because\n // at the end we loop through all keyed elements that were unmatched\n // and then discard them in one final pass.\n onNodeDiscarded(curChild);\n if (curChild.firstChild) {\n walkDiscardedChildNodes(curChild, skipKeyedNodes);\n }\n }\n\n curChild = curChild.nextSibling;\n }\n }\n }\n\n /**\n * Removes a DOM node out of the original DOM\n *\n * @param {Node} node The node to remove\n * @param {Node} parentNode The nodes parent\n * @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n * @return {undefined}\n */\n function removeNode(node, parentNode, skipKeyedNodes) {\n if (onBeforeNodeDiscarded(node) === false) {\n return;\n }\n\n if (parentNode) {\n parentNode.removeChild(node);\n }\n\n onNodeDiscarded(node);\n walkDiscardedChildNodes(node, skipKeyedNodes);\n }\n\n // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n // function indexTree(root) {\n // var treeWalker = document.createTreeWalker(\n // root,\n // NodeFilter.SHOW_ELEMENT);\n //\n // var el;\n // while((el = treeWalker.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n\n // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n //\n // function indexTree(node) {\n // var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n // var el;\n // while((el = nodeIterator.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n\n function indexTree(node) {\n if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE) {\n var curChild = node.firstChild;\n while (curChild) {\n var key = getNodeKey(curChild);\n if (key) {\n fromNodesLookup[key] = curChild;\n }\n\n // Walk recursively\n indexTree(curChild);\n\n curChild = curChild.nextSibling;\n }\n }\n }\n\n indexTree(fromNode);\n\n function handleNodeAdded(el) {\n onNodeAdded(el);\n\n var curChild = el.firstChild;\n while (curChild) {\n var nextSibling = curChild.nextSibling;\n\n var key = getNodeKey(curChild);\n if (key) {\n var unmatchedFromEl = fromNodesLookup[key];\n if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n morphEl(unmatchedFromEl, curChild);\n }\n }\n\n handleNodeAdded(curChild);\n curChild = nextSibling;\n }\n }\n\n function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n // We have processed all of the \"to nodes\". If curFromNodeChild is\n // non-null then we still have some from nodes left over that need\n // to be removed\n while (curFromNodeChild) {\n var fromNextSibling = curFromNodeChild.nextSibling;\n if ((curFromNodeKey = getNodeKey(curFromNodeChild))) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = fromNextSibling;\n }\n }\n\n function morphEl(fromEl, toEl, childrenOnly) {\n var toElKey = getNodeKey(toEl);\n\n if (toElKey) {\n // If an element with an ID is being morphed then it will be in the final\n // DOM so clear it out of the saved elements collection\n delete fromNodesLookup[toElKey];\n }\n\n if (toNode.isSameNode && toNode.isSameNode(fromNode)) {\n return;\n }\n\n if (!childrenOnly) {\n // optional\n if (onBeforeElUpdated(fromEl, toEl) === false) {\n return;\n }\n\n // update attributes on original DOM element first\n morphAttrs(fromEl, toEl);\n // optional\n onElUpdated(fromEl);\n\n if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n return;\n }\n }\n if (fromEl.nodeName !== 'TEXTAREA') {\n morphChildren(fromEl, toEl);\n } else {\n specialElHandlers.TEXTAREA(fromEl, toEl);\n }\n }\n\n function morphChildren(fromEl, toEl) {\n var curToNodeChild = toEl.firstChild;\n var curFromNodeChild = fromEl.firstChild;\n var curToNodeKey;\n var curFromNodeKey;\n\n var fromNextSibling;\n var toNextSibling;\n var matchingFromEl;\n\n // walk the children\n outer: while (curToNodeChild) {\n toNextSibling = curToNodeChild.nextSibling;\n curToNodeKey = getNodeKey(curToNodeChild);\n\n // walk the fromNode children all the way through\n while (curFromNodeChild) {\n fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n\n curFromNodeKey = getNodeKey(curFromNodeChild);\n\n var curFromNodeType = curFromNodeChild.nodeType;\n\n // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n var isCompatible = undefined;\n\n if (curFromNodeType === curToNodeChild.nodeType) {\n if (curFromNodeType === ELEMENT_NODE) {\n // Both nodes being compared are Element nodes\n\n if (curToNodeKey) {\n // The target node has a key so we want to match it up with the correct element\n // in the original DOM tree\n if (curToNodeKey !== curFromNodeKey) {\n // The current element in the original DOM tree does not have a matching key so\n // let's check our lookup to see if there is a matching element in the original\n // DOM tree\n if ((matchingFromEl = fromNodesLookup[curToNodeKey])) {\n if (fromNextSibling === matchingFromEl) {\n // Special case for single element removals. To avoid removing the original\n // DOM node out of the tree (since that can break CSS transitions, etc.),\n // we will instead discard the current node and wait until the next\n // iteration to properly match up the keyed target element with its matching\n // element in the original tree\n isCompatible = false;\n } else {\n // We found a matching keyed element somewhere in the original DOM tree.\n // Let's move the original DOM node into the current position and morph\n // it.\n\n // NOTE: We use insertBefore instead of replaceChild because we want to go through\n // the `removeNode()` function for the node that is being discarded so that\n // all lifecycle hooks are correctly invoked\n fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n\n // fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n\n curFromNodeChild = matchingFromEl;\n }\n } else {\n // The nodes are not compatible since the \"to\" node has a key and there\n // is no matching keyed node in the source tree\n isCompatible = false;\n }\n }\n } else if (curFromNodeKey) {\n // The original has a key\n isCompatible = false;\n }\n\n isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n if (isCompatible) {\n // We found compatible DOM elements so transform\n // the current \"from\" node to match the current\n // target DOM node.\n // MORPH\n morphEl(curFromNodeChild, curToNodeChild);\n }\n\n } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n // Both nodes being compared are Text or Comment nodes\n isCompatible = true;\n // Simply update nodeValue on the original node to\n // change the text value\n if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n }\n\n }\n }\n\n if (isCompatible) {\n // Advance both the \"to\" child and the \"from\" child since we found a match\n // Nothing else to do as we already recursively called morphChildren above\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n\n // No compatible match so remove the old node from the DOM and continue trying to find a\n // match in the original DOM. However, we only do this if the from node is not keyed\n // since it is possible that a keyed node might match up with a node somewhere else in the\n // target tree and we don't want to discard it just yet since it still might find a\n // home in the final DOM tree. After everything is done we will remove any keyed nodes\n // that didn't find a home\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n\n curFromNodeChild = fromNextSibling;\n } // END: while(curFromNodeChild) {}\n\n // If we got this far then we did not find a candidate match for\n // our \"to node\" and we exhausted all of the children \"from\"\n // nodes. Therefore, we will just append the current \"to\" node\n // to the end\n if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n fromEl.appendChild(matchingFromEl);\n // MORPH\n morphEl(matchingFromEl, curToNodeChild);\n } else {\n var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n if (onBeforeNodeAddedResult !== false) {\n if (onBeforeNodeAddedResult) {\n curToNodeChild = onBeforeNodeAddedResult;\n }\n\n if (curToNodeChild.actualize) {\n curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n }\n fromEl.appendChild(curToNodeChild);\n handleNodeAdded(curToNodeChild);\n }\n }\n\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n }\n\n cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n\n var specialElHandler = specialElHandlers[fromEl.nodeName];\n if (specialElHandler) {\n specialElHandler(fromEl, toEl);\n }\n } // END: morphChildren(...)\n\n var morphedNode = fromNode;\n var morphedNodeType = morphedNode.nodeType;\n var toNodeType = toNode.nodeType;\n\n if (!childrenOnly) {\n // Handle the case where we are given two DOM nodes that are not\n // compatible (e.g.
    --> or
    --> TEXT)\n if (morphedNodeType === ELEMENT_NODE) {\n if (toNodeType === ELEMENT_NODE) {\n if (!compareNodeNames(fromNode, toNode)) {\n onNodeDiscarded(fromNode);\n morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n }\n } else {\n // Going from an element node to a text node\n morphedNode = toNode;\n }\n } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) { // Text or comment node\n if (toNodeType === morphedNodeType) {\n if (morphedNode.nodeValue !== toNode.nodeValue) {\n morphedNode.nodeValue = toNode.nodeValue;\n }\n\n return morphedNode;\n } else {\n // Text node to something else\n morphedNode = toNode;\n }\n }\n }\n\n if (morphedNode === toNode) {\n // The \"to node\" was not compatible with the \"from node\" so we had to\n // toss out the \"from node\" and use the \"to node\"\n onNodeDiscarded(fromNode);\n } else {\n morphEl(morphedNode, toNode, childrenOnly);\n\n // We now need to loop over any keyed nodes that might need to be\n // removed. We only do the removal if we know that the keyed node\n // never found a match. When a keyed node is matched up we remove\n // it out of fromNodesLookup and we use fromNodesLookup to determine\n // if a keyed node has been matched up or not\n if (keyedRemovalList) {\n for (var i=0, len=keyedRemovalList.length; i= vnodeLength ? domLength : vnodeLength\n parentNode = dom[0].parentNode\n for (let i = 0; i < maxLength; i++) {\n let ele = idiff(dom[i], vnode[i], context, mountAll, componentRoot)\n ret.push(ele)\n if (i > domLength - 1) {\n parentNode.appendChild(ele)\n }\n }\n } else {\n vnode.forEach(function (item) {\n let ele = idiff(dom, item, context, mountAll, componentRoot)\n ret.push(ele)\n parent && parent.appendChild(ele)\n })\n }\n } else {\n if (isArray(dom)) {\n ret = idiff(dom[0], vnode, context, mountAll, componentRoot)\n } else {\n ret = idiff(dom, vnode, context, mountAll, componentRoot)\n }\n // append the element if its a new parent\n if (parent && ret.parentNode !== parent) parent.appendChild(ret)\n }\n\n // diffLevel being reduced to 0 means we're exiting the diff\n if (!--diffLevel) {\n hydrating = false\n // invoke queued componentDidMount lifecycle methods\n }\n\n return ret\n}\n\n/** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n if (dom && vnode && dom.props) {\n dom.props.children = vnode.props.children\n }\n let out = dom,\n prevSvgMode = isSvgMode\n\n // empty values (null, undefined, booleans) render as empty Text nodes\n if (vnode == null || typeof vnode === 'boolean') vnode = ''\n\n // Fast case: Strings & Numbers create/update Text nodes.\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n // update if it's already a Text node:\n if (\n dom &&\n dom.splitText !== undefined &&\n dom.parentNode &&\n (!dom._component || componentRoot)\n ) {\n /* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n if (dom.nodeValue != vnode) {\n dom.nodeValue = vnode\n }\n } else {\n // it wasn't a Text node: replace it with one and recycle the old Element\n out = document.createTextNode(vnode)\n if (dom) {\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom)\n recollectNodeTree(dom, true)\n }\n }\n\n out[ATTR_KEY] = true\n\n return out\n }\n\n // If the VNode represents a Component, perform a component diff:\n let vnodeName = vnode.type\n\n if (typeof vnodeName === 'function') {\n\n let isReact = true\n for (let key in options.mapping) {\n if (options.mapping[key] === vnodeName) {\n vnodeName = key\n vnode.type = key\n isReact = false\n break\n }\n }\n if (isReact) {\n const div = document.createElement('div')\n const cpt = ReactDom.render(vnode, div)\n div.firstChild._reactComponent = cpt\n return div.firstChild\n }\n }\n // Tracks entering and exiting SVG namespace when descending through the tree.\n isSvgMode =\n vnodeName === 'svg'\n ? true\n : vnodeName === 'foreignObject'\n ? false\n : isSvgMode\n\n // If there's no existing element or it's the wrong type, create a new one:\n vnodeName = String(vnodeName)\n if (!dom || !isNamedNode(dom, vnodeName)) {\n out = createNode(vnodeName, isSvgMode)\n\n if (dom) {\n // move children into the replacement node\n while (dom.firstChild) out.appendChild(dom.firstChild)\n\n // if the previous Element was mounted into the DOM, replace it inline\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom)\n\n // recycle the old element (skips non-Element node types)\n recollectNodeTree(dom, true)\n }\n }\n\n let fc = out.firstChild,\n props = out[ATTR_KEY],\n vchildren = vnode.props.children\n\n if (props == null) {\n props = out[ATTR_KEY] = {}\n for (let a = out.attributes, i = a.length; i--;)\n props[a[i].name] = a[i].value\n }\n if (vchildren && vchildren.length === undefined) {\n vchildren = [vchildren]\n }\n // Optimization: fast-path for elements containing a single TextNode:\n if (\n !hydrating &&\n vchildren &&\n vchildren.length === 1 &&\n typeof vchildren[0] === 'string' &&\n fc != null &&\n fc.splitText !== undefined &&\n fc.nextSibling == null\n ) {\n if (fc.nodeValue != vchildren[0]) {\n fc.nodeValue = vchildren[0]\n }\n }\n // otherwise, if there are existing or new children, diff them:\n else if ((vchildren && vchildren.length) || fc != null) {\n if (!(out.constructor.is == 'WeElement' && out.constructor.noSlot)) {\n innerDiffNode(\n out,\n vchildren,\n context,\n mountAll,\n hydrating || props.dangerouslySetInnerHTML != null\n )\n }\n }\n\n // Apply attributes/props from VNode to the DOM Element:\n diffAttributes(out, vnode.props, props, vnode.props.children)\n if (out.props) {\n out.props.children = vnode.props.children\n }\n // restore previous SVG mode: (in case we're exiting an SVG namespace)\n isSvgMode = prevSvgMode\n\n return out\n}\n\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n *\t@param {Element} dom\t\t\tElement whose children should be compared & mutated\n *\t@param {Array} vchildren\t\tArray of VNodes to compare to `dom.childNodes`\n *\t@param {Object} context\t\t\tImplicitly descendant context object (from most recent `getChildContext()`)\n *\t@param {Boolean} mountAll\n *\t@param {Boolean} isHydrating\tIf `true`, consumes externally created elements similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n let originalChildren = dom.childNodes,\n children = [],\n keyed = {},\n keyedLen = 0,\n min = 0,\n len = originalChildren.length,\n childrenLen = 0,\n vlen = vchildren ? vchildren.length : 0,\n j,\n c,\n f,\n vchild,\n child\n\n // Build up a map of keyed children and an Array of unkeyed children:\n if (len !== 0) {\n for (let i = 0; i < len; i++) {\n let child = originalChildren[i],\n props = child[ATTR_KEY],\n key =\n vlen && props\n ? child._component\n ? child._component.__key\n : props.key\n : null\n if (key != null) {\n keyedLen++\n keyed[key] = child\n } else if (\n props ||\n (child.splitText !== undefined\n ? isHydrating\n ? child.nodeValue.trim()\n : true\n : isHydrating)\n ) {\n children[childrenLen++] = child\n }\n }\n }\n\n if (vlen !== 0) {\n for (let i = 0; i < vlen; i++) {\n vchild = vchildren[i]\n child = null\n\n // attempt to find a node based on key matching\n let key = vchild.key\n if (key != null) {\n if (keyedLen && keyed[key] !== undefined) {\n child = keyed[key]\n keyed[key] = undefined\n keyedLen--\n }\n }\n // attempt to pluck a node of the same type from the existing children\n else if (!child && min < childrenLen) {\n for (j = min; j < childrenLen; j++) {\n if (\n children[j] !== undefined &&\n isSameNodeType((c = children[j]), vchild, isHydrating)\n ) {\n child = c\n children[j] = undefined\n if (j === childrenLen - 1) childrenLen--\n if (j === min) min++\n break\n }\n }\n }\n\n // morph the matched/found/created DOM child to match vchild (deep)\n let out = idiff(child, vchild, context, mountAll)\n if (out._reactComponent) {\n let diffIt = false\n for (let k = 0, cl = dom.childNodes.length; k < cl; k++) {\n if (dom.childNodes[i] && dom.childNodes[i]._reactComponent.constructor === out._reactComponent.constructor) {\n diffIt = true\n morphdom(dom.childNodes[i], out)\n break\n }\n }\n\n !diffIt && dom.appendChild(out)\n } else {\n f = originalChildren[i]\n if (out && out !== dom && out !== f) {\n if (f == null) {\n dom.appendChild(out)\n } else if (out === f.nextSibling) {\n removeNode(f)\n } else {\n dom.insertBefore(out, f)\n }\n }\n }\n }\n }\n\n // remove unused keyed children:\n if (keyedLen) {\n for (let i in keyed)\n if (keyed[i] !== undefined) recollectNodeTree(keyed[i], false)\n }\n\n // remove orphaned unkeyed children:\n while (min <= childrenLen) {\n if ((child = children[childrenLen--]) !== undefined)\n recollectNodeTree(child, false)\n }\n}\n\n/** Recursively recycle (or just unmount) a node and its descendants.\n *\t@param {Node} node\t\t\t\t\t\tDOM node to start unmount/removal from\n *\t@param {Boolean} [unmountOnly=false]\tIf `true`, only triggers unmount lifecycle, skips removal\n */\nexport function recollectNodeTree(node, unmountOnly) {\n // If the node's VNode had a ref function, invoke it with null here.\n // (this is part of the React spec, and smart for unsetting references)\n if (node[ATTR_KEY] != null && node[ATTR_KEY].ref) {\n if (typeof node[ATTR_KEY].ref === 'function') {\n node[ATTR_KEY].ref(null)\n } else if (node[ATTR_KEY].ref.current) {\n node[ATTR_KEY].ref.current = null\n }\n }\n\n if (unmountOnly === false || node[ATTR_KEY] == null) {\n removeNode(node)\n }\n\n removeChildren(node)\n}\n\n/** Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nexport function removeChildren(node) {\n node = node.lastChild\n while (node) {\n let next = node.previousSibling\n recollectNodeTree(node, true)\n node = next\n }\n}\n\n/** Apply differences in attributes from a VNode to the given DOM Element.\n *\t@param {Element} dom\t\tElement with attributes to diff `attrs` against\n *\t@param {Object} attrs\t\tThe desired end-state key-value attribute pairs\n *\t@param {Object} old\t\t\tCurrent/previous attributes (from previous VNode or element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old, children) {\n let name\n let update = false\n let isWeElement = dom.update\n let oldClone\n if (dom.receiveProps) {\n oldClone = Object.assign({}, old)\n }\n // remove attributes no longer present on the vnode by setting them to undefined\n for (name in old) {\n if (!(attrs && attrs[name] != null) && old[name] != null) {\n setAccessor(dom, name, old[name], (old[name] = undefined), isSvgMode)\n if (isWeElement) {\n delete dom.props[name]\n update = true\n }\n }\n }\n\n // add new & update changed attributes\n for (name in attrs) {\n if (isWeElement && typeof attrs[name] === 'object' && name !== 'ref') {\n if (name === 'style') {\n setAccessor(dom, name, old[name], (old[name] = attrs[name]), isSvgMode)\n }\n if (dom.receiveProps) {\n try {\n old[name] = JSON.parse(JSON.stringify(attrs[name]))\n } catch (e) {\n console.warn(\n 'When using receiveProps, you cannot pass prop of cyclic dependencies down.'\n )\n }\n }\n dom.props[npn(name)] = attrs[name]\n update = true\n } else if (\n name !== 'children' &&\n name !== 'innerHTML' &&\n (!(name in old) ||\n attrs[name] !==\n (name === 'value' || name === 'checked' ? dom[name] : old[name]))\n ) {\n setAccessor(dom, name, old[name], (old[name] = attrs[name]), isSvgMode)\n if (isWeElement) {\n dom.props[npn(name)] = attrs[name]\n update = true\n }\n }\n }\n\n if (isWeElement && dom.parentNode) {\n if (update || children.length > 0 || dom.store) {\n dom.receiveProps(dom.props, dom.data, oldClone)\n dom.update()\n }\n }\n}","/*!\n * https://github.com/Palindrom/JSONPatcherProxy\n * (c) 2017 Starcounter\n * MIT license\n */\n\n/** Class representing a JS Object observer */\nconst JSONPatcherProxy = (function() {\n /**\n * Deep clones your object and returns a new object.\n */\n function deepClone(obj) {\n switch (typeof obj) {\n case 'object':\n return JSON.parse(JSON.stringify(obj)) //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case 'undefined':\n return null //this is how JSON.stringify behaves for array items\n default:\n return obj //no need to clone primitives\n }\n }\n JSONPatcherProxy.deepClone = deepClone\n\n function escapePathComponent(str) {\n if (str.indexOf('/') == -1 && str.indexOf('~') == -1) return str\n return str.replace(/~/g, '~0').replace(/\\//g, '~1')\n }\n JSONPatcherProxy.escapePathComponent = escapePathComponent\n\n /**\n * Walk up the parenthood tree to get the path\n * @param {JSONPatcherProxy} instance\n * @param {Object} obj the object you need to find its path\n */\n function findObjectPath(instance, obj) {\n const pathComponents = []\n let parentAndPath = instance.parenthoodMap.get(obj)\n while (parentAndPath && parentAndPath.path) {\n // because we're walking up-tree, we need to use the array as a stack\n pathComponents.unshift(parentAndPath.path)\n parentAndPath = instance.parenthoodMap.get(parentAndPath.parent)\n }\n if (pathComponents.length) {\n const path = pathComponents.join('/')\n return '/' + path\n }\n return ''\n }\n /**\n * A callback to be used as th proxy set trap callback.\n * It updates parenthood map if needed, proxifies nested newly-added objects, calls default callbacks with the changes occurred.\n * @param {JSONPatcherProxy} instance JSONPatcherProxy instance\n * @param {Object} target the affected object\n * @param {String} key the effect property's name\n * @param {Any} newValue the value being set\n */\n function setTrap(instance, target, key, newValue) {\n const parentPath = findObjectPath(instance, target)\n\n const destinationPropKey = parentPath + '/' + escapePathComponent(key)\n\n if (instance.proxifiedObjectsMap.has(newValue)) {\n const newValueOriginalObject = instance.proxifiedObjectsMap.get(newValue)\n\n instance.parenthoodMap.set(newValueOriginalObject.originalObject, {\n parent: target,\n path: key\n })\n }\n /*\n mark already proxified values as inherited.\n rationale: proxy.arr.shift()\n will emit\n {op: replace, path: '/arr/1', value: arr_2}\n {op: remove, path: '/arr/2'}\n\n by default, the second operation would revoke the proxy, and this renders arr revoked.\n That's why we need to remember the proxies that are inherited.\n */\n const revokableInstance = instance.proxifiedObjectsMap.get(newValue)\n /*\n Why do we need to check instance.isProxifyingTreeNow?\n\n We need to make sure we mark revokables as inherited ONLY when we're observing,\n because throughout the first proxification, a sub-object is proxified and then assigned to\n its parent object. This assignment of a pre-proxified object can fool us into thinking\n that it's a proxified object moved around, while in fact it's the first assignment ever.\n\n Checking isProxifyingTreeNow ensures this is not happening in the first proxification,\n but in fact is is a proxified object moved around the tree\n */\n if (revokableInstance && !instance.isProxifyingTreeNow) {\n revokableInstance.inherited = true\n }\n\n // if the new value is an object, make sure to watch it\n if (\n newValue &&\n typeof newValue == 'object' &&\n !instance.proxifiedObjectsMap.has(newValue)\n ) {\n instance.parenthoodMap.set(newValue, {\n parent: target,\n path: key\n })\n newValue = instance._proxifyObjectTreeRecursively(target, newValue, key)\n }\n // let's start with this operation, and may or may not update it later\n const operation = {\n op: 'remove',\n path: destinationPropKey\n }\n if (typeof newValue == 'undefined') {\n // applying De Morgan's laws would be a tad faster, but less readable\n if (!Array.isArray(target) && !target.hasOwnProperty(key)) {\n // `undefined` is being set to an already undefined value, keep silent\n return Reflect.set(target, key, newValue)\n }\n // when array element is set to `undefined`, should generate replace to `null`\n if (Array.isArray(target)) {\n // undefined array elements are JSON.stringified to `null`\n ;(operation.op = 'replace'), (operation.value = null)\n }\n const oldValue = instance.proxifiedObjectsMap.get(target[key])\n // was the deleted a proxified object?\n if (oldValue) {\n instance.parenthoodMap.delete(target[key])\n instance.disableTrapsForProxy(oldValue)\n instance.proxifiedObjectsMap.delete(oldValue)\n }\n } else {\n if (Array.isArray(target) && !Number.isInteger(+key.toString())) {\n /* array props (as opposed to indices) don't emit any patches, to avoid needless `length` patches */\n if (key != 'length') {\n console.warn(\n 'JSONPatcherProxy noticed a non-integer prop was set for an array. This will not emit a patch'\n )\n }\n return Reflect.set(target, key, newValue)\n }\n operation.op = 'add'\n if (target.hasOwnProperty(key)) {\n if (typeof target[key] !== 'undefined' || Array.isArray(target)) {\n operation.op = 'replace' // setting `undefined` array elements is a `replace` op\n }\n }\n operation.value = newValue\n }\n operation.oldValue = target[key]\n const reflectionResult = Reflect.set(target, key, newValue)\n instance.defaultCallback(operation)\n return reflectionResult\n }\n /**\n * A callback to be used as th proxy delete trap callback.\n * It updates parenthood map if needed, calls default callbacks with the changes occurred.\n * @param {JSONPatcherProxy} instance JSONPatcherProxy instance\n * @param {Object} target the effected object\n * @param {String} key the effected property's name\n */\n function deleteTrap(instance, target, key) {\n if (typeof target[key] !== 'undefined') {\n const parentPath = findObjectPath(instance, target)\n const destinationPropKey = parentPath + '/' + escapePathComponent(key)\n\n const revokableProxyInstance = instance.proxifiedObjectsMap.get(\n target[key]\n )\n\n if (revokableProxyInstance) {\n if (revokableProxyInstance.inherited) {\n /*\n this is an inherited proxy (an already proxified object that was moved around),\n we shouldn't revoke it, because even though it was removed from path1, it is still used in path2.\n And we know that because we mark moved proxies with `inherited` flag when we move them\n\n it is a good idea to remove this flag if we come across it here, in deleteProperty trap.\n We DO want to revoke the proxy if it was removed again.\n */\n revokableProxyInstance.inherited = false\n } else {\n instance.parenthoodMap.delete(revokableProxyInstance.originalObject)\n instance.disableTrapsForProxy(revokableProxyInstance)\n instance.proxifiedObjectsMap.delete(target[key])\n }\n }\n const reflectionResult = Reflect.deleteProperty(target, key)\n\n instance.defaultCallback({\n op: 'remove',\n path: destinationPropKey\n })\n\n return reflectionResult\n }\n }\n /* pre-define resume and pause functions to enhance constructors performance */\n function resume() {\n this.defaultCallback = operation => {\n this.isRecording && this.patches.push(operation)\n this.userCallback && this.userCallback(operation)\n }\n this.isObserving = true\n }\n function pause() {\n this.defaultCallback = () => {}\n this.isObserving = false\n }\n /**\n * Creates an instance of JSONPatcherProxy around your object of interest `root`.\n * @param {Object|Array} root - the object you want to wrap\n * @param {Boolean} [showDetachedWarning = true] - whether to log a warning when a detached sub-object is modified @see {@link https://github.com/Palindrom/JSONPatcherProxy#detached-objects}\n * @returns {JSONPatcherProxy}\n * @constructor\n */\n function JSONPatcherProxy(root, showDetachedWarning) {\n this.isProxifyingTreeNow = false\n this.isObserving = false\n this.proxifiedObjectsMap = new Map()\n this.parenthoodMap = new Map()\n // default to true\n if (typeof showDetachedWarning !== 'boolean') {\n showDetachedWarning = true\n }\n\n this.showDetachedWarning = showDetachedWarning\n this.originalObject = root\n this.cachedProxy = null\n this.isRecording = false\n this.userCallback\n /**\n * @memberof JSONPatcherProxy\n * Restores callback back to the original one provided to `observe`.\n */\n this.resume = resume.bind(this)\n /**\n * @memberof JSONPatcherProxy\n * Replaces your callback with a noop function.\n */\n this.pause = pause.bind(this)\n }\n\n JSONPatcherProxy.prototype.generateProxyAtPath = function(parent, obj, path) {\n if (!obj) {\n return obj\n }\n const traps = {\n set: (target, key, value, receiver) =>\n setTrap(this, target, key, value, receiver),\n deleteProperty: (target, key) => deleteTrap(this, target, key)\n }\n const revocableInstance = Proxy.revocable(obj, traps)\n // cache traps object to disable them later.\n revocableInstance.trapsInstance = traps\n revocableInstance.originalObject = obj\n\n /* keeping track of object's parent and path */\n\n this.parenthoodMap.set(obj, { parent, path })\n\n /* keeping track of all the proxies to be able to revoke them later */\n this.proxifiedObjectsMap.set(revocableInstance.proxy, revocableInstance)\n return revocableInstance.proxy\n }\n // grab tree's leaves one by one, encapsulate them into a proxy and return\n JSONPatcherProxy.prototype._proxifyObjectTreeRecursively = function(\n parent,\n root,\n path\n ) {\n for (let key in root) {\n if (root.hasOwnProperty(key)) {\n if (root[key] instanceof Object) {\n root[key] = this._proxifyObjectTreeRecursively(\n root,\n root[key],\n escapePathComponent(key)\n )\n }\n }\n }\n return this.generateProxyAtPath(parent, root, path)\n }\n // this function is for aesthetic purposes\n JSONPatcherProxy.prototype.proxifyObjectTree = function(root) {\n /*\n while proxyifying object tree,\n the proxyifying operation itself is being\n recorded, which in an unwanted behavior,\n that's why we disable recording through this\n initial process;\n */\n this.pause()\n this.isProxifyingTreeNow = true\n const proxifiedObject = this._proxifyObjectTreeRecursively(\n undefined,\n root,\n ''\n )\n /* OK you can record now */\n this.isProxifyingTreeNow = false\n this.resume()\n return proxifiedObject\n }\n /**\n * Turns a proxified object into a forward-proxy object; doesn't emit any patches anymore, like a normal object\n * @param {Proxy} proxy - The target proxy object\n */\n JSONPatcherProxy.prototype.disableTrapsForProxy = function(\n revokableProxyInstance\n ) {\n if (this.showDetachedWarning) {\n const message =\n \"You're accessing an object that is detached from the observedObject tree, see https://github.com/Palindrom/JSONPatcherProxy#detached-objects\"\n\n revokableProxyInstance.trapsInstance.set = (\n targetObject,\n propKey,\n newValue\n ) => {\n console.warn(message)\n return Reflect.set(targetObject, propKey, newValue)\n }\n revokableProxyInstance.trapsInstance.set = (\n targetObject,\n propKey,\n newValue\n ) => {\n console.warn(message)\n return Reflect.set(targetObject, propKey, newValue)\n }\n revokableProxyInstance.trapsInstance.deleteProperty = (\n targetObject,\n propKey\n ) => {\n return Reflect.deleteProperty(targetObject, propKey)\n }\n } else {\n delete revokableProxyInstance.trapsInstance.set\n delete revokableProxyInstance.trapsInstance.get\n delete revokableProxyInstance.trapsInstance.deleteProperty\n }\n }\n /**\n * Proxifies the object that was passed in the constructor and returns a proxified mirror of it. Even though both parameters are options. You need to pass at least one of them.\n * @param {Boolean} [record] - whether to record object changes to a later-retrievable patches array.\n * @param {Function} [callback] - this will be synchronously called with every object change with a single `patch` as the only parameter.\n */\n JSONPatcherProxy.prototype.observe = function(record, callback) {\n if (!record && !callback) {\n throw new Error('You need to either record changes or pass a callback')\n }\n this.isRecording = record\n this.userCallback = callback\n /*\n I moved it here to remove it from `unobserve`,\n this will also make the constructor faster, why initiate\n the array before they decide to actually observe with recording?\n They might need to use only a callback.\n */\n if (record) this.patches = []\n this.cachedProxy = this.proxifyObjectTree(this.originalObject)\n return this.cachedProxy\n }\n /**\n * If the observed is set to record, it will synchronously return all the patches and empties patches array.\n */\n JSONPatcherProxy.prototype.generate = function() {\n if (!this.isRecording) {\n throw new Error('You should set record to true to get patches later')\n }\n return this.patches.splice(0, this.patches.length)\n }\n /**\n * Revokes all proxies rendering the observed object useless and good for garbage collection @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable}\n */\n JSONPatcherProxy.prototype.revoke = function() {\n this.proxifiedObjectsMap.forEach(el => {\n el.revoke()\n })\n }\n /**\n * Disables all proxies' traps, turning the observed object into a forward-proxy object, like a normal object that you can modify silently.\n */\n JSONPatcherProxy.prototype.disableTraps = function() {\n this.proxifiedObjectsMap.forEach(this.disableTrapsForProxy, this)\n }\n return JSONPatcherProxy\n})()\n\nexport default JSONPatcherProxy\n","const callbacks = []\nconst nextTickCallback = []\n\nexport function tick(fn, scope) {\n callbacks.push({ fn, scope })\n}\n\nexport function fireTick() {\n callbacks.forEach(item => {\n item.fn.call(item.scope)\n })\n\n nextTickCallback.forEach(nextItem => {\n nextItem.fn.call(nextItem.scope)\n })\n nextTickCallback.length = 0\n}\n\nexport function nextTick(fn, scope) {\n nextTickCallback.push({ fn, scope })\n}\n","import JSONProxy from './proxy'\nimport { fireTick } from './tick'\n\nexport function observe(target) {\n target.observe = true\n}\n\nexport function proxyUpdate(ele) {\n let timeout = null\n ele.data = new JSONProxy(ele.data).observe(false, () => {\n if (ele._willUpdate) {\n return\n }\n if (ele.constructor.mergeUpdate) {\n clearTimeout(timeout)\n\n timeout = setTimeout(() => {\n ele.update()\n fireTick()\n }, 0)\n } else {\n ele.update()\n fireTick()\n }\n })\n}\n","import WeElement from './we-element'\nimport { cssToDom } from './util'\nimport options from './options'\n\nconst OBJECTTYPE = '[object Object]'\nconst ARRAYTYPE = '[object Array]'\n\nexport function define(name, ctor) {\n if (ctor.is === 'WeElement') {\n customElements.define(name, ctor)\n options.mapping[name] = ctor\n if (ctor.use) {\n ctor.updatePath = getPath(ctor.use)\n } else if (ctor.data) { //Compatible with older versions\n ctor.updatePath = getUpdatePath(ctor.data)\n }\n } else {\n class Element extends WeElement {\n _useId = 0\n\n _useMap = {}\n\n _preCss = null\n\n render(props, data) {\n return ctor.call(this, props, data)\n }\n\n beforeRender() {\n this._useId = 0\n }\n\n useCss(css) {\n if (css === this._preCss) {\n return\n }\n this._preCss = css\n const style = this.shadowRoot.querySelector('style')\n style && this.shadowRoot.removeChild(style)\n this.shadowRoot.appendChild(cssToDom(css))\n }\n\n useData(data) {\n return this.use({ data: data })\n }\n\n use(option) {\n this._useId++\n const updater = newValue => {\n const item = this._useMap[updater.id]\n\n item.data = newValue\n\n this.update()\n item.effect && item.effect()\n }\n\n updater.id = this._useId\n if (!this._isInstalled) {\n this._useMap[this._useId] = option\n return [option.data, updater]\n }\n\n return [this._useMap[this._useId].data, updater]\n }\n\n installed() {\n this._isInstalled = true\n }\n }\n customElements.define(name, Element)\n }\n}\n\nexport function getPath(obj) {\n if (Object.prototype.toString.call(obj) === '[object Array]') {\n const result = {}\n obj.forEach(item => {\n if (typeof item === 'string') {\n result[item] = true\n } else {\n const tempPath = item[Object.keys(item)[0]]\n if (typeof tempPath === 'string') {\n result[tempPath] = true\n } else {\n if(typeof tempPath[0] === 'string'){\n result[tempPath[0]] = true\n }else{\n tempPath[0].forEach(path => result[path] = true)\n }\n }\n }\n })\n return result\n } else {\n return getUpdatePath(obj)\n }\n}\n\nexport function getUpdatePath(data) {\n const result = {}\n dataToPath(data, result)\n return result\n}\n\nfunction dataToPath(data, result) {\n Object.keys(data).forEach(key => {\n result[key] = true\n const type = Object.prototype.toString.call(data[key])\n if (type === OBJECTTYPE) {\n _objToPath(data[key], key, result)\n } else if (type === ARRAYTYPE) {\n _arrayToPath(data[key], key, result)\n }\n })\n}\n\nfunction _objToPath(data, path, result) {\n Object.keys(data).forEach(key => {\n result[path + '.' + key] = true\n delete result[path]\n const type = Object.prototype.toString.call(data[key])\n if (type === OBJECTTYPE) {\n _objToPath(data[key], path + '.' + key, result)\n } else if (type === ARRAYTYPE) {\n _arrayToPath(data[key], path + '.' + key, result)\n }\n })\n}\n\nfunction _arrayToPath(data, path, result) {\n data.forEach((item, index) => {\n result[path + '[' + index + ']'] = true\n delete result[path]\n const type = Object.prototype.toString.call(item)\n if (type === OBJECTTYPE) {\n _objToPath(item, path + '[' + index + ']', result)\n } else if (type === ARRAYTYPE) {\n _arrayToPath(item, path + '[' + index + ']', result)\n }\n })\n}\n","var reactEvents = [\"onAbort\", \"onAnimationCancel\", \"onAnimationEnd\", \"onAnimationIteration\", \"onAuxClick\", \"onBlur\",\n \"onChange\", \"onClick\", \"onClose\", \"onContextMenu\", \"onDoubleClick\", \"onError\", \"onFocus\", \"onGotPointerCapture\",\n \"onInput\", \"onKeyDown\", \"onKeyPress\", \"onKeyUp\", \"onLoad\", \"onLoadEnd\", \"onLoadStart\", \"onLostPointerCapture\",\n \"onMouseDown\", \"onMouseMove\", \"onMouseOut\", \"onMouseOver\", \"onMouseUp\", \"onPointerCancel\", \"onPointerDown\",\n \"onPointerEnter\", \"onPointerLeave\", \"onPointerMove\", \"onPointerOut\", \"onPointerOver\", \"onPointerUp\", \"onReset\",\n \"onResize\", \"onScroll\", \"onSelect\", \"onSelectionChange\", \"onSelectStart\", \"onSubmit\", \"onTouchCancel\",\n \"onTouchMove\", \"onTouchStart\", \"onTransitionCancel\", \"onTransitionEnd\", \"onDrag\", \"onDragEnd\", \"onDragEnter\",\n \"onDragExit\", \"onDragLeave\", \"onDragOver\", \"onDragStart\", \"onDrop\", \"onFocusOut\"];\n\nvar divergentNativeEvents = {\n onDoubleClick: 'dblclick'\n};\n\nvar mimickedReactEvents = {\n onInput: 'onChange',\n onFocusOut: 'onBlur',\n onSelectionChange: 'onSelect'\n};\n\nexport function retargetEvents(shadowRoot) {\n\n reactEvents.forEach(function (reactEventName) {\n\n var nativeEventName = getNativeEventName(reactEventName);\n\n shadowRoot.addEventListener(nativeEventName, function (event) {\n \n var path = event.path || (event.composedPath && event.composedPath()) || composedPath(event.target);\n\n for (var i = 0; i < path.length; i++) {\n\n var el = path[i];\n var reactComponent = findReactComponent(el);\n var props = findReactProps(reactComponent);\n\n if (reactComponent && props) {\n dispatchEvent(event, reactEventName, props);\n }\n\n if (reactComponent && props && mimickedReactEvents[reactEventName]) {\n dispatchEvent(event, mimickedReactEvents[reactEventName], props);\n }\n\n if (event.cancelBubble) { \n break; \n } \n\n if (el === shadowRoot) {\n break;\n }\n }\n }, false);\n });\n};\n\nfunction findReactComponent(item) {\n for (var key in item) {\n if (item.hasOwnProperty(key) && key.indexOf('_reactInternal') !== -1) {\n return item[key];\n }\n }\n}\n\nfunction findReactProps(component) {\n if (!component) return undefined;\n if (component.memoizedProps) return component.memoizedProps; // React 16 Fiber\n if (component._currentElement && component._currentElement.props) return component._currentElement.props; // React <=15\n\n}\n\nfunction dispatchEvent(event, eventType, componentProps) {\n if (componentProps[eventType]) {\n componentProps[eventType](event);\n }\n}\n\nfunction getNativeEventName(reactEventName) {\n if (divergentNativeEvents[reactEventName]) {\n return divergentNativeEvents[reactEventName];\n }\n return reactEventName.replace(/^on/, '').toLowerCase();\n}\n\nfunction composedPath(el) {\n var path = [];\n while (el) {\n path.push(el);\n if (el.tagName === 'HTML') {\n path.push(document);\n path.push(window);\n return path;\n }\n el = el.parentElement;\n }\n}\n","import { cssToDom, nProps, isArray, getUse } from './util'\nimport { diff } from './vdom/diff'\nimport options from './options'\nimport { proxyUpdate } from './observe'\nimport { getPath } from './define'\nimport { retargetEvents } from './event'\n\nlet id = 0\n\nexport default class WeElement extends HTMLElement {\n static is = 'WeElement'\n\n constructor() {\n super()\n this.props = Object.assign(\n nProps(this.constructor.props),\n this.constructor.defaultProps\n )\n this.elementId = id++\n this.data = {}\n }\n\n connectedCallback() {\n let p = this.parentNode\n while (p && !this.store) {\n this.store = p.store\n p = p.parentNode || p.host\n }\n if (this.store) {\n this.store.instances.push(this)\n\t\t}\n\n\t\tif(this.initUse){\n\t\t\tconst use = this.initUse()\n\t\t\tthis._updatePath = getPath(use)\n\t\t\tthis.use = getUse(this.store.data, use)\n\t\t}else{\n\t\t\tthis.constructor.use && (this.use = getUse(this.store.data, this.constructor.use))\n\t\t}\n this.beforeInstall()\n !this._isInstalled && this.install()\n this.afterInstall()\n let shadowRoot\n if (!this.shadowRoot) {\n shadowRoot = this.attachShadow({\n mode: 'open'\n })\n } else {\n shadowRoot = this.shadowRoot\n let fc\n while ((fc = shadowRoot.firstChild)) {\n shadowRoot.removeChild(fc)\n }\n }\n if (this.constructor.css) {\n shadowRoot.appendChild(cssToDom(this.constructor.css))\n } else if (this.css) {\n shadowRoot.appendChild(cssToDom(typeof this.css === 'function' ? this.css() : this.css))\n }\n retargetEvents(shadowRoot)\n !this._isInstalled && this.beforeRender()\n options.afterInstall && options.afterInstall(this)\n if (this.constructor.observe) {\n this.beforeObserve()\n proxyUpdate(this)\n this.observed()\n }\n this._host = diff(\n null,\n this.render(this.props, this.data, this.store),\n {},\n false,\n null,\n false\n )\n this.rendered()\n if (isArray(this._host)) {\n this._host.forEach(function(item) {\n shadowRoot.appendChild(item)\n })\n } else {\n shadowRoot.appendChild(this._host)\n }\n !this._isInstalled && this.installed()\n this._isInstalled = true\n }\n\n disconnectedCallback() {\n this.uninstall()\n this._isInstalled = false\n if (this.store) {\n for (let i = 0, len = this.store.instances.length; i < len; i++) {\n if (this.store.instances[i] === this) {\n this.store.instances.splice(i, 1)\n break\n }\n }\n }\n }\n\n update() {\n this._willUpdate = true\n this.beforeUpdate()\n this.beforeRender()\n this._host = diff(\n this._host,\n this.render(this.props, this.data, this.store),\n null,\n null,\n this.shadowRoot\n )\n this._willUpdate = false\n this.updated()\n }\n\n fire(name, data) {\n this.dispatchEvent(new CustomEvent(name.toLowerCase(), { detail: data }))\n }\n\n beforeInstall() {}\n\n install() {}\n\n afterInstall() {}\n\n installed() {}\n\n uninstall() {}\n\n beforeUpdate() {}\n\n updated() {}\n\n beforeRender() {}\n\n rendered() {}\n\n receiveProps() {}\n\n beforeObserve() {}\n\n observed() {}\n}\n","import { diff } from './vdom/diff'\nimport JSONProxy from './proxy'\nimport { getUse } from './util'\n\nexport function render(vnode, parent, store) {\n parent = typeof parent === 'string' ? document.querySelector(parent) : parent\n if (store) {\n store.instances = []\n extendStoreUpate(store)\n\n store.data = new JSONProxy(store.data).observe(false, function(patch) {\n\t\t\tconst patchs = {}\n if (patch.op === 'remove') {\n // fix arr splice\n const kv = getArrayPatch(patch.path, store)\n patchs[kv.k] = kv.v\n\n\t\t\t\tupdate(patchs, store)\n\n } else {\n const key = fixPath(patch.path)\n patchs[key] = patch.value\n\n\t\t\t\tupdate(patchs, store)\n\n }\n })\n parent.store = store\n }\n return diff(null, vnode, {}, false, parent, false)\n}\n\nfunction update(patch, store) {\n store.update(patch)\n}\n\nfunction extendStoreUpate(store) {\n store.update = function(patch) {\n const updateAll = matchGlobalData(this.globalData, patch)\n\n if (Object.keys(patch).length > 0) {\n this.instances.forEach(instance => {\n if (\n updateAll ||\n this.updateAll ||\n (instance.constructor.updatePath &&\n needUpdate(patch, instance.constructor.updatePath)) ||(\n\t\t\t\t\t\t\tinstance._updatePath && needUpdate(patch, instance._updatePath))\n ) {\n\t\t\t\t\t//update this.use\n\t\t\t\t\tif(instance.constructor.use){\n\t\t\t\t\t\tinstance.use = getUse(store.data, instance.constructor.use)\n\t\t\t\t\t} else if(instance.initUse){\n\t\t\t\t\t\tinstance.use = getUse(store.data, instance.initUse())\n\t\t\t\t\t}\n\n instance.update()\n }\n })\n this.onChange && this.onChange(patch)\n }\n }\n}\n\nexport function matchGlobalData(globalData, diffResult) {\n if (!globalData) return false\n for (let keyA in diffResult) {\n if (globalData.indexOf(keyA) > -1) {\n return true\n }\n for (let i = 0, len = globalData.length; i < len; i++) {\n if (includePath(keyA, globalData[i])) {\n return true\n }\n }\n }\n return false\n}\n\nexport function needUpdate(diffResult, updatePath) {\n for (let keyA in diffResult) {\n if (updatePath[keyA]) {\n return true\n }\n for (let keyB in updatePath) {\n if (includePath(keyA, keyB)) {\n return true\n }\n }\n }\n return false\n}\n\nfunction includePath(pathA, pathB) {\n if (pathA.indexOf(pathB) === 0) {\n const next = pathA.substr(pathB.length, 1)\n if (next === '[' || next === '.') {\n return true\n }\n }\n return false\n}\n\nexport function fixPath(path) {\n let mpPath = ''\n const arr = path.replace('/', '').split('/')\n arr.forEach((item, index) => {\n if (index) {\n if (isNaN(Number(item))) {\n mpPath += '.' + item\n } else {\n mpPath += '[' + item + ']'\n }\n } else {\n mpPath += item\n }\n })\n return mpPath\n}\n\nfunction getArrayPatch(path, store) {\n const arr = path.replace('/', '').split('/')\n let current = store.data[arr[0]]\n for (let i = 1, len = arr.length; i < len - 1; i++) {\n current = current[arr[i]]\n }\n return { k: fixArrPath(path), v: current }\n}\n\nfunction fixArrPath(path) {\n let mpPath = ''\n const arr = path.replace('/', '').split('/')\n const len = arr.length\n arr.forEach((item, index) => {\n if (index < len - 1) {\n if (index) {\n if (isNaN(Number(item))) {\n mpPath += '.' + item\n } else {\n mpPath += '[' + item + ']'\n }\n } else {\n mpPath += item\n }\n }\n })\n return mpPath\n}\n","import { define } from './define'\n\nexport function tag(name, pure) {\n return function(target) {\n target.pure = pure\n define(name, target)\n }\n}\n","export function getHost(ele) {\n let p = ele.parentNode\n while (p) {\n if (p.host) {\n return p.host\n } else if (p.shadowRoot && p.shadowRoot.host) {\n return p.shadowRoot.host\n } else {\n p = p.parentNode\n }\n }\n}\n","export function rpx(str) {\n return str.replace(/([1-9]\\d*|0)(\\.\\d*)*rpx/g, (a, b) => {\n return (window.innerWidth * Number(b)) / 750 + 'px'\n })\n}\n","import WeElement from './we-element'\n\nexport default class ModelView extends WeElement {\n static observe = true\n\n static mergeUpdate = false\n\n beforeInstall() {\n this.data = this.vm.data\n }\n\n observed() {\n this.vm.data = this.data\n }\n}\n","/**\n * classNames based on https://github.com/JedWatson/classnames\n * by Jed Watson\n * Licensed under the MIT License\n * https://github.com/JedWatson/classnames/blob/master/LICENSE\n * modified by dntzhang\n */\n\nvar hasOwn = {}.hasOwnProperty\n\nexport function classNames() {\n var classes = []\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]\n if (!arg) continue\n\n var argType = typeof arg\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg)\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg)\n if (inner) {\n classes.push(inner)\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key)\n }\n }\n }\n }\n\n return classes.join(' ')\n}\n\nexport function extractClass() {\n const [props, ...args] = Array.prototype.slice.call(arguments, 0)\n if (props.class) {\n args.unshift(props.class)\n delete props.class\n } else if (props.className) {\n args.unshift(props.className)\n delete props.className\n }\n if (args.length > 0) {\n return { class: classNames.apply(null, args) }\n }\n}\n","var n=function(t,r,u,e){for(var p=1;p\"===t?(a(),u=1):u&&(\"=\"===t?(u=4,r=e,e=\"\"):\"/\"===t?(a(),3===u&&(s=s[0]),u=s,(s=s[0]).push(u,4),u=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(a(),u=2):e+=t)}return a(),s},r=\"function\"==typeof Map,u=r?new Map:{},e=r?function(n){var r=u.get(n);return r||u.set(n,r=t(n)),r}:function(n){for(var r=\"\",e=0;e1?r:r[0]}\n","\nimport options from './options'\nimport WeElement from './we-element'\nimport { render } from './render'\nimport { define } from './define'\nimport { tag } from './tag'\nimport { observe } from './observe'\nimport { getHost } from './get-host'\nimport { rpx } from './rpx'\nimport { tick, nextTick } from './tick'\nimport ModelView from './model-view'\nimport { classNames, extractClass } from './class'\nimport htm from 'htm'\nimport React from 'react'\n\nconst html = htm.bind(h)\nconst h = React.createElement\nconst createElement = React.createElement\nconst cloneElement = React.cloneElement\n\nfunction createRef() {\n return {}\n}\n\nconst Component = WeElement\nconst defineElement = define\n\nconst omi = {\n tag,\n WeElement,\n Component,\n render,\n h,\n createElement,\n options,\n define,\n observe,\n cloneElement,\n getHost,\n rpx,\n tick,\n nextTick,\n ModelView,\n defineElement,\n classNames,\n extractClass,\n createRef,\n html,\n htm\n}\n\noptions.root.Omi = omi\noptions.root.omi = omi\noptions.root.Omi.version = '6.1.1'\n\nexport default omi\n\nexport {\n tag,\n WeElement,\n Component,\n render,\n h,\n createElement,\n options,\n define,\n observe,\n cloneElement,\n getHost,\n rpx,\n tick,\n nextTick,\n ModelView,\n defineElement,\n classNames,\n extractClass,\n createRef,\n html,\n htm\n}\n","// List of valid entities\n//\n// Generate with ./support/entities.js script\n//\n'use strict';\n\n/*eslint quotes:0*/\nmodule.exports = {\n \"Aacute\":\"\\u00C1\",\n \"aacute\":\"\\u00E1\",\n \"Abreve\":\"\\u0102\",\n \"abreve\":\"\\u0103\",\n \"ac\":\"\\u223E\",\n \"acd\":\"\\u223F\",\n \"acE\":\"\\u223E\\u0333\",\n \"Acirc\":\"\\u00C2\",\n \"acirc\":\"\\u00E2\",\n \"acute\":\"\\u00B4\",\n \"Acy\":\"\\u0410\",\n \"acy\":\"\\u0430\",\n \"AElig\":\"\\u00C6\",\n \"aelig\":\"\\u00E6\",\n \"af\":\"\\u2061\",\n \"Afr\":\"\\uD835\\uDD04\",\n \"afr\":\"\\uD835\\uDD1E\",\n \"Agrave\":\"\\u00C0\",\n \"agrave\":\"\\u00E0\",\n \"alefsym\":\"\\u2135\",\n \"aleph\":\"\\u2135\",\n \"Alpha\":\"\\u0391\",\n \"alpha\":\"\\u03B1\",\n \"Amacr\":\"\\u0100\",\n \"amacr\":\"\\u0101\",\n \"amalg\":\"\\u2A3F\",\n \"AMP\":\"\\u0026\",\n \"amp\":\"\\u0026\",\n \"And\":\"\\u2A53\",\n \"and\":\"\\u2227\",\n \"andand\":\"\\u2A55\",\n \"andd\":\"\\u2A5C\",\n \"andslope\":\"\\u2A58\",\n \"andv\":\"\\u2A5A\",\n \"ang\":\"\\u2220\",\n \"ange\":\"\\u29A4\",\n \"angle\":\"\\u2220\",\n \"angmsd\":\"\\u2221\",\n \"angmsdaa\":\"\\u29A8\",\n \"angmsdab\":\"\\u29A9\",\n \"angmsdac\":\"\\u29AA\",\n \"angmsdad\":\"\\u29AB\",\n \"angmsdae\":\"\\u29AC\",\n \"angmsdaf\":\"\\u29AD\",\n \"angmsdag\":\"\\u29AE\",\n \"angmsdah\":\"\\u29AF\",\n \"angrt\":\"\\u221F\",\n \"angrtvb\":\"\\u22BE\",\n \"angrtvbd\":\"\\u299D\",\n \"angsph\":\"\\u2222\",\n \"angst\":\"\\u00C5\",\n \"angzarr\":\"\\u237C\",\n \"Aogon\":\"\\u0104\",\n \"aogon\":\"\\u0105\",\n \"Aopf\":\"\\uD835\\uDD38\",\n \"aopf\":\"\\uD835\\uDD52\",\n \"ap\":\"\\u2248\",\n \"apacir\":\"\\u2A6F\",\n \"apE\":\"\\u2A70\",\n \"ape\":\"\\u224A\",\n \"apid\":\"\\u224B\",\n \"apos\":\"\\u0027\",\n \"ApplyFunction\":\"\\u2061\",\n \"approx\":\"\\u2248\",\n \"approxeq\":\"\\u224A\",\n \"Aring\":\"\\u00C5\",\n \"aring\":\"\\u00E5\",\n \"Ascr\":\"\\uD835\\uDC9C\",\n \"ascr\":\"\\uD835\\uDCB6\",\n \"Assign\":\"\\u2254\",\n \"ast\":\"\\u002A\",\n \"asymp\":\"\\u2248\",\n \"asympeq\":\"\\u224D\",\n \"Atilde\":\"\\u00C3\",\n \"atilde\":\"\\u00E3\",\n \"Auml\":\"\\u00C4\",\n \"auml\":\"\\u00E4\",\n \"awconint\":\"\\u2233\",\n \"awint\":\"\\u2A11\",\n \"backcong\":\"\\u224C\",\n \"backepsilon\":\"\\u03F6\",\n \"backprime\":\"\\u2035\",\n \"backsim\":\"\\u223D\",\n \"backsimeq\":\"\\u22CD\",\n \"Backslash\":\"\\u2216\",\n \"Barv\":\"\\u2AE7\",\n \"barvee\":\"\\u22BD\",\n \"Barwed\":\"\\u2306\",\n \"barwed\":\"\\u2305\",\n \"barwedge\":\"\\u2305\",\n \"bbrk\":\"\\u23B5\",\n \"bbrktbrk\":\"\\u23B6\",\n \"bcong\":\"\\u224C\",\n \"Bcy\":\"\\u0411\",\n \"bcy\":\"\\u0431\",\n \"bdquo\":\"\\u201E\",\n \"becaus\":\"\\u2235\",\n \"Because\":\"\\u2235\",\n \"because\":\"\\u2235\",\n \"bemptyv\":\"\\u29B0\",\n \"bepsi\":\"\\u03F6\",\n \"bernou\":\"\\u212C\",\n \"Bernoullis\":\"\\u212C\",\n \"Beta\":\"\\u0392\",\n \"beta\":\"\\u03B2\",\n \"beth\":\"\\u2136\",\n \"between\":\"\\u226C\",\n \"Bfr\":\"\\uD835\\uDD05\",\n \"bfr\":\"\\uD835\\uDD1F\",\n \"bigcap\":\"\\u22C2\",\n \"bigcirc\":\"\\u25EF\",\n \"bigcup\":\"\\u22C3\",\n \"bigodot\":\"\\u2A00\",\n \"bigoplus\":\"\\u2A01\",\n \"bigotimes\":\"\\u2A02\",\n \"bigsqcup\":\"\\u2A06\",\n \"bigstar\":\"\\u2605\",\n \"bigtriangledown\":\"\\u25BD\",\n \"bigtriangleup\":\"\\u25B3\",\n \"biguplus\":\"\\u2A04\",\n \"bigvee\":\"\\u22C1\",\n \"bigwedge\":\"\\u22C0\",\n \"bkarow\":\"\\u290D\",\n \"blacklozenge\":\"\\u29EB\",\n \"blacksquare\":\"\\u25AA\",\n \"blacktriangle\":\"\\u25B4\",\n \"blacktriangledown\":\"\\u25BE\",\n \"blacktriangleleft\":\"\\u25C2\",\n \"blacktriangleright\":\"\\u25B8\",\n \"blank\":\"\\u2423\",\n \"blk12\":\"\\u2592\",\n \"blk14\":\"\\u2591\",\n \"blk34\":\"\\u2593\",\n \"block\":\"\\u2588\",\n \"bne\":\"\\u003D\\u20E5\",\n \"bnequiv\":\"\\u2261\\u20E5\",\n \"bNot\":\"\\u2AED\",\n \"bnot\":\"\\u2310\",\n \"Bopf\":\"\\uD835\\uDD39\",\n \"bopf\":\"\\uD835\\uDD53\",\n \"bot\":\"\\u22A5\",\n \"bottom\":\"\\u22A5\",\n \"bowtie\":\"\\u22C8\",\n \"boxbox\":\"\\u29C9\",\n \"boxDL\":\"\\u2557\",\n \"boxDl\":\"\\u2556\",\n \"boxdL\":\"\\u2555\",\n \"boxdl\":\"\\u2510\",\n \"boxDR\":\"\\u2554\",\n \"boxDr\":\"\\u2553\",\n \"boxdR\":\"\\u2552\",\n \"boxdr\":\"\\u250C\",\n \"boxH\":\"\\u2550\",\n \"boxh\":\"\\u2500\",\n \"boxHD\":\"\\u2566\",\n \"boxHd\":\"\\u2564\",\n \"boxhD\":\"\\u2565\",\n \"boxhd\":\"\\u252C\",\n \"boxHU\":\"\\u2569\",\n \"boxHu\":\"\\u2567\",\n \"boxhU\":\"\\u2568\",\n \"boxhu\":\"\\u2534\",\n \"boxminus\":\"\\u229F\",\n \"boxplus\":\"\\u229E\",\n \"boxtimes\":\"\\u22A0\",\n \"boxUL\":\"\\u255D\",\n \"boxUl\":\"\\u255C\",\n \"boxuL\":\"\\u255B\",\n \"boxul\":\"\\u2518\",\n \"boxUR\":\"\\u255A\",\n \"boxUr\":\"\\u2559\",\n \"boxuR\":\"\\u2558\",\n \"boxur\":\"\\u2514\",\n \"boxV\":\"\\u2551\",\n \"boxv\":\"\\u2502\",\n \"boxVH\":\"\\u256C\",\n \"boxVh\":\"\\u256B\",\n \"boxvH\":\"\\u256A\",\n \"boxvh\":\"\\u253C\",\n \"boxVL\":\"\\u2563\",\n \"boxVl\":\"\\u2562\",\n \"boxvL\":\"\\u2561\",\n \"boxvl\":\"\\u2524\",\n \"boxVR\":\"\\u2560\",\n \"boxVr\":\"\\u255F\",\n \"boxvR\":\"\\u255E\",\n \"boxvr\":\"\\u251C\",\n \"bprime\":\"\\u2035\",\n \"Breve\":\"\\u02D8\",\n \"breve\":\"\\u02D8\",\n \"brvbar\":\"\\u00A6\",\n \"Bscr\":\"\\u212C\",\n \"bscr\":\"\\uD835\\uDCB7\",\n \"bsemi\":\"\\u204F\",\n \"bsim\":\"\\u223D\",\n \"bsime\":\"\\u22CD\",\n \"bsol\":\"\\u005C\",\n \"bsolb\":\"\\u29C5\",\n \"bsolhsub\":\"\\u27C8\",\n \"bull\":\"\\u2022\",\n \"bullet\":\"\\u2022\",\n \"bump\":\"\\u224E\",\n \"bumpE\":\"\\u2AAE\",\n \"bumpe\":\"\\u224F\",\n \"Bumpeq\":\"\\u224E\",\n \"bumpeq\":\"\\u224F\",\n \"Cacute\":\"\\u0106\",\n \"cacute\":\"\\u0107\",\n \"Cap\":\"\\u22D2\",\n \"cap\":\"\\u2229\",\n \"capand\":\"\\u2A44\",\n \"capbrcup\":\"\\u2A49\",\n \"capcap\":\"\\u2A4B\",\n \"capcup\":\"\\u2A47\",\n \"capdot\":\"\\u2A40\",\n \"CapitalDifferentialD\":\"\\u2145\",\n \"caps\":\"\\u2229\\uFE00\",\n \"caret\":\"\\u2041\",\n \"caron\":\"\\u02C7\",\n \"Cayleys\":\"\\u212D\",\n \"ccaps\":\"\\u2A4D\",\n \"Ccaron\":\"\\u010C\",\n \"ccaron\":\"\\u010D\",\n \"Ccedil\":\"\\u00C7\",\n \"ccedil\":\"\\u00E7\",\n \"Ccirc\":\"\\u0108\",\n \"ccirc\":\"\\u0109\",\n \"Cconint\":\"\\u2230\",\n \"ccups\":\"\\u2A4C\",\n \"ccupssm\":\"\\u2A50\",\n \"Cdot\":\"\\u010A\",\n \"cdot\":\"\\u010B\",\n \"cedil\":\"\\u00B8\",\n \"Cedilla\":\"\\u00B8\",\n \"cemptyv\":\"\\u29B2\",\n \"cent\":\"\\u00A2\",\n \"CenterDot\":\"\\u00B7\",\n \"centerdot\":\"\\u00B7\",\n \"Cfr\":\"\\u212D\",\n \"cfr\":\"\\uD835\\uDD20\",\n \"CHcy\":\"\\u0427\",\n \"chcy\":\"\\u0447\",\n \"check\":\"\\u2713\",\n \"checkmark\":\"\\u2713\",\n \"Chi\":\"\\u03A7\",\n \"chi\":\"\\u03C7\",\n \"cir\":\"\\u25CB\",\n \"circ\":\"\\u02C6\",\n \"circeq\":\"\\u2257\",\n \"circlearrowleft\":\"\\u21BA\",\n \"circlearrowright\":\"\\u21BB\",\n \"circledast\":\"\\u229B\",\n \"circledcirc\":\"\\u229A\",\n \"circleddash\":\"\\u229D\",\n \"CircleDot\":\"\\u2299\",\n \"circledR\":\"\\u00AE\",\n \"circledS\":\"\\u24C8\",\n \"CircleMinus\":\"\\u2296\",\n \"CirclePlus\":\"\\u2295\",\n \"CircleTimes\":\"\\u2297\",\n \"cirE\":\"\\u29C3\",\n \"cire\":\"\\u2257\",\n \"cirfnint\":\"\\u2A10\",\n \"cirmid\":\"\\u2AEF\",\n \"cirscir\":\"\\u29C2\",\n \"ClockwiseContourIntegral\":\"\\u2232\",\n \"CloseCurlyDoubleQuote\":\"\\u201D\",\n \"CloseCurlyQuote\":\"\\u2019\",\n \"clubs\":\"\\u2663\",\n \"clubsuit\":\"\\u2663\",\n \"Colon\":\"\\u2237\",\n \"colon\":\"\\u003A\",\n \"Colone\":\"\\u2A74\",\n \"colone\":\"\\u2254\",\n \"coloneq\":\"\\u2254\",\n \"comma\":\"\\u002C\",\n \"commat\":\"\\u0040\",\n \"comp\":\"\\u2201\",\n \"compfn\":\"\\u2218\",\n \"complement\":\"\\u2201\",\n \"complexes\":\"\\u2102\",\n \"cong\":\"\\u2245\",\n \"congdot\":\"\\u2A6D\",\n \"Congruent\":\"\\u2261\",\n \"Conint\":\"\\u222F\",\n \"conint\":\"\\u222E\",\n \"ContourIntegral\":\"\\u222E\",\n \"Copf\":\"\\u2102\",\n \"copf\":\"\\uD835\\uDD54\",\n \"coprod\":\"\\u2210\",\n \"Coproduct\":\"\\u2210\",\n \"COPY\":\"\\u00A9\",\n \"copy\":\"\\u00A9\",\n \"copysr\":\"\\u2117\",\n \"CounterClockwiseContourIntegral\":\"\\u2233\",\n \"crarr\":\"\\u21B5\",\n \"Cross\":\"\\u2A2F\",\n \"cross\":\"\\u2717\",\n \"Cscr\":\"\\uD835\\uDC9E\",\n \"cscr\":\"\\uD835\\uDCB8\",\n \"csub\":\"\\u2ACF\",\n \"csube\":\"\\u2AD1\",\n \"csup\":\"\\u2AD0\",\n \"csupe\":\"\\u2AD2\",\n \"ctdot\":\"\\u22EF\",\n \"cudarrl\":\"\\u2938\",\n \"cudarrr\":\"\\u2935\",\n \"cuepr\":\"\\u22DE\",\n \"cuesc\":\"\\u22DF\",\n \"cularr\":\"\\u21B6\",\n \"cularrp\":\"\\u293D\",\n \"Cup\":\"\\u22D3\",\n \"cup\":\"\\u222A\",\n \"cupbrcap\":\"\\u2A48\",\n \"CupCap\":\"\\u224D\",\n \"cupcap\":\"\\u2A46\",\n \"cupcup\":\"\\u2A4A\",\n \"cupdot\":\"\\u228D\",\n \"cupor\":\"\\u2A45\",\n \"cups\":\"\\u222A\\uFE00\",\n \"curarr\":\"\\u21B7\",\n \"curarrm\":\"\\u293C\",\n \"curlyeqprec\":\"\\u22DE\",\n \"curlyeqsucc\":\"\\u22DF\",\n \"curlyvee\":\"\\u22CE\",\n \"curlywedge\":\"\\u22CF\",\n \"curren\":\"\\u00A4\",\n \"curvearrowleft\":\"\\u21B6\",\n \"curvearrowright\":\"\\u21B7\",\n \"cuvee\":\"\\u22CE\",\n \"cuwed\":\"\\u22CF\",\n \"cwconint\":\"\\u2232\",\n \"cwint\":\"\\u2231\",\n \"cylcty\":\"\\u232D\",\n \"Dagger\":\"\\u2021\",\n \"dagger\":\"\\u2020\",\n \"daleth\":\"\\u2138\",\n \"Darr\":\"\\u21A1\",\n \"dArr\":\"\\u21D3\",\n \"darr\":\"\\u2193\",\n \"dash\":\"\\u2010\",\n \"Dashv\":\"\\u2AE4\",\n \"dashv\":\"\\u22A3\",\n \"dbkarow\":\"\\u290F\",\n \"dblac\":\"\\u02DD\",\n \"Dcaron\":\"\\u010E\",\n \"dcaron\":\"\\u010F\",\n \"Dcy\":\"\\u0414\",\n \"dcy\":\"\\u0434\",\n \"DD\":\"\\u2145\",\n \"dd\":\"\\u2146\",\n \"ddagger\":\"\\u2021\",\n \"ddarr\":\"\\u21CA\",\n \"DDotrahd\":\"\\u2911\",\n \"ddotseq\":\"\\u2A77\",\n \"deg\":\"\\u00B0\",\n \"Del\":\"\\u2207\",\n \"Delta\":\"\\u0394\",\n \"delta\":\"\\u03B4\",\n \"demptyv\":\"\\u29B1\",\n \"dfisht\":\"\\u297F\",\n \"Dfr\":\"\\uD835\\uDD07\",\n \"dfr\":\"\\uD835\\uDD21\",\n \"dHar\":\"\\u2965\",\n \"dharl\":\"\\u21C3\",\n \"dharr\":\"\\u21C2\",\n \"DiacriticalAcute\":\"\\u00B4\",\n \"DiacriticalDot\":\"\\u02D9\",\n \"DiacriticalDoubleAcute\":\"\\u02DD\",\n \"DiacriticalGrave\":\"\\u0060\",\n \"DiacriticalTilde\":\"\\u02DC\",\n \"diam\":\"\\u22C4\",\n \"Diamond\":\"\\u22C4\",\n \"diamond\":\"\\u22C4\",\n \"diamondsuit\":\"\\u2666\",\n \"diams\":\"\\u2666\",\n \"die\":\"\\u00A8\",\n \"DifferentialD\":\"\\u2146\",\n \"digamma\":\"\\u03DD\",\n \"disin\":\"\\u22F2\",\n \"div\":\"\\u00F7\",\n \"divide\":\"\\u00F7\",\n \"divideontimes\":\"\\u22C7\",\n \"divonx\":\"\\u22C7\",\n \"DJcy\":\"\\u0402\",\n \"djcy\":\"\\u0452\",\n \"dlcorn\":\"\\u231E\",\n \"dlcrop\":\"\\u230D\",\n \"dollar\":\"\\u0024\",\n \"Dopf\":\"\\uD835\\uDD3B\",\n \"dopf\":\"\\uD835\\uDD55\",\n \"Dot\":\"\\u00A8\",\n \"dot\":\"\\u02D9\",\n \"DotDot\":\"\\u20DC\",\n \"doteq\":\"\\u2250\",\n \"doteqdot\":\"\\u2251\",\n \"DotEqual\":\"\\u2250\",\n \"dotminus\":\"\\u2238\",\n \"dotplus\":\"\\u2214\",\n \"dotsquare\":\"\\u22A1\",\n \"doublebarwedge\":\"\\u2306\",\n \"DoubleContourIntegral\":\"\\u222F\",\n \"DoubleDot\":\"\\u00A8\",\n \"DoubleDownArrow\":\"\\u21D3\",\n \"DoubleLeftArrow\":\"\\u21D0\",\n \"DoubleLeftRightArrow\":\"\\u21D4\",\n \"DoubleLeftTee\":\"\\u2AE4\",\n \"DoubleLongLeftArrow\":\"\\u27F8\",\n \"DoubleLongLeftRightArrow\":\"\\u27FA\",\n \"DoubleLongRightArrow\":\"\\u27F9\",\n \"DoubleRightArrow\":\"\\u21D2\",\n \"DoubleRightTee\":\"\\u22A8\",\n \"DoubleUpArrow\":\"\\u21D1\",\n \"DoubleUpDownArrow\":\"\\u21D5\",\n \"DoubleVerticalBar\":\"\\u2225\",\n \"DownArrow\":\"\\u2193\",\n \"Downarrow\":\"\\u21D3\",\n \"downarrow\":\"\\u2193\",\n \"DownArrowBar\":\"\\u2913\",\n \"DownArrowUpArrow\":\"\\u21F5\",\n \"DownBreve\":\"\\u0311\",\n \"downdownarrows\":\"\\u21CA\",\n \"downharpoonleft\":\"\\u21C3\",\n \"downharpoonright\":\"\\u21C2\",\n \"DownLeftRightVector\":\"\\u2950\",\n \"DownLeftTeeVector\":\"\\u295E\",\n \"DownLeftVector\":\"\\u21BD\",\n \"DownLeftVectorBar\":\"\\u2956\",\n \"DownRightTeeVector\":\"\\u295F\",\n \"DownRightVector\":\"\\u21C1\",\n \"DownRightVectorBar\":\"\\u2957\",\n \"DownTee\":\"\\u22A4\",\n \"DownTeeArrow\":\"\\u21A7\",\n \"drbkarow\":\"\\u2910\",\n \"drcorn\":\"\\u231F\",\n \"drcrop\":\"\\u230C\",\n \"Dscr\":\"\\uD835\\uDC9F\",\n \"dscr\":\"\\uD835\\uDCB9\",\n \"DScy\":\"\\u0405\",\n \"dscy\":\"\\u0455\",\n \"dsol\":\"\\u29F6\",\n \"Dstrok\":\"\\u0110\",\n \"dstrok\":\"\\u0111\",\n \"dtdot\":\"\\u22F1\",\n \"dtri\":\"\\u25BF\",\n \"dtrif\":\"\\u25BE\",\n \"duarr\":\"\\u21F5\",\n \"duhar\":\"\\u296F\",\n \"dwangle\":\"\\u29A6\",\n \"DZcy\":\"\\u040F\",\n \"dzcy\":\"\\u045F\",\n \"dzigrarr\":\"\\u27FF\",\n \"Eacute\":\"\\u00C9\",\n \"eacute\":\"\\u00E9\",\n \"easter\":\"\\u2A6E\",\n \"Ecaron\":\"\\u011A\",\n \"ecaron\":\"\\u011B\",\n \"ecir\":\"\\u2256\",\n \"Ecirc\":\"\\u00CA\",\n \"ecirc\":\"\\u00EA\",\n \"ecolon\":\"\\u2255\",\n \"Ecy\":\"\\u042D\",\n \"ecy\":\"\\u044D\",\n \"eDDot\":\"\\u2A77\",\n \"Edot\":\"\\u0116\",\n \"eDot\":\"\\u2251\",\n \"edot\":\"\\u0117\",\n \"ee\":\"\\u2147\",\n \"efDot\":\"\\u2252\",\n \"Efr\":\"\\uD835\\uDD08\",\n \"efr\":\"\\uD835\\uDD22\",\n \"eg\":\"\\u2A9A\",\n \"Egrave\":\"\\u00C8\",\n \"egrave\":\"\\u00E8\",\n \"egs\":\"\\u2A96\",\n \"egsdot\":\"\\u2A98\",\n \"el\":\"\\u2A99\",\n \"Element\":\"\\u2208\",\n \"elinters\":\"\\u23E7\",\n \"ell\":\"\\u2113\",\n \"els\":\"\\u2A95\",\n \"elsdot\":\"\\u2A97\",\n \"Emacr\":\"\\u0112\",\n \"emacr\":\"\\u0113\",\n \"empty\":\"\\u2205\",\n \"emptyset\":\"\\u2205\",\n \"EmptySmallSquare\":\"\\u25FB\",\n \"emptyv\":\"\\u2205\",\n \"EmptyVerySmallSquare\":\"\\u25AB\",\n \"emsp\":\"\\u2003\",\n \"emsp13\":\"\\u2004\",\n \"emsp14\":\"\\u2005\",\n \"ENG\":\"\\u014A\",\n \"eng\":\"\\u014B\",\n \"ensp\":\"\\u2002\",\n \"Eogon\":\"\\u0118\",\n \"eogon\":\"\\u0119\",\n \"Eopf\":\"\\uD835\\uDD3C\",\n \"eopf\":\"\\uD835\\uDD56\",\n \"epar\":\"\\u22D5\",\n \"eparsl\":\"\\u29E3\",\n \"eplus\":\"\\u2A71\",\n \"epsi\":\"\\u03B5\",\n \"Epsilon\":\"\\u0395\",\n \"epsilon\":\"\\u03B5\",\n \"epsiv\":\"\\u03F5\",\n \"eqcirc\":\"\\u2256\",\n \"eqcolon\":\"\\u2255\",\n \"eqsim\":\"\\u2242\",\n \"eqslantgtr\":\"\\u2A96\",\n \"eqslantless\":\"\\u2A95\",\n \"Equal\":\"\\u2A75\",\n \"equals\":\"\\u003D\",\n \"EqualTilde\":\"\\u2242\",\n \"equest\":\"\\u225F\",\n \"Equilibrium\":\"\\u21CC\",\n \"equiv\":\"\\u2261\",\n \"equivDD\":\"\\u2A78\",\n \"eqvparsl\":\"\\u29E5\",\n \"erarr\":\"\\u2971\",\n \"erDot\":\"\\u2253\",\n \"Escr\":\"\\u2130\",\n \"escr\":\"\\u212F\",\n \"esdot\":\"\\u2250\",\n \"Esim\":\"\\u2A73\",\n \"esim\":\"\\u2242\",\n \"Eta\":\"\\u0397\",\n \"eta\":\"\\u03B7\",\n \"ETH\":\"\\u00D0\",\n \"eth\":\"\\u00F0\",\n \"Euml\":\"\\u00CB\",\n \"euml\":\"\\u00EB\",\n \"euro\":\"\\u20AC\",\n \"excl\":\"\\u0021\",\n \"exist\":\"\\u2203\",\n \"Exists\":\"\\u2203\",\n \"expectation\":\"\\u2130\",\n \"ExponentialE\":\"\\u2147\",\n \"exponentiale\":\"\\u2147\",\n \"fallingdotseq\":\"\\u2252\",\n \"Fcy\":\"\\u0424\",\n \"fcy\":\"\\u0444\",\n \"female\":\"\\u2640\",\n \"ffilig\":\"\\uFB03\",\n \"fflig\":\"\\uFB00\",\n \"ffllig\":\"\\uFB04\",\n \"Ffr\":\"\\uD835\\uDD09\",\n \"ffr\":\"\\uD835\\uDD23\",\n \"filig\":\"\\uFB01\",\n \"FilledSmallSquare\":\"\\u25FC\",\n \"FilledVerySmallSquare\":\"\\u25AA\",\n \"fjlig\":\"\\u0066\\u006A\",\n \"flat\":\"\\u266D\",\n \"fllig\":\"\\uFB02\",\n \"fltns\":\"\\u25B1\",\n \"fnof\":\"\\u0192\",\n \"Fopf\":\"\\uD835\\uDD3D\",\n \"fopf\":\"\\uD835\\uDD57\",\n \"ForAll\":\"\\u2200\",\n \"forall\":\"\\u2200\",\n \"fork\":\"\\u22D4\",\n \"forkv\":\"\\u2AD9\",\n \"Fouriertrf\":\"\\u2131\",\n \"fpartint\":\"\\u2A0D\",\n \"frac12\":\"\\u00BD\",\n \"frac13\":\"\\u2153\",\n \"frac14\":\"\\u00BC\",\n \"frac15\":\"\\u2155\",\n \"frac16\":\"\\u2159\",\n \"frac18\":\"\\u215B\",\n \"frac23\":\"\\u2154\",\n \"frac25\":\"\\u2156\",\n \"frac34\":\"\\u00BE\",\n \"frac35\":\"\\u2157\",\n \"frac38\":\"\\u215C\",\n \"frac45\":\"\\u2158\",\n \"frac56\":\"\\u215A\",\n \"frac58\":\"\\u215D\",\n \"frac78\":\"\\u215E\",\n \"frasl\":\"\\u2044\",\n \"frown\":\"\\u2322\",\n \"Fscr\":\"\\u2131\",\n \"fscr\":\"\\uD835\\uDCBB\",\n \"gacute\":\"\\u01F5\",\n \"Gamma\":\"\\u0393\",\n \"gamma\":\"\\u03B3\",\n \"Gammad\":\"\\u03DC\",\n \"gammad\":\"\\u03DD\",\n \"gap\":\"\\u2A86\",\n \"Gbreve\":\"\\u011E\",\n \"gbreve\":\"\\u011F\",\n \"Gcedil\":\"\\u0122\",\n \"Gcirc\":\"\\u011C\",\n \"gcirc\":\"\\u011D\",\n \"Gcy\":\"\\u0413\",\n \"gcy\":\"\\u0433\",\n \"Gdot\":\"\\u0120\",\n \"gdot\":\"\\u0121\",\n \"gE\":\"\\u2267\",\n \"ge\":\"\\u2265\",\n \"gEl\":\"\\u2A8C\",\n \"gel\":\"\\u22DB\",\n \"geq\":\"\\u2265\",\n \"geqq\":\"\\u2267\",\n \"geqslant\":\"\\u2A7E\",\n \"ges\":\"\\u2A7E\",\n \"gescc\":\"\\u2AA9\",\n \"gesdot\":\"\\u2A80\",\n \"gesdoto\":\"\\u2A82\",\n \"gesdotol\":\"\\u2A84\",\n \"gesl\":\"\\u22DB\\uFE00\",\n \"gesles\":\"\\u2A94\",\n \"Gfr\":\"\\uD835\\uDD0A\",\n \"gfr\":\"\\uD835\\uDD24\",\n \"Gg\":\"\\u22D9\",\n \"gg\":\"\\u226B\",\n \"ggg\":\"\\u22D9\",\n \"gimel\":\"\\u2137\",\n \"GJcy\":\"\\u0403\",\n \"gjcy\":\"\\u0453\",\n \"gl\":\"\\u2277\",\n \"gla\":\"\\u2AA5\",\n \"glE\":\"\\u2A92\",\n \"glj\":\"\\u2AA4\",\n \"gnap\":\"\\u2A8A\",\n \"gnapprox\":\"\\u2A8A\",\n \"gnE\":\"\\u2269\",\n \"gne\":\"\\u2A88\",\n \"gneq\":\"\\u2A88\",\n \"gneqq\":\"\\u2269\",\n \"gnsim\":\"\\u22E7\",\n \"Gopf\":\"\\uD835\\uDD3E\",\n \"gopf\":\"\\uD835\\uDD58\",\n \"grave\":\"\\u0060\",\n \"GreaterEqual\":\"\\u2265\",\n \"GreaterEqualLess\":\"\\u22DB\",\n \"GreaterFullEqual\":\"\\u2267\",\n \"GreaterGreater\":\"\\u2AA2\",\n \"GreaterLess\":\"\\u2277\",\n \"GreaterSlantEqual\":\"\\u2A7E\",\n \"GreaterTilde\":\"\\u2273\",\n \"Gscr\":\"\\uD835\\uDCA2\",\n \"gscr\":\"\\u210A\",\n \"gsim\":\"\\u2273\",\n \"gsime\":\"\\u2A8E\",\n \"gsiml\":\"\\u2A90\",\n \"GT\":\"\\u003E\",\n \"Gt\":\"\\u226B\",\n \"gt\":\"\\u003E\",\n \"gtcc\":\"\\u2AA7\",\n \"gtcir\":\"\\u2A7A\",\n \"gtdot\":\"\\u22D7\",\n \"gtlPar\":\"\\u2995\",\n \"gtquest\":\"\\u2A7C\",\n \"gtrapprox\":\"\\u2A86\",\n \"gtrarr\":\"\\u2978\",\n \"gtrdot\":\"\\u22D7\",\n \"gtreqless\":\"\\u22DB\",\n \"gtreqqless\":\"\\u2A8C\",\n \"gtrless\":\"\\u2277\",\n \"gtrsim\":\"\\u2273\",\n \"gvertneqq\":\"\\u2269\\uFE00\",\n \"gvnE\":\"\\u2269\\uFE00\",\n \"Hacek\":\"\\u02C7\",\n \"hairsp\":\"\\u200A\",\n \"half\":\"\\u00BD\",\n \"hamilt\":\"\\u210B\",\n \"HARDcy\":\"\\u042A\",\n \"hardcy\":\"\\u044A\",\n \"hArr\":\"\\u21D4\",\n \"harr\":\"\\u2194\",\n \"harrcir\":\"\\u2948\",\n \"harrw\":\"\\u21AD\",\n \"Hat\":\"\\u005E\",\n \"hbar\":\"\\u210F\",\n \"Hcirc\":\"\\u0124\",\n \"hcirc\":\"\\u0125\",\n \"hearts\":\"\\u2665\",\n \"heartsuit\":\"\\u2665\",\n \"hellip\":\"\\u2026\",\n \"hercon\":\"\\u22B9\",\n \"Hfr\":\"\\u210C\",\n \"hfr\":\"\\uD835\\uDD25\",\n \"HilbertSpace\":\"\\u210B\",\n \"hksearow\":\"\\u2925\",\n \"hkswarow\":\"\\u2926\",\n \"hoarr\":\"\\u21FF\",\n \"homtht\":\"\\u223B\",\n \"hookleftarrow\":\"\\u21A9\",\n \"hookrightarrow\":\"\\u21AA\",\n \"Hopf\":\"\\u210D\",\n \"hopf\":\"\\uD835\\uDD59\",\n \"horbar\":\"\\u2015\",\n \"HorizontalLine\":\"\\u2500\",\n \"Hscr\":\"\\u210B\",\n \"hscr\":\"\\uD835\\uDCBD\",\n \"hslash\":\"\\u210F\",\n \"Hstrok\":\"\\u0126\",\n \"hstrok\":\"\\u0127\",\n \"HumpDownHump\":\"\\u224E\",\n \"HumpEqual\":\"\\u224F\",\n \"hybull\":\"\\u2043\",\n \"hyphen\":\"\\u2010\",\n \"Iacute\":\"\\u00CD\",\n \"iacute\":\"\\u00ED\",\n \"ic\":\"\\u2063\",\n \"Icirc\":\"\\u00CE\",\n \"icirc\":\"\\u00EE\",\n \"Icy\":\"\\u0418\",\n \"icy\":\"\\u0438\",\n \"Idot\":\"\\u0130\",\n \"IEcy\":\"\\u0415\",\n \"iecy\":\"\\u0435\",\n \"iexcl\":\"\\u00A1\",\n \"iff\":\"\\u21D4\",\n \"Ifr\":\"\\u2111\",\n \"ifr\":\"\\uD835\\uDD26\",\n \"Igrave\":\"\\u00CC\",\n \"igrave\":\"\\u00EC\",\n \"ii\":\"\\u2148\",\n \"iiiint\":\"\\u2A0C\",\n \"iiint\":\"\\u222D\",\n \"iinfin\":\"\\u29DC\",\n \"iiota\":\"\\u2129\",\n \"IJlig\":\"\\u0132\",\n \"ijlig\":\"\\u0133\",\n \"Im\":\"\\u2111\",\n \"Imacr\":\"\\u012A\",\n \"imacr\":\"\\u012B\",\n \"image\":\"\\u2111\",\n \"ImaginaryI\":\"\\u2148\",\n \"imagline\":\"\\u2110\",\n \"imagpart\":\"\\u2111\",\n \"imath\":\"\\u0131\",\n \"imof\":\"\\u22B7\",\n \"imped\":\"\\u01B5\",\n \"Implies\":\"\\u21D2\",\n \"in\":\"\\u2208\",\n \"incare\":\"\\u2105\",\n \"infin\":\"\\u221E\",\n \"infintie\":\"\\u29DD\",\n \"inodot\":\"\\u0131\",\n \"Int\":\"\\u222C\",\n \"int\":\"\\u222B\",\n \"intcal\":\"\\u22BA\",\n \"integers\":\"\\u2124\",\n \"Integral\":\"\\u222B\",\n \"intercal\":\"\\u22BA\",\n \"Intersection\":\"\\u22C2\",\n \"intlarhk\":\"\\u2A17\",\n \"intprod\":\"\\u2A3C\",\n \"InvisibleComma\":\"\\u2063\",\n \"InvisibleTimes\":\"\\u2062\",\n \"IOcy\":\"\\u0401\",\n \"iocy\":\"\\u0451\",\n \"Iogon\":\"\\u012E\",\n \"iogon\":\"\\u012F\",\n \"Iopf\":\"\\uD835\\uDD40\",\n \"iopf\":\"\\uD835\\uDD5A\",\n \"Iota\":\"\\u0399\",\n \"iota\":\"\\u03B9\",\n \"iprod\":\"\\u2A3C\",\n \"iquest\":\"\\u00BF\",\n \"Iscr\":\"\\u2110\",\n \"iscr\":\"\\uD835\\uDCBE\",\n \"isin\":\"\\u2208\",\n \"isindot\":\"\\u22F5\",\n \"isinE\":\"\\u22F9\",\n \"isins\":\"\\u22F4\",\n \"isinsv\":\"\\u22F3\",\n \"isinv\":\"\\u2208\",\n \"it\":\"\\u2062\",\n \"Itilde\":\"\\u0128\",\n \"itilde\":\"\\u0129\",\n \"Iukcy\":\"\\u0406\",\n \"iukcy\":\"\\u0456\",\n \"Iuml\":\"\\u00CF\",\n \"iuml\":\"\\u00EF\",\n \"Jcirc\":\"\\u0134\",\n \"jcirc\":\"\\u0135\",\n \"Jcy\":\"\\u0419\",\n \"jcy\":\"\\u0439\",\n \"Jfr\":\"\\uD835\\uDD0D\",\n \"jfr\":\"\\uD835\\uDD27\",\n \"jmath\":\"\\u0237\",\n \"Jopf\":\"\\uD835\\uDD41\",\n \"jopf\":\"\\uD835\\uDD5B\",\n \"Jscr\":\"\\uD835\\uDCA5\",\n \"jscr\":\"\\uD835\\uDCBF\",\n \"Jsercy\":\"\\u0408\",\n \"jsercy\":\"\\u0458\",\n \"Jukcy\":\"\\u0404\",\n \"jukcy\":\"\\u0454\",\n \"Kappa\":\"\\u039A\",\n \"kappa\":\"\\u03BA\",\n \"kappav\":\"\\u03F0\",\n \"Kcedil\":\"\\u0136\",\n \"kcedil\":\"\\u0137\",\n \"Kcy\":\"\\u041A\",\n \"kcy\":\"\\u043A\",\n \"Kfr\":\"\\uD835\\uDD0E\",\n \"kfr\":\"\\uD835\\uDD28\",\n \"kgreen\":\"\\u0138\",\n \"KHcy\":\"\\u0425\",\n \"khcy\":\"\\u0445\",\n \"KJcy\":\"\\u040C\",\n \"kjcy\":\"\\u045C\",\n \"Kopf\":\"\\uD835\\uDD42\",\n \"kopf\":\"\\uD835\\uDD5C\",\n \"Kscr\":\"\\uD835\\uDCA6\",\n \"kscr\":\"\\uD835\\uDCC0\",\n \"lAarr\":\"\\u21DA\",\n \"Lacute\":\"\\u0139\",\n \"lacute\":\"\\u013A\",\n \"laemptyv\":\"\\u29B4\",\n \"lagran\":\"\\u2112\",\n \"Lambda\":\"\\u039B\",\n \"lambda\":\"\\u03BB\",\n \"Lang\":\"\\u27EA\",\n \"lang\":\"\\u27E8\",\n \"langd\":\"\\u2991\",\n \"langle\":\"\\u27E8\",\n \"lap\":\"\\u2A85\",\n \"Laplacetrf\":\"\\u2112\",\n \"laquo\":\"\\u00AB\",\n \"Larr\":\"\\u219E\",\n \"lArr\":\"\\u21D0\",\n \"larr\":\"\\u2190\",\n \"larrb\":\"\\u21E4\",\n \"larrbfs\":\"\\u291F\",\n \"larrfs\":\"\\u291D\",\n \"larrhk\":\"\\u21A9\",\n \"larrlp\":\"\\u21AB\",\n \"larrpl\":\"\\u2939\",\n \"larrsim\":\"\\u2973\",\n \"larrtl\":\"\\u21A2\",\n \"lat\":\"\\u2AAB\",\n \"lAtail\":\"\\u291B\",\n \"latail\":\"\\u2919\",\n \"late\":\"\\u2AAD\",\n \"lates\":\"\\u2AAD\\uFE00\",\n \"lBarr\":\"\\u290E\",\n \"lbarr\":\"\\u290C\",\n \"lbbrk\":\"\\u2772\",\n \"lbrace\":\"\\u007B\",\n \"lbrack\":\"\\u005B\",\n \"lbrke\":\"\\u298B\",\n \"lbrksld\":\"\\u298F\",\n \"lbrkslu\":\"\\u298D\",\n \"Lcaron\":\"\\u013D\",\n \"lcaron\":\"\\u013E\",\n \"Lcedil\":\"\\u013B\",\n \"lcedil\":\"\\u013C\",\n \"lceil\":\"\\u2308\",\n \"lcub\":\"\\u007B\",\n \"Lcy\":\"\\u041B\",\n \"lcy\":\"\\u043B\",\n \"ldca\":\"\\u2936\",\n \"ldquo\":\"\\u201C\",\n \"ldquor\":\"\\u201E\",\n \"ldrdhar\":\"\\u2967\",\n \"ldrushar\":\"\\u294B\",\n \"ldsh\":\"\\u21B2\",\n \"lE\":\"\\u2266\",\n \"le\":\"\\u2264\",\n \"LeftAngleBracket\":\"\\u27E8\",\n \"LeftArrow\":\"\\u2190\",\n \"Leftarrow\":\"\\u21D0\",\n \"leftarrow\":\"\\u2190\",\n \"LeftArrowBar\":\"\\u21E4\",\n \"LeftArrowRightArrow\":\"\\u21C6\",\n \"leftarrowtail\":\"\\u21A2\",\n \"LeftCeiling\":\"\\u2308\",\n \"LeftDoubleBracket\":\"\\u27E6\",\n \"LeftDownTeeVector\":\"\\u2961\",\n \"LeftDownVector\":\"\\u21C3\",\n \"LeftDownVectorBar\":\"\\u2959\",\n \"LeftFloor\":\"\\u230A\",\n \"leftharpoondown\":\"\\u21BD\",\n \"leftharpoonup\":\"\\u21BC\",\n \"leftleftarrows\":\"\\u21C7\",\n \"LeftRightArrow\":\"\\u2194\",\n \"Leftrightarrow\":\"\\u21D4\",\n \"leftrightarrow\":\"\\u2194\",\n \"leftrightarrows\":\"\\u21C6\",\n \"leftrightharpoons\":\"\\u21CB\",\n \"leftrightsquigarrow\":\"\\u21AD\",\n \"LeftRightVector\":\"\\u294E\",\n \"LeftTee\":\"\\u22A3\",\n \"LeftTeeArrow\":\"\\u21A4\",\n \"LeftTeeVector\":\"\\u295A\",\n \"leftthreetimes\":\"\\u22CB\",\n \"LeftTriangle\":\"\\u22B2\",\n \"LeftTriangleBar\":\"\\u29CF\",\n \"LeftTriangleEqual\":\"\\u22B4\",\n \"LeftUpDownVector\":\"\\u2951\",\n \"LeftUpTeeVector\":\"\\u2960\",\n \"LeftUpVector\":\"\\u21BF\",\n \"LeftUpVectorBar\":\"\\u2958\",\n \"LeftVector\":\"\\u21BC\",\n \"LeftVectorBar\":\"\\u2952\",\n \"lEg\":\"\\u2A8B\",\n \"leg\":\"\\u22DA\",\n \"leq\":\"\\u2264\",\n \"leqq\":\"\\u2266\",\n \"leqslant\":\"\\u2A7D\",\n \"les\":\"\\u2A7D\",\n \"lescc\":\"\\u2AA8\",\n \"lesdot\":\"\\u2A7F\",\n \"lesdoto\":\"\\u2A81\",\n \"lesdotor\":\"\\u2A83\",\n \"lesg\":\"\\u22DA\\uFE00\",\n \"lesges\":\"\\u2A93\",\n \"lessapprox\":\"\\u2A85\",\n \"lessdot\":\"\\u22D6\",\n \"lesseqgtr\":\"\\u22DA\",\n \"lesseqqgtr\":\"\\u2A8B\",\n \"LessEqualGreater\":\"\\u22DA\",\n \"LessFullEqual\":\"\\u2266\",\n \"LessGreater\":\"\\u2276\",\n \"lessgtr\":\"\\u2276\",\n \"LessLess\":\"\\u2AA1\",\n \"lesssim\":\"\\u2272\",\n \"LessSlantEqual\":\"\\u2A7D\",\n \"LessTilde\":\"\\u2272\",\n \"lfisht\":\"\\u297C\",\n \"lfloor\":\"\\u230A\",\n \"Lfr\":\"\\uD835\\uDD0F\",\n \"lfr\":\"\\uD835\\uDD29\",\n \"lg\":\"\\u2276\",\n \"lgE\":\"\\u2A91\",\n \"lHar\":\"\\u2962\",\n \"lhard\":\"\\u21BD\",\n \"lharu\":\"\\u21BC\",\n \"lharul\":\"\\u296A\",\n \"lhblk\":\"\\u2584\",\n \"LJcy\":\"\\u0409\",\n \"ljcy\":\"\\u0459\",\n \"Ll\":\"\\u22D8\",\n \"ll\":\"\\u226A\",\n \"llarr\":\"\\u21C7\",\n \"llcorner\":\"\\u231E\",\n \"Lleftarrow\":\"\\u21DA\",\n \"llhard\":\"\\u296B\",\n \"lltri\":\"\\u25FA\",\n \"Lmidot\":\"\\u013F\",\n \"lmidot\":\"\\u0140\",\n \"lmoust\":\"\\u23B0\",\n \"lmoustache\":\"\\u23B0\",\n \"lnap\":\"\\u2A89\",\n \"lnapprox\":\"\\u2A89\",\n \"lnE\":\"\\u2268\",\n \"lne\":\"\\u2A87\",\n \"lneq\":\"\\u2A87\",\n \"lneqq\":\"\\u2268\",\n \"lnsim\":\"\\u22E6\",\n \"loang\":\"\\u27EC\",\n \"loarr\":\"\\u21FD\",\n \"lobrk\":\"\\u27E6\",\n \"LongLeftArrow\":\"\\u27F5\",\n \"Longleftarrow\":\"\\u27F8\",\n \"longleftarrow\":\"\\u27F5\",\n \"LongLeftRightArrow\":\"\\u27F7\",\n \"Longleftrightarrow\":\"\\u27FA\",\n \"longleftrightarrow\":\"\\u27F7\",\n \"longmapsto\":\"\\u27FC\",\n \"LongRightArrow\":\"\\u27F6\",\n \"Longrightarrow\":\"\\u27F9\",\n \"longrightarrow\":\"\\u27F6\",\n \"looparrowleft\":\"\\u21AB\",\n \"looparrowright\":\"\\u21AC\",\n \"lopar\":\"\\u2985\",\n \"Lopf\":\"\\uD835\\uDD43\",\n \"lopf\":\"\\uD835\\uDD5D\",\n \"loplus\":\"\\u2A2D\",\n \"lotimes\":\"\\u2A34\",\n \"lowast\":\"\\u2217\",\n \"lowbar\":\"\\u005F\",\n \"LowerLeftArrow\":\"\\u2199\",\n \"LowerRightArrow\":\"\\u2198\",\n \"loz\":\"\\u25CA\",\n \"lozenge\":\"\\u25CA\",\n \"lozf\":\"\\u29EB\",\n \"lpar\":\"\\u0028\",\n \"lparlt\":\"\\u2993\",\n \"lrarr\":\"\\u21C6\",\n \"lrcorner\":\"\\u231F\",\n \"lrhar\":\"\\u21CB\",\n \"lrhard\":\"\\u296D\",\n \"lrm\":\"\\u200E\",\n \"lrtri\":\"\\u22BF\",\n \"lsaquo\":\"\\u2039\",\n \"Lscr\":\"\\u2112\",\n \"lscr\":\"\\uD835\\uDCC1\",\n \"Lsh\":\"\\u21B0\",\n \"lsh\":\"\\u21B0\",\n \"lsim\":\"\\u2272\",\n \"lsime\":\"\\u2A8D\",\n \"lsimg\":\"\\u2A8F\",\n \"lsqb\":\"\\u005B\",\n \"lsquo\":\"\\u2018\",\n \"lsquor\":\"\\u201A\",\n \"Lstrok\":\"\\u0141\",\n \"lstrok\":\"\\u0142\",\n \"LT\":\"\\u003C\",\n \"Lt\":\"\\u226A\",\n \"lt\":\"\\u003C\",\n \"ltcc\":\"\\u2AA6\",\n \"ltcir\":\"\\u2A79\",\n \"ltdot\":\"\\u22D6\",\n \"lthree\":\"\\u22CB\",\n \"ltimes\":\"\\u22C9\",\n \"ltlarr\":\"\\u2976\",\n \"ltquest\":\"\\u2A7B\",\n \"ltri\":\"\\u25C3\",\n \"ltrie\":\"\\u22B4\",\n \"ltrif\":\"\\u25C2\",\n \"ltrPar\":\"\\u2996\",\n \"lurdshar\":\"\\u294A\",\n \"luruhar\":\"\\u2966\",\n \"lvertneqq\":\"\\u2268\\uFE00\",\n \"lvnE\":\"\\u2268\\uFE00\",\n \"macr\":\"\\u00AF\",\n \"male\":\"\\u2642\",\n \"malt\":\"\\u2720\",\n \"maltese\":\"\\u2720\",\n \"Map\":\"\\u2905\",\n \"map\":\"\\u21A6\",\n \"mapsto\":\"\\u21A6\",\n \"mapstodown\":\"\\u21A7\",\n \"mapstoleft\":\"\\u21A4\",\n \"mapstoup\":\"\\u21A5\",\n \"marker\":\"\\u25AE\",\n \"mcomma\":\"\\u2A29\",\n \"Mcy\":\"\\u041C\",\n \"mcy\":\"\\u043C\",\n \"mdash\":\"\\u2014\",\n \"mDDot\":\"\\u223A\",\n \"measuredangle\":\"\\u2221\",\n \"MediumSpace\":\"\\u205F\",\n \"Mellintrf\":\"\\u2133\",\n \"Mfr\":\"\\uD835\\uDD10\",\n \"mfr\":\"\\uD835\\uDD2A\",\n \"mho\":\"\\u2127\",\n \"micro\":\"\\u00B5\",\n \"mid\":\"\\u2223\",\n \"midast\":\"\\u002A\",\n \"midcir\":\"\\u2AF0\",\n \"middot\":\"\\u00B7\",\n \"minus\":\"\\u2212\",\n \"minusb\":\"\\u229F\",\n \"minusd\":\"\\u2238\",\n \"minusdu\":\"\\u2A2A\",\n \"MinusPlus\":\"\\u2213\",\n \"mlcp\":\"\\u2ADB\",\n \"mldr\":\"\\u2026\",\n \"mnplus\":\"\\u2213\",\n \"models\":\"\\u22A7\",\n \"Mopf\":\"\\uD835\\uDD44\",\n \"mopf\":\"\\uD835\\uDD5E\",\n \"mp\":\"\\u2213\",\n \"Mscr\":\"\\u2133\",\n \"mscr\":\"\\uD835\\uDCC2\",\n \"mstpos\":\"\\u223E\",\n \"Mu\":\"\\u039C\",\n \"mu\":\"\\u03BC\",\n \"multimap\":\"\\u22B8\",\n \"mumap\":\"\\u22B8\",\n \"nabla\":\"\\u2207\",\n \"Nacute\":\"\\u0143\",\n \"nacute\":\"\\u0144\",\n \"nang\":\"\\u2220\\u20D2\",\n \"nap\":\"\\u2249\",\n \"napE\":\"\\u2A70\\u0338\",\n \"napid\":\"\\u224B\\u0338\",\n \"napos\":\"\\u0149\",\n \"napprox\":\"\\u2249\",\n \"natur\":\"\\u266E\",\n \"natural\":\"\\u266E\",\n \"naturals\":\"\\u2115\",\n \"nbsp\":\"\\u00A0\",\n \"nbump\":\"\\u224E\\u0338\",\n \"nbumpe\":\"\\u224F\\u0338\",\n \"ncap\":\"\\u2A43\",\n \"Ncaron\":\"\\u0147\",\n \"ncaron\":\"\\u0148\",\n \"Ncedil\":\"\\u0145\",\n \"ncedil\":\"\\u0146\",\n \"ncong\":\"\\u2247\",\n \"ncongdot\":\"\\u2A6D\\u0338\",\n \"ncup\":\"\\u2A42\",\n \"Ncy\":\"\\u041D\",\n \"ncy\":\"\\u043D\",\n \"ndash\":\"\\u2013\",\n \"ne\":\"\\u2260\",\n \"nearhk\":\"\\u2924\",\n \"neArr\":\"\\u21D7\",\n \"nearr\":\"\\u2197\",\n \"nearrow\":\"\\u2197\",\n \"nedot\":\"\\u2250\\u0338\",\n \"NegativeMediumSpace\":\"\\u200B\",\n \"NegativeThickSpace\":\"\\u200B\",\n \"NegativeThinSpace\":\"\\u200B\",\n \"NegativeVeryThinSpace\":\"\\u200B\",\n \"nequiv\":\"\\u2262\",\n \"nesear\":\"\\u2928\",\n \"nesim\":\"\\u2242\\u0338\",\n \"NestedGreaterGreater\":\"\\u226B\",\n \"NestedLessLess\":\"\\u226A\",\n \"NewLine\":\"\\u000A\",\n \"nexist\":\"\\u2204\",\n \"nexists\":\"\\u2204\",\n \"Nfr\":\"\\uD835\\uDD11\",\n \"nfr\":\"\\uD835\\uDD2B\",\n \"ngE\":\"\\u2267\\u0338\",\n \"nge\":\"\\u2271\",\n \"ngeq\":\"\\u2271\",\n \"ngeqq\":\"\\u2267\\u0338\",\n \"ngeqslant\":\"\\u2A7E\\u0338\",\n \"nges\":\"\\u2A7E\\u0338\",\n \"nGg\":\"\\u22D9\\u0338\",\n \"ngsim\":\"\\u2275\",\n \"nGt\":\"\\u226B\\u20D2\",\n \"ngt\":\"\\u226F\",\n \"ngtr\":\"\\u226F\",\n \"nGtv\":\"\\u226B\\u0338\",\n \"nhArr\":\"\\u21CE\",\n \"nharr\":\"\\u21AE\",\n \"nhpar\":\"\\u2AF2\",\n \"ni\":\"\\u220B\",\n \"nis\":\"\\u22FC\",\n \"nisd\":\"\\u22FA\",\n \"niv\":\"\\u220B\",\n \"NJcy\":\"\\u040A\",\n \"njcy\":\"\\u045A\",\n \"nlArr\":\"\\u21CD\",\n \"nlarr\":\"\\u219A\",\n \"nldr\":\"\\u2025\",\n \"nlE\":\"\\u2266\\u0338\",\n \"nle\":\"\\u2270\",\n \"nLeftarrow\":\"\\u21CD\",\n \"nleftarrow\":\"\\u219A\",\n \"nLeftrightarrow\":\"\\u21CE\",\n \"nleftrightarrow\":\"\\u21AE\",\n \"nleq\":\"\\u2270\",\n \"nleqq\":\"\\u2266\\u0338\",\n \"nleqslant\":\"\\u2A7D\\u0338\",\n \"nles\":\"\\u2A7D\\u0338\",\n \"nless\":\"\\u226E\",\n \"nLl\":\"\\u22D8\\u0338\",\n \"nlsim\":\"\\u2274\",\n \"nLt\":\"\\u226A\\u20D2\",\n \"nlt\":\"\\u226E\",\n \"nltri\":\"\\u22EA\",\n \"nltrie\":\"\\u22EC\",\n \"nLtv\":\"\\u226A\\u0338\",\n \"nmid\":\"\\u2224\",\n \"NoBreak\":\"\\u2060\",\n \"NonBreakingSpace\":\"\\u00A0\",\n \"Nopf\":\"\\u2115\",\n \"nopf\":\"\\uD835\\uDD5F\",\n \"Not\":\"\\u2AEC\",\n \"not\":\"\\u00AC\",\n \"NotCongruent\":\"\\u2262\",\n \"NotCupCap\":\"\\u226D\",\n \"NotDoubleVerticalBar\":\"\\u2226\",\n \"NotElement\":\"\\u2209\",\n \"NotEqual\":\"\\u2260\",\n \"NotEqualTilde\":\"\\u2242\\u0338\",\n \"NotExists\":\"\\u2204\",\n \"NotGreater\":\"\\u226F\",\n \"NotGreaterEqual\":\"\\u2271\",\n \"NotGreaterFullEqual\":\"\\u2267\\u0338\",\n \"NotGreaterGreater\":\"\\u226B\\u0338\",\n \"NotGreaterLess\":\"\\u2279\",\n \"NotGreaterSlantEqual\":\"\\u2A7E\\u0338\",\n \"NotGreaterTilde\":\"\\u2275\",\n \"NotHumpDownHump\":\"\\u224E\\u0338\",\n \"NotHumpEqual\":\"\\u224F\\u0338\",\n \"notin\":\"\\u2209\",\n \"notindot\":\"\\u22F5\\u0338\",\n \"notinE\":\"\\u22F9\\u0338\",\n \"notinva\":\"\\u2209\",\n \"notinvb\":\"\\u22F7\",\n \"notinvc\":\"\\u22F6\",\n \"NotLeftTriangle\":\"\\u22EA\",\n \"NotLeftTriangleBar\":\"\\u29CF\\u0338\",\n \"NotLeftTriangleEqual\":\"\\u22EC\",\n \"NotLess\":\"\\u226E\",\n \"NotLessEqual\":\"\\u2270\",\n \"NotLessGreater\":\"\\u2278\",\n \"NotLessLess\":\"\\u226A\\u0338\",\n \"NotLessSlantEqual\":\"\\u2A7D\\u0338\",\n \"NotLessTilde\":\"\\u2274\",\n \"NotNestedGreaterGreater\":\"\\u2AA2\\u0338\",\n \"NotNestedLessLess\":\"\\u2AA1\\u0338\",\n \"notni\":\"\\u220C\",\n \"notniva\":\"\\u220C\",\n \"notnivb\":\"\\u22FE\",\n \"notnivc\":\"\\u22FD\",\n \"NotPrecedes\":\"\\u2280\",\n \"NotPrecedesEqual\":\"\\u2AAF\\u0338\",\n \"NotPrecedesSlantEqual\":\"\\u22E0\",\n \"NotReverseElement\":\"\\u220C\",\n \"NotRightTriangle\":\"\\u22EB\",\n \"NotRightTriangleBar\":\"\\u29D0\\u0338\",\n \"NotRightTriangleEqual\":\"\\u22ED\",\n \"NotSquareSubset\":\"\\u228F\\u0338\",\n \"NotSquareSubsetEqual\":\"\\u22E2\",\n \"NotSquareSuperset\":\"\\u2290\\u0338\",\n \"NotSquareSupersetEqual\":\"\\u22E3\",\n \"NotSubset\":\"\\u2282\\u20D2\",\n \"NotSubsetEqual\":\"\\u2288\",\n \"NotSucceeds\":\"\\u2281\",\n \"NotSucceedsEqual\":\"\\u2AB0\\u0338\",\n \"NotSucceedsSlantEqual\":\"\\u22E1\",\n \"NotSucceedsTilde\":\"\\u227F\\u0338\",\n \"NotSuperset\":\"\\u2283\\u20D2\",\n \"NotSupersetEqual\":\"\\u2289\",\n \"NotTilde\":\"\\u2241\",\n \"NotTildeEqual\":\"\\u2244\",\n \"NotTildeFullEqual\":\"\\u2247\",\n \"NotTildeTilde\":\"\\u2249\",\n \"NotVerticalBar\":\"\\u2224\",\n \"npar\":\"\\u2226\",\n \"nparallel\":\"\\u2226\",\n \"nparsl\":\"\\u2AFD\\u20E5\",\n \"npart\":\"\\u2202\\u0338\",\n \"npolint\":\"\\u2A14\",\n \"npr\":\"\\u2280\",\n \"nprcue\":\"\\u22E0\",\n \"npre\":\"\\u2AAF\\u0338\",\n \"nprec\":\"\\u2280\",\n \"npreceq\":\"\\u2AAF\\u0338\",\n \"nrArr\":\"\\u21CF\",\n \"nrarr\":\"\\u219B\",\n \"nrarrc\":\"\\u2933\\u0338\",\n \"nrarrw\":\"\\u219D\\u0338\",\n \"nRightarrow\":\"\\u21CF\",\n \"nrightarrow\":\"\\u219B\",\n \"nrtri\":\"\\u22EB\",\n \"nrtrie\":\"\\u22ED\",\n \"nsc\":\"\\u2281\",\n \"nsccue\":\"\\u22E1\",\n \"nsce\":\"\\u2AB0\\u0338\",\n \"Nscr\":\"\\uD835\\uDCA9\",\n \"nscr\":\"\\uD835\\uDCC3\",\n \"nshortmid\":\"\\u2224\",\n \"nshortparallel\":\"\\u2226\",\n \"nsim\":\"\\u2241\",\n \"nsime\":\"\\u2244\",\n \"nsimeq\":\"\\u2244\",\n \"nsmid\":\"\\u2224\",\n \"nspar\":\"\\u2226\",\n \"nsqsube\":\"\\u22E2\",\n \"nsqsupe\":\"\\u22E3\",\n \"nsub\":\"\\u2284\",\n \"nsubE\":\"\\u2AC5\\u0338\",\n \"nsube\":\"\\u2288\",\n \"nsubset\":\"\\u2282\\u20D2\",\n \"nsubseteq\":\"\\u2288\",\n \"nsubseteqq\":\"\\u2AC5\\u0338\",\n \"nsucc\":\"\\u2281\",\n \"nsucceq\":\"\\u2AB0\\u0338\",\n \"nsup\":\"\\u2285\",\n \"nsupE\":\"\\u2AC6\\u0338\",\n \"nsupe\":\"\\u2289\",\n \"nsupset\":\"\\u2283\\u20D2\",\n \"nsupseteq\":\"\\u2289\",\n \"nsupseteqq\":\"\\u2AC6\\u0338\",\n \"ntgl\":\"\\u2279\",\n \"Ntilde\":\"\\u00D1\",\n \"ntilde\":\"\\u00F1\",\n \"ntlg\":\"\\u2278\",\n \"ntriangleleft\":\"\\u22EA\",\n \"ntrianglelefteq\":\"\\u22EC\",\n \"ntriangleright\":\"\\u22EB\",\n \"ntrianglerighteq\":\"\\u22ED\",\n \"Nu\":\"\\u039D\",\n \"nu\":\"\\u03BD\",\n \"num\":\"\\u0023\",\n \"numero\":\"\\u2116\",\n \"numsp\":\"\\u2007\",\n \"nvap\":\"\\u224D\\u20D2\",\n \"nVDash\":\"\\u22AF\",\n \"nVdash\":\"\\u22AE\",\n \"nvDash\":\"\\u22AD\",\n \"nvdash\":\"\\u22AC\",\n \"nvge\":\"\\u2265\\u20D2\",\n \"nvgt\":\"\\u003E\\u20D2\",\n \"nvHarr\":\"\\u2904\",\n \"nvinfin\":\"\\u29DE\",\n \"nvlArr\":\"\\u2902\",\n \"nvle\":\"\\u2264\\u20D2\",\n \"nvlt\":\"\\u003C\\u20D2\",\n \"nvltrie\":\"\\u22B4\\u20D2\",\n \"nvrArr\":\"\\u2903\",\n \"nvrtrie\":\"\\u22B5\\u20D2\",\n \"nvsim\":\"\\u223C\\u20D2\",\n \"nwarhk\":\"\\u2923\",\n \"nwArr\":\"\\u21D6\",\n \"nwarr\":\"\\u2196\",\n \"nwarrow\":\"\\u2196\",\n \"nwnear\":\"\\u2927\",\n \"Oacute\":\"\\u00D3\",\n \"oacute\":\"\\u00F3\",\n \"oast\":\"\\u229B\",\n \"ocir\":\"\\u229A\",\n \"Ocirc\":\"\\u00D4\",\n \"ocirc\":\"\\u00F4\",\n \"Ocy\":\"\\u041E\",\n \"ocy\":\"\\u043E\",\n \"odash\":\"\\u229D\",\n \"Odblac\":\"\\u0150\",\n \"odblac\":\"\\u0151\",\n \"odiv\":\"\\u2A38\",\n \"odot\":\"\\u2299\",\n \"odsold\":\"\\u29BC\",\n \"OElig\":\"\\u0152\",\n \"oelig\":\"\\u0153\",\n \"ofcir\":\"\\u29BF\",\n \"Ofr\":\"\\uD835\\uDD12\",\n \"ofr\":\"\\uD835\\uDD2C\",\n \"ogon\":\"\\u02DB\",\n \"Ograve\":\"\\u00D2\",\n \"ograve\":\"\\u00F2\",\n \"ogt\":\"\\u29C1\",\n \"ohbar\":\"\\u29B5\",\n \"ohm\":\"\\u03A9\",\n \"oint\":\"\\u222E\",\n \"olarr\":\"\\u21BA\",\n \"olcir\":\"\\u29BE\",\n \"olcross\":\"\\u29BB\",\n \"oline\":\"\\u203E\",\n \"olt\":\"\\u29C0\",\n \"Omacr\":\"\\u014C\",\n \"omacr\":\"\\u014D\",\n \"Omega\":\"\\u03A9\",\n \"omega\":\"\\u03C9\",\n \"Omicron\":\"\\u039F\",\n \"omicron\":\"\\u03BF\",\n \"omid\":\"\\u29B6\",\n \"ominus\":\"\\u2296\",\n \"Oopf\":\"\\uD835\\uDD46\",\n \"oopf\":\"\\uD835\\uDD60\",\n \"opar\":\"\\u29B7\",\n \"OpenCurlyDoubleQuote\":\"\\u201C\",\n \"OpenCurlyQuote\":\"\\u2018\",\n \"operp\":\"\\u29B9\",\n \"oplus\":\"\\u2295\",\n \"Or\":\"\\u2A54\",\n \"or\":\"\\u2228\",\n \"orarr\":\"\\u21BB\",\n \"ord\":\"\\u2A5D\",\n \"order\":\"\\u2134\",\n \"orderof\":\"\\u2134\",\n \"ordf\":\"\\u00AA\",\n \"ordm\":\"\\u00BA\",\n \"origof\":\"\\u22B6\",\n \"oror\":\"\\u2A56\",\n \"orslope\":\"\\u2A57\",\n \"orv\":\"\\u2A5B\",\n \"oS\":\"\\u24C8\",\n \"Oscr\":\"\\uD835\\uDCAA\",\n \"oscr\":\"\\u2134\",\n \"Oslash\":\"\\u00D8\",\n \"oslash\":\"\\u00F8\",\n \"osol\":\"\\u2298\",\n \"Otilde\":\"\\u00D5\",\n \"otilde\":\"\\u00F5\",\n \"Otimes\":\"\\u2A37\",\n \"otimes\":\"\\u2297\",\n \"otimesas\":\"\\u2A36\",\n \"Ouml\":\"\\u00D6\",\n \"ouml\":\"\\u00F6\",\n \"ovbar\":\"\\u233D\",\n \"OverBar\":\"\\u203E\",\n \"OverBrace\":\"\\u23DE\",\n \"OverBracket\":\"\\u23B4\",\n \"OverParenthesis\":\"\\u23DC\",\n \"par\":\"\\u2225\",\n \"para\":\"\\u00B6\",\n \"parallel\":\"\\u2225\",\n \"parsim\":\"\\u2AF3\",\n \"parsl\":\"\\u2AFD\",\n \"part\":\"\\u2202\",\n \"PartialD\":\"\\u2202\",\n \"Pcy\":\"\\u041F\",\n \"pcy\":\"\\u043F\",\n \"percnt\":\"\\u0025\",\n \"period\":\"\\u002E\",\n \"permil\":\"\\u2030\",\n \"perp\":\"\\u22A5\",\n \"pertenk\":\"\\u2031\",\n \"Pfr\":\"\\uD835\\uDD13\",\n \"pfr\":\"\\uD835\\uDD2D\",\n \"Phi\":\"\\u03A6\",\n \"phi\":\"\\u03C6\",\n \"phiv\":\"\\u03D5\",\n \"phmmat\":\"\\u2133\",\n \"phone\":\"\\u260E\",\n \"Pi\":\"\\u03A0\",\n \"pi\":\"\\u03C0\",\n \"pitchfork\":\"\\u22D4\",\n \"piv\":\"\\u03D6\",\n \"planck\":\"\\u210F\",\n \"planckh\":\"\\u210E\",\n \"plankv\":\"\\u210F\",\n \"plus\":\"\\u002B\",\n \"plusacir\":\"\\u2A23\",\n \"plusb\":\"\\u229E\",\n \"pluscir\":\"\\u2A22\",\n \"plusdo\":\"\\u2214\",\n \"plusdu\":\"\\u2A25\",\n \"pluse\":\"\\u2A72\",\n \"PlusMinus\":\"\\u00B1\",\n \"plusmn\":\"\\u00B1\",\n \"plussim\":\"\\u2A26\",\n \"plustwo\":\"\\u2A27\",\n \"pm\":\"\\u00B1\",\n \"Poincareplane\":\"\\u210C\",\n \"pointint\":\"\\u2A15\",\n \"Popf\":\"\\u2119\",\n \"popf\":\"\\uD835\\uDD61\",\n \"pound\":\"\\u00A3\",\n \"Pr\":\"\\u2ABB\",\n \"pr\":\"\\u227A\",\n \"prap\":\"\\u2AB7\",\n \"prcue\":\"\\u227C\",\n \"prE\":\"\\u2AB3\",\n \"pre\":\"\\u2AAF\",\n \"prec\":\"\\u227A\",\n \"precapprox\":\"\\u2AB7\",\n \"preccurlyeq\":\"\\u227C\",\n \"Precedes\":\"\\u227A\",\n \"PrecedesEqual\":\"\\u2AAF\",\n \"PrecedesSlantEqual\":\"\\u227C\",\n \"PrecedesTilde\":\"\\u227E\",\n \"preceq\":\"\\u2AAF\",\n \"precnapprox\":\"\\u2AB9\",\n \"precneqq\":\"\\u2AB5\",\n \"precnsim\":\"\\u22E8\",\n \"precsim\":\"\\u227E\",\n \"Prime\":\"\\u2033\",\n \"prime\":\"\\u2032\",\n \"primes\":\"\\u2119\",\n \"prnap\":\"\\u2AB9\",\n \"prnE\":\"\\u2AB5\",\n \"prnsim\":\"\\u22E8\",\n \"prod\":\"\\u220F\",\n \"Product\":\"\\u220F\",\n \"profalar\":\"\\u232E\",\n \"profline\":\"\\u2312\",\n \"profsurf\":\"\\u2313\",\n \"prop\":\"\\u221D\",\n \"Proportion\":\"\\u2237\",\n \"Proportional\":\"\\u221D\",\n \"propto\":\"\\u221D\",\n \"prsim\":\"\\u227E\",\n \"prurel\":\"\\u22B0\",\n \"Pscr\":\"\\uD835\\uDCAB\",\n \"pscr\":\"\\uD835\\uDCC5\",\n \"Psi\":\"\\u03A8\",\n \"psi\":\"\\u03C8\",\n \"puncsp\":\"\\u2008\",\n \"Qfr\":\"\\uD835\\uDD14\",\n \"qfr\":\"\\uD835\\uDD2E\",\n \"qint\":\"\\u2A0C\",\n \"Qopf\":\"\\u211A\",\n \"qopf\":\"\\uD835\\uDD62\",\n \"qprime\":\"\\u2057\",\n \"Qscr\":\"\\uD835\\uDCAC\",\n \"qscr\":\"\\uD835\\uDCC6\",\n \"quaternions\":\"\\u210D\",\n \"quatint\":\"\\u2A16\",\n \"quest\":\"\\u003F\",\n \"questeq\":\"\\u225F\",\n \"QUOT\":\"\\u0022\",\n \"quot\":\"\\u0022\",\n \"rAarr\":\"\\u21DB\",\n \"race\":\"\\u223D\\u0331\",\n \"Racute\":\"\\u0154\",\n \"racute\":\"\\u0155\",\n \"radic\":\"\\u221A\",\n \"raemptyv\":\"\\u29B3\",\n \"Rang\":\"\\u27EB\",\n \"rang\":\"\\u27E9\",\n \"rangd\":\"\\u2992\",\n \"range\":\"\\u29A5\",\n \"rangle\":\"\\u27E9\",\n \"raquo\":\"\\u00BB\",\n \"Rarr\":\"\\u21A0\",\n \"rArr\":\"\\u21D2\",\n \"rarr\":\"\\u2192\",\n \"rarrap\":\"\\u2975\",\n \"rarrb\":\"\\u21E5\",\n \"rarrbfs\":\"\\u2920\",\n \"rarrc\":\"\\u2933\",\n \"rarrfs\":\"\\u291E\",\n \"rarrhk\":\"\\u21AA\",\n \"rarrlp\":\"\\u21AC\",\n \"rarrpl\":\"\\u2945\",\n \"rarrsim\":\"\\u2974\",\n \"Rarrtl\":\"\\u2916\",\n \"rarrtl\":\"\\u21A3\",\n \"rarrw\":\"\\u219D\",\n \"rAtail\":\"\\u291C\",\n \"ratail\":\"\\u291A\",\n \"ratio\":\"\\u2236\",\n \"rationals\":\"\\u211A\",\n \"RBarr\":\"\\u2910\",\n \"rBarr\":\"\\u290F\",\n \"rbarr\":\"\\u290D\",\n \"rbbrk\":\"\\u2773\",\n \"rbrace\":\"\\u007D\",\n \"rbrack\":\"\\u005D\",\n \"rbrke\":\"\\u298C\",\n \"rbrksld\":\"\\u298E\",\n \"rbrkslu\":\"\\u2990\",\n \"Rcaron\":\"\\u0158\",\n \"rcaron\":\"\\u0159\",\n \"Rcedil\":\"\\u0156\",\n \"rcedil\":\"\\u0157\",\n \"rceil\":\"\\u2309\",\n \"rcub\":\"\\u007D\",\n \"Rcy\":\"\\u0420\",\n \"rcy\":\"\\u0440\",\n \"rdca\":\"\\u2937\",\n \"rdldhar\":\"\\u2969\",\n \"rdquo\":\"\\u201D\",\n \"rdquor\":\"\\u201D\",\n \"rdsh\":\"\\u21B3\",\n \"Re\":\"\\u211C\",\n \"real\":\"\\u211C\",\n \"realine\":\"\\u211B\",\n \"realpart\":\"\\u211C\",\n \"reals\":\"\\u211D\",\n \"rect\":\"\\u25AD\",\n \"REG\":\"\\u00AE\",\n \"reg\":\"\\u00AE\",\n \"ReverseElement\":\"\\u220B\",\n \"ReverseEquilibrium\":\"\\u21CB\",\n \"ReverseUpEquilibrium\":\"\\u296F\",\n \"rfisht\":\"\\u297D\",\n \"rfloor\":\"\\u230B\",\n \"Rfr\":\"\\u211C\",\n \"rfr\":\"\\uD835\\uDD2F\",\n \"rHar\":\"\\u2964\",\n \"rhard\":\"\\u21C1\",\n \"rharu\":\"\\u21C0\",\n \"rharul\":\"\\u296C\",\n \"Rho\":\"\\u03A1\",\n \"rho\":\"\\u03C1\",\n \"rhov\":\"\\u03F1\",\n \"RightAngleBracket\":\"\\u27E9\",\n \"RightArrow\":\"\\u2192\",\n \"Rightarrow\":\"\\u21D2\",\n \"rightarrow\":\"\\u2192\",\n \"RightArrowBar\":\"\\u21E5\",\n \"RightArrowLeftArrow\":\"\\u21C4\",\n \"rightarrowtail\":\"\\u21A3\",\n \"RightCeiling\":\"\\u2309\",\n \"RightDoubleBracket\":\"\\u27E7\",\n \"RightDownTeeVector\":\"\\u295D\",\n \"RightDownVector\":\"\\u21C2\",\n \"RightDownVectorBar\":\"\\u2955\",\n \"RightFloor\":\"\\u230B\",\n \"rightharpoondown\":\"\\u21C1\",\n \"rightharpoonup\":\"\\u21C0\",\n \"rightleftarrows\":\"\\u21C4\",\n \"rightleftharpoons\":\"\\u21CC\",\n \"rightrightarrows\":\"\\u21C9\",\n \"rightsquigarrow\":\"\\u219D\",\n \"RightTee\":\"\\u22A2\",\n \"RightTeeArrow\":\"\\u21A6\",\n \"RightTeeVector\":\"\\u295B\",\n \"rightthreetimes\":\"\\u22CC\",\n \"RightTriangle\":\"\\u22B3\",\n \"RightTriangleBar\":\"\\u29D0\",\n \"RightTriangleEqual\":\"\\u22B5\",\n \"RightUpDownVector\":\"\\u294F\",\n \"RightUpTeeVector\":\"\\u295C\",\n \"RightUpVector\":\"\\u21BE\",\n \"RightUpVectorBar\":\"\\u2954\",\n \"RightVector\":\"\\u21C0\",\n \"RightVectorBar\":\"\\u2953\",\n \"ring\":\"\\u02DA\",\n \"risingdotseq\":\"\\u2253\",\n \"rlarr\":\"\\u21C4\",\n \"rlhar\":\"\\u21CC\",\n \"rlm\":\"\\u200F\",\n \"rmoust\":\"\\u23B1\",\n \"rmoustache\":\"\\u23B1\",\n \"rnmid\":\"\\u2AEE\",\n \"roang\":\"\\u27ED\",\n \"roarr\":\"\\u21FE\",\n \"robrk\":\"\\u27E7\",\n \"ropar\":\"\\u2986\",\n \"Ropf\":\"\\u211D\",\n \"ropf\":\"\\uD835\\uDD63\",\n \"roplus\":\"\\u2A2E\",\n \"rotimes\":\"\\u2A35\",\n \"RoundImplies\":\"\\u2970\",\n \"rpar\":\"\\u0029\",\n \"rpargt\":\"\\u2994\",\n \"rppolint\":\"\\u2A12\",\n \"rrarr\":\"\\u21C9\",\n \"Rrightarrow\":\"\\u21DB\",\n \"rsaquo\":\"\\u203A\",\n \"Rscr\":\"\\u211B\",\n \"rscr\":\"\\uD835\\uDCC7\",\n \"Rsh\":\"\\u21B1\",\n \"rsh\":\"\\u21B1\",\n \"rsqb\":\"\\u005D\",\n \"rsquo\":\"\\u2019\",\n \"rsquor\":\"\\u2019\",\n \"rthree\":\"\\u22CC\",\n \"rtimes\":\"\\u22CA\",\n \"rtri\":\"\\u25B9\",\n \"rtrie\":\"\\u22B5\",\n \"rtrif\":\"\\u25B8\",\n \"rtriltri\":\"\\u29CE\",\n \"RuleDelayed\":\"\\u29F4\",\n \"ruluhar\":\"\\u2968\",\n \"rx\":\"\\u211E\",\n \"Sacute\":\"\\u015A\",\n \"sacute\":\"\\u015B\",\n \"sbquo\":\"\\u201A\",\n \"Sc\":\"\\u2ABC\",\n \"sc\":\"\\u227B\",\n \"scap\":\"\\u2AB8\",\n \"Scaron\":\"\\u0160\",\n \"scaron\":\"\\u0161\",\n \"sccue\":\"\\u227D\",\n \"scE\":\"\\u2AB4\",\n \"sce\":\"\\u2AB0\",\n \"Scedil\":\"\\u015E\",\n \"scedil\":\"\\u015F\",\n \"Scirc\":\"\\u015C\",\n \"scirc\":\"\\u015D\",\n \"scnap\":\"\\u2ABA\",\n \"scnE\":\"\\u2AB6\",\n \"scnsim\":\"\\u22E9\",\n \"scpolint\":\"\\u2A13\",\n \"scsim\":\"\\u227F\",\n \"Scy\":\"\\u0421\",\n \"scy\":\"\\u0441\",\n \"sdot\":\"\\u22C5\",\n \"sdotb\":\"\\u22A1\",\n \"sdote\":\"\\u2A66\",\n \"searhk\":\"\\u2925\",\n \"seArr\":\"\\u21D8\",\n \"searr\":\"\\u2198\",\n \"searrow\":\"\\u2198\",\n \"sect\":\"\\u00A7\",\n \"semi\":\"\\u003B\",\n \"seswar\":\"\\u2929\",\n \"setminus\":\"\\u2216\",\n \"setmn\":\"\\u2216\",\n \"sext\":\"\\u2736\",\n \"Sfr\":\"\\uD835\\uDD16\",\n \"sfr\":\"\\uD835\\uDD30\",\n \"sfrown\":\"\\u2322\",\n \"sharp\":\"\\u266F\",\n \"SHCHcy\":\"\\u0429\",\n \"shchcy\":\"\\u0449\",\n \"SHcy\":\"\\u0428\",\n \"shcy\":\"\\u0448\",\n \"ShortDownArrow\":\"\\u2193\",\n \"ShortLeftArrow\":\"\\u2190\",\n \"shortmid\":\"\\u2223\",\n \"shortparallel\":\"\\u2225\",\n \"ShortRightArrow\":\"\\u2192\",\n \"ShortUpArrow\":\"\\u2191\",\n \"shy\":\"\\u00AD\",\n \"Sigma\":\"\\u03A3\",\n \"sigma\":\"\\u03C3\",\n \"sigmaf\":\"\\u03C2\",\n \"sigmav\":\"\\u03C2\",\n \"sim\":\"\\u223C\",\n \"simdot\":\"\\u2A6A\",\n \"sime\":\"\\u2243\",\n \"simeq\":\"\\u2243\",\n \"simg\":\"\\u2A9E\",\n \"simgE\":\"\\u2AA0\",\n \"siml\":\"\\u2A9D\",\n \"simlE\":\"\\u2A9F\",\n \"simne\":\"\\u2246\",\n \"simplus\":\"\\u2A24\",\n \"simrarr\":\"\\u2972\",\n \"slarr\":\"\\u2190\",\n \"SmallCircle\":\"\\u2218\",\n \"smallsetminus\":\"\\u2216\",\n \"smashp\":\"\\u2A33\",\n \"smeparsl\":\"\\u29E4\",\n \"smid\":\"\\u2223\",\n \"smile\":\"\\u2323\",\n \"smt\":\"\\u2AAA\",\n \"smte\":\"\\u2AAC\",\n \"smtes\":\"\\u2AAC\\uFE00\",\n \"SOFTcy\":\"\\u042C\",\n \"softcy\":\"\\u044C\",\n \"sol\":\"\\u002F\",\n \"solb\":\"\\u29C4\",\n \"solbar\":\"\\u233F\",\n \"Sopf\":\"\\uD835\\uDD4A\",\n \"sopf\":\"\\uD835\\uDD64\",\n \"spades\":\"\\u2660\",\n \"spadesuit\":\"\\u2660\",\n \"spar\":\"\\u2225\",\n \"sqcap\":\"\\u2293\",\n \"sqcaps\":\"\\u2293\\uFE00\",\n \"sqcup\":\"\\u2294\",\n \"sqcups\":\"\\u2294\\uFE00\",\n \"Sqrt\":\"\\u221A\",\n \"sqsub\":\"\\u228F\",\n \"sqsube\":\"\\u2291\",\n \"sqsubset\":\"\\u228F\",\n \"sqsubseteq\":\"\\u2291\",\n \"sqsup\":\"\\u2290\",\n \"sqsupe\":\"\\u2292\",\n \"sqsupset\":\"\\u2290\",\n \"sqsupseteq\":\"\\u2292\",\n \"squ\":\"\\u25A1\",\n \"Square\":\"\\u25A1\",\n \"square\":\"\\u25A1\",\n \"SquareIntersection\":\"\\u2293\",\n \"SquareSubset\":\"\\u228F\",\n \"SquareSubsetEqual\":\"\\u2291\",\n \"SquareSuperset\":\"\\u2290\",\n \"SquareSupersetEqual\":\"\\u2292\",\n \"SquareUnion\":\"\\u2294\",\n \"squarf\":\"\\u25AA\",\n \"squf\":\"\\u25AA\",\n \"srarr\":\"\\u2192\",\n \"Sscr\":\"\\uD835\\uDCAE\",\n \"sscr\":\"\\uD835\\uDCC8\",\n \"ssetmn\":\"\\u2216\",\n \"ssmile\":\"\\u2323\",\n \"sstarf\":\"\\u22C6\",\n \"Star\":\"\\u22C6\",\n \"star\":\"\\u2606\",\n \"starf\":\"\\u2605\",\n \"straightepsilon\":\"\\u03F5\",\n \"straightphi\":\"\\u03D5\",\n \"strns\":\"\\u00AF\",\n \"Sub\":\"\\u22D0\",\n \"sub\":\"\\u2282\",\n \"subdot\":\"\\u2ABD\",\n \"subE\":\"\\u2AC5\",\n \"sube\":\"\\u2286\",\n \"subedot\":\"\\u2AC3\",\n \"submult\":\"\\u2AC1\",\n \"subnE\":\"\\u2ACB\",\n \"subne\":\"\\u228A\",\n \"subplus\":\"\\u2ABF\",\n \"subrarr\":\"\\u2979\",\n \"Subset\":\"\\u22D0\",\n \"subset\":\"\\u2282\",\n \"subseteq\":\"\\u2286\",\n \"subseteqq\":\"\\u2AC5\",\n \"SubsetEqual\":\"\\u2286\",\n \"subsetneq\":\"\\u228A\",\n \"subsetneqq\":\"\\u2ACB\",\n \"subsim\":\"\\u2AC7\",\n \"subsub\":\"\\u2AD5\",\n \"subsup\":\"\\u2AD3\",\n \"succ\":\"\\u227B\",\n \"succapprox\":\"\\u2AB8\",\n \"succcurlyeq\":\"\\u227D\",\n \"Succeeds\":\"\\u227B\",\n \"SucceedsEqual\":\"\\u2AB0\",\n \"SucceedsSlantEqual\":\"\\u227D\",\n \"SucceedsTilde\":\"\\u227F\",\n \"succeq\":\"\\u2AB0\",\n \"succnapprox\":\"\\u2ABA\",\n \"succneqq\":\"\\u2AB6\",\n \"succnsim\":\"\\u22E9\",\n \"succsim\":\"\\u227F\",\n \"SuchThat\":\"\\u220B\",\n \"Sum\":\"\\u2211\",\n \"sum\":\"\\u2211\",\n \"sung\":\"\\u266A\",\n \"Sup\":\"\\u22D1\",\n \"sup\":\"\\u2283\",\n \"sup1\":\"\\u00B9\",\n \"sup2\":\"\\u00B2\",\n \"sup3\":\"\\u00B3\",\n \"supdot\":\"\\u2ABE\",\n \"supdsub\":\"\\u2AD8\",\n \"supE\":\"\\u2AC6\",\n \"supe\":\"\\u2287\",\n \"supedot\":\"\\u2AC4\",\n \"Superset\":\"\\u2283\",\n \"SupersetEqual\":\"\\u2287\",\n \"suphsol\":\"\\u27C9\",\n \"suphsub\":\"\\u2AD7\",\n \"suplarr\":\"\\u297B\",\n \"supmult\":\"\\u2AC2\",\n \"supnE\":\"\\u2ACC\",\n \"supne\":\"\\u228B\",\n \"supplus\":\"\\u2AC0\",\n \"Supset\":\"\\u22D1\",\n \"supset\":\"\\u2283\",\n \"supseteq\":\"\\u2287\",\n \"supseteqq\":\"\\u2AC6\",\n \"supsetneq\":\"\\u228B\",\n \"supsetneqq\":\"\\u2ACC\",\n \"supsim\":\"\\u2AC8\",\n \"supsub\":\"\\u2AD4\",\n \"supsup\":\"\\u2AD6\",\n \"swarhk\":\"\\u2926\",\n \"swArr\":\"\\u21D9\",\n \"swarr\":\"\\u2199\",\n \"swarrow\":\"\\u2199\",\n \"swnwar\":\"\\u292A\",\n \"szlig\":\"\\u00DF\",\n \"Tab\":\"\\u0009\",\n \"target\":\"\\u2316\",\n \"Tau\":\"\\u03A4\",\n \"tau\":\"\\u03C4\",\n \"tbrk\":\"\\u23B4\",\n \"Tcaron\":\"\\u0164\",\n \"tcaron\":\"\\u0165\",\n \"Tcedil\":\"\\u0162\",\n \"tcedil\":\"\\u0163\",\n \"Tcy\":\"\\u0422\",\n \"tcy\":\"\\u0442\",\n \"tdot\":\"\\u20DB\",\n \"telrec\":\"\\u2315\",\n \"Tfr\":\"\\uD835\\uDD17\",\n \"tfr\":\"\\uD835\\uDD31\",\n \"there4\":\"\\u2234\",\n \"Therefore\":\"\\u2234\",\n \"therefore\":\"\\u2234\",\n \"Theta\":\"\\u0398\",\n \"theta\":\"\\u03B8\",\n \"thetasym\":\"\\u03D1\",\n \"thetav\":\"\\u03D1\",\n \"thickapprox\":\"\\u2248\",\n \"thicksim\":\"\\u223C\",\n \"ThickSpace\":\"\\u205F\\u200A\",\n \"thinsp\":\"\\u2009\",\n \"ThinSpace\":\"\\u2009\",\n \"thkap\":\"\\u2248\",\n \"thksim\":\"\\u223C\",\n \"THORN\":\"\\u00DE\",\n \"thorn\":\"\\u00FE\",\n \"Tilde\":\"\\u223C\",\n \"tilde\":\"\\u02DC\",\n \"TildeEqual\":\"\\u2243\",\n \"TildeFullEqual\":\"\\u2245\",\n \"TildeTilde\":\"\\u2248\",\n \"times\":\"\\u00D7\",\n \"timesb\":\"\\u22A0\",\n \"timesbar\":\"\\u2A31\",\n \"timesd\":\"\\u2A30\",\n \"tint\":\"\\u222D\",\n \"toea\":\"\\u2928\",\n \"top\":\"\\u22A4\",\n \"topbot\":\"\\u2336\",\n \"topcir\":\"\\u2AF1\",\n \"Topf\":\"\\uD835\\uDD4B\",\n \"topf\":\"\\uD835\\uDD65\",\n \"topfork\":\"\\u2ADA\",\n \"tosa\":\"\\u2929\",\n \"tprime\":\"\\u2034\",\n \"TRADE\":\"\\u2122\",\n \"trade\":\"\\u2122\",\n \"triangle\":\"\\u25B5\",\n \"triangledown\":\"\\u25BF\",\n \"triangleleft\":\"\\u25C3\",\n \"trianglelefteq\":\"\\u22B4\",\n \"triangleq\":\"\\u225C\",\n \"triangleright\":\"\\u25B9\",\n \"trianglerighteq\":\"\\u22B5\",\n \"tridot\":\"\\u25EC\",\n \"trie\":\"\\u225C\",\n \"triminus\":\"\\u2A3A\",\n \"TripleDot\":\"\\u20DB\",\n \"triplus\":\"\\u2A39\",\n \"trisb\":\"\\u29CD\",\n \"tritime\":\"\\u2A3B\",\n \"trpezium\":\"\\u23E2\",\n \"Tscr\":\"\\uD835\\uDCAF\",\n \"tscr\":\"\\uD835\\uDCC9\",\n \"TScy\":\"\\u0426\",\n \"tscy\":\"\\u0446\",\n \"TSHcy\":\"\\u040B\",\n \"tshcy\":\"\\u045B\",\n \"Tstrok\":\"\\u0166\",\n \"tstrok\":\"\\u0167\",\n \"twixt\":\"\\u226C\",\n \"twoheadleftarrow\":\"\\u219E\",\n \"twoheadrightarrow\":\"\\u21A0\",\n \"Uacute\":\"\\u00DA\",\n \"uacute\":\"\\u00FA\",\n \"Uarr\":\"\\u219F\",\n \"uArr\":\"\\u21D1\",\n \"uarr\":\"\\u2191\",\n \"Uarrocir\":\"\\u2949\",\n \"Ubrcy\":\"\\u040E\",\n \"ubrcy\":\"\\u045E\",\n \"Ubreve\":\"\\u016C\",\n \"ubreve\":\"\\u016D\",\n \"Ucirc\":\"\\u00DB\",\n \"ucirc\":\"\\u00FB\",\n \"Ucy\":\"\\u0423\",\n \"ucy\":\"\\u0443\",\n \"udarr\":\"\\u21C5\",\n \"Udblac\":\"\\u0170\",\n \"udblac\":\"\\u0171\",\n \"udhar\":\"\\u296E\",\n \"ufisht\":\"\\u297E\",\n \"Ufr\":\"\\uD835\\uDD18\",\n \"ufr\":\"\\uD835\\uDD32\",\n \"Ugrave\":\"\\u00D9\",\n \"ugrave\":\"\\u00F9\",\n \"uHar\":\"\\u2963\",\n \"uharl\":\"\\u21BF\",\n \"uharr\":\"\\u21BE\",\n \"uhblk\":\"\\u2580\",\n \"ulcorn\":\"\\u231C\",\n \"ulcorner\":\"\\u231C\",\n \"ulcrop\":\"\\u230F\",\n \"ultri\":\"\\u25F8\",\n \"Umacr\":\"\\u016A\",\n \"umacr\":\"\\u016B\",\n \"uml\":\"\\u00A8\",\n \"UnderBar\":\"\\u005F\",\n \"UnderBrace\":\"\\u23DF\",\n \"UnderBracket\":\"\\u23B5\",\n \"UnderParenthesis\":\"\\u23DD\",\n \"Union\":\"\\u22C3\",\n \"UnionPlus\":\"\\u228E\",\n \"Uogon\":\"\\u0172\",\n \"uogon\":\"\\u0173\",\n \"Uopf\":\"\\uD835\\uDD4C\",\n \"uopf\":\"\\uD835\\uDD66\",\n \"UpArrow\":\"\\u2191\",\n \"Uparrow\":\"\\u21D1\",\n \"uparrow\":\"\\u2191\",\n \"UpArrowBar\":\"\\u2912\",\n \"UpArrowDownArrow\":\"\\u21C5\",\n \"UpDownArrow\":\"\\u2195\",\n \"Updownarrow\":\"\\u21D5\",\n \"updownarrow\":\"\\u2195\",\n \"UpEquilibrium\":\"\\u296E\",\n \"upharpoonleft\":\"\\u21BF\",\n \"upharpoonright\":\"\\u21BE\",\n \"uplus\":\"\\u228E\",\n \"UpperLeftArrow\":\"\\u2196\",\n \"UpperRightArrow\":\"\\u2197\",\n \"Upsi\":\"\\u03D2\",\n \"upsi\":\"\\u03C5\",\n \"upsih\":\"\\u03D2\",\n \"Upsilon\":\"\\u03A5\",\n \"upsilon\":\"\\u03C5\",\n \"UpTee\":\"\\u22A5\",\n \"UpTeeArrow\":\"\\u21A5\",\n \"upuparrows\":\"\\u21C8\",\n \"urcorn\":\"\\u231D\",\n \"urcorner\":\"\\u231D\",\n \"urcrop\":\"\\u230E\",\n \"Uring\":\"\\u016E\",\n \"uring\":\"\\u016F\",\n \"urtri\":\"\\u25F9\",\n \"Uscr\":\"\\uD835\\uDCB0\",\n \"uscr\":\"\\uD835\\uDCCA\",\n \"utdot\":\"\\u22F0\",\n \"Utilde\":\"\\u0168\",\n \"utilde\":\"\\u0169\",\n \"utri\":\"\\u25B5\",\n \"utrif\":\"\\u25B4\",\n \"uuarr\":\"\\u21C8\",\n \"Uuml\":\"\\u00DC\",\n \"uuml\":\"\\u00FC\",\n \"uwangle\":\"\\u29A7\",\n \"vangrt\":\"\\u299C\",\n \"varepsilon\":\"\\u03F5\",\n \"varkappa\":\"\\u03F0\",\n \"varnothing\":\"\\u2205\",\n \"varphi\":\"\\u03D5\",\n \"varpi\":\"\\u03D6\",\n \"varpropto\":\"\\u221D\",\n \"vArr\":\"\\u21D5\",\n \"varr\":\"\\u2195\",\n \"varrho\":\"\\u03F1\",\n \"varsigma\":\"\\u03C2\",\n \"varsubsetneq\":\"\\u228A\\uFE00\",\n \"varsubsetneqq\":\"\\u2ACB\\uFE00\",\n \"varsupsetneq\":\"\\u228B\\uFE00\",\n \"varsupsetneqq\":\"\\u2ACC\\uFE00\",\n \"vartheta\":\"\\u03D1\",\n \"vartriangleleft\":\"\\u22B2\",\n \"vartriangleright\":\"\\u22B3\",\n \"Vbar\":\"\\u2AEB\",\n \"vBar\":\"\\u2AE8\",\n \"vBarv\":\"\\u2AE9\",\n \"Vcy\":\"\\u0412\",\n \"vcy\":\"\\u0432\",\n \"VDash\":\"\\u22AB\",\n \"Vdash\":\"\\u22A9\",\n \"vDash\":\"\\u22A8\",\n \"vdash\":\"\\u22A2\",\n \"Vdashl\":\"\\u2AE6\",\n \"Vee\":\"\\u22C1\",\n \"vee\":\"\\u2228\",\n \"veebar\":\"\\u22BB\",\n \"veeeq\":\"\\u225A\",\n \"vellip\":\"\\u22EE\",\n \"Verbar\":\"\\u2016\",\n \"verbar\":\"\\u007C\",\n \"Vert\":\"\\u2016\",\n \"vert\":\"\\u007C\",\n \"VerticalBar\":\"\\u2223\",\n \"VerticalLine\":\"\\u007C\",\n \"VerticalSeparator\":\"\\u2758\",\n \"VerticalTilde\":\"\\u2240\",\n \"VeryThinSpace\":\"\\u200A\",\n \"Vfr\":\"\\uD835\\uDD19\",\n \"vfr\":\"\\uD835\\uDD33\",\n \"vltri\":\"\\u22B2\",\n \"vnsub\":\"\\u2282\\u20D2\",\n \"vnsup\":\"\\u2283\\u20D2\",\n \"Vopf\":\"\\uD835\\uDD4D\",\n \"vopf\":\"\\uD835\\uDD67\",\n \"vprop\":\"\\u221D\",\n \"vrtri\":\"\\u22B3\",\n \"Vscr\":\"\\uD835\\uDCB1\",\n \"vscr\":\"\\uD835\\uDCCB\",\n \"vsubnE\":\"\\u2ACB\\uFE00\",\n \"vsubne\":\"\\u228A\\uFE00\",\n \"vsupnE\":\"\\u2ACC\\uFE00\",\n \"vsupne\":\"\\u228B\\uFE00\",\n \"Vvdash\":\"\\u22AA\",\n \"vzigzag\":\"\\u299A\",\n \"Wcirc\":\"\\u0174\",\n \"wcirc\":\"\\u0175\",\n \"wedbar\":\"\\u2A5F\",\n \"Wedge\":\"\\u22C0\",\n \"wedge\":\"\\u2227\",\n \"wedgeq\":\"\\u2259\",\n \"weierp\":\"\\u2118\",\n \"Wfr\":\"\\uD835\\uDD1A\",\n \"wfr\":\"\\uD835\\uDD34\",\n \"Wopf\":\"\\uD835\\uDD4E\",\n \"wopf\":\"\\uD835\\uDD68\",\n \"wp\":\"\\u2118\",\n \"wr\":\"\\u2240\",\n \"wreath\":\"\\u2240\",\n \"Wscr\":\"\\uD835\\uDCB2\",\n \"wscr\":\"\\uD835\\uDCCC\",\n \"xcap\":\"\\u22C2\",\n \"xcirc\":\"\\u25EF\",\n \"xcup\":\"\\u22C3\",\n \"xdtri\":\"\\u25BD\",\n \"Xfr\":\"\\uD835\\uDD1B\",\n \"xfr\":\"\\uD835\\uDD35\",\n \"xhArr\":\"\\u27FA\",\n \"xharr\":\"\\u27F7\",\n \"Xi\":\"\\u039E\",\n \"xi\":\"\\u03BE\",\n \"xlArr\":\"\\u27F8\",\n \"xlarr\":\"\\u27F5\",\n \"xmap\":\"\\u27FC\",\n \"xnis\":\"\\u22FB\",\n \"xodot\":\"\\u2A00\",\n \"Xopf\":\"\\uD835\\uDD4F\",\n \"xopf\":\"\\uD835\\uDD69\",\n \"xoplus\":\"\\u2A01\",\n \"xotime\":\"\\u2A02\",\n \"xrArr\":\"\\u27F9\",\n \"xrarr\":\"\\u27F6\",\n \"Xscr\":\"\\uD835\\uDCB3\",\n \"xscr\":\"\\uD835\\uDCCD\",\n \"xsqcup\":\"\\u2A06\",\n \"xuplus\":\"\\u2A04\",\n \"xutri\":\"\\u25B3\",\n \"xvee\":\"\\u22C1\",\n \"xwedge\":\"\\u22C0\",\n \"Yacute\":\"\\u00DD\",\n \"yacute\":\"\\u00FD\",\n \"YAcy\":\"\\u042F\",\n \"yacy\":\"\\u044F\",\n \"Ycirc\":\"\\u0176\",\n \"ycirc\":\"\\u0177\",\n \"Ycy\":\"\\u042B\",\n \"ycy\":\"\\u044B\",\n \"yen\":\"\\u00A5\",\n \"Yfr\":\"\\uD835\\uDD1C\",\n \"yfr\":\"\\uD835\\uDD36\",\n \"YIcy\":\"\\u0407\",\n \"yicy\":\"\\u0457\",\n \"Yopf\":\"\\uD835\\uDD50\",\n \"yopf\":\"\\uD835\\uDD6A\",\n \"Yscr\":\"\\uD835\\uDCB4\",\n \"yscr\":\"\\uD835\\uDCCE\",\n \"YUcy\":\"\\u042E\",\n \"yucy\":\"\\u044E\",\n \"Yuml\":\"\\u0178\",\n \"yuml\":\"\\u00FF\",\n \"Zacute\":\"\\u0179\",\n \"zacute\":\"\\u017A\",\n \"Zcaron\":\"\\u017D\",\n \"zcaron\":\"\\u017E\",\n \"Zcy\":\"\\u0417\",\n \"zcy\":\"\\u0437\",\n \"Zdot\":\"\\u017B\",\n \"zdot\":\"\\u017C\",\n \"zeetrf\":\"\\u2128\",\n \"ZeroWidthSpace\":\"\\u200B\",\n \"Zeta\":\"\\u0396\",\n \"zeta\":\"\\u03B6\",\n \"Zfr\":\"\\u2128\",\n \"zfr\":\"\\uD835\\uDD37\",\n \"ZHcy\":\"\\u0416\",\n \"zhcy\":\"\\u0436\",\n \"zigrarr\":\"\\u21DD\",\n \"Zopf\":\"\\u2124\",\n \"zopf\":\"\\uD835\\uDD6B\",\n \"Zscr\":\"\\uD835\\uDCB5\",\n \"zscr\":\"\\uD835\\uDCCF\",\n \"zwj\":\"\\u200D\",\n \"zwnj\":\"\\u200C\"\n};\n","'use strict';\n\n/**\n * Utility functions\n */\n\nfunction typeOf(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n return typeOf(obj) === '[object String]';\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n return object\n ? hasOwn.call(object, key)\n : false;\n}\n\n// Extend objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = [].slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar UNESCAPE_MD_RE = /\\\\([\\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) { return str; }\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false; }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false; }\n if (c === 0x0B) { return false; }\n if (c >= 0x0E && c <= 0x1F) { return false; }\n if (c >= 0x7F && c <= 0x9F) { return false; }\n // out of range\n if (c > 0x10FFFF) { return false; }\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n\n return String.fromCharCode(surrogate1, surrogate2);\n }\n return String.fromCharCode(c);\n}\n\nvar NAMED_ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n } else if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ?\n parseInt(name.slice(2), 16)\n :\n parseInt(name.slice(1), 10);\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n return match;\n}\n\nfunction replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(NAMED_ENTITY_RE, replaceEntityPattern);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint;\nexports.replaceEntities = replaceEntities;\nexports.escapeHtml = escapeHtml;\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar has = require('./common/utils').has;\nvar unescapeMd = require('./common/utils').unescapeMd;\nvar replaceEntities = require('./common/utils').replaceEntities;\nvar escapeHtml = require('./common/utils').escapeHtml;\n\n/**\n * Renderer rules cache\n */\n\nvar rules = {};\n\n/**\n * Blockquotes\n */\n\nrules.blockquote_open = function(/* tokens, idx, options, env */) {\n return '
    \\n';\n};\n\nrules.blockquote_close = function(tokens, idx /*, options, env */) {\n return '
    ' + getBreak(tokens, idx);\n};\n\n/**\n * Code\n */\n\nrules.code = function(tokens, idx /*, options, env */) {\n if (tokens[idx].block) {\n return '
    ' + escapeHtml(tokens[idx].content) + '
    ' + getBreak(tokens, idx);\n }\n return '' + escapeHtml(tokens[idx].content) + '';\n};\n\n/**\n * Fenced code blocks\n */\n\nrules.fence = function(tokens, idx, options, env, instance) {\n var token = tokens[idx];\n var langClass = '';\n var langPrefix = options.langPrefix;\n var langName = '', fences, fenceName;\n var highlighted;\n\n if (token.params) {\n\n //\n // ```foo bar\n //\n // Try custom renderer \"foo\" first. That will simplify overwrite\n // for diagrams, latex, and any other fenced block with custom look\n //\n\n fences = token.params.split(/\\s+/g);\n fenceName = fences.join(' ');\n\n if (has(instance.rules.fence_custom, fences[0])) {\n return instance.rules.fence_custom[fences[0]](tokens, idx, options, env, instance);\n }\n\n langName = escapeHtml(replaceEntities(unescapeMd(fenceName)));\n langClass = ' class=\"' + langPrefix + langName + '\"';\n }\n\n if (options.highlight) {\n highlighted = options.highlight.apply(options.highlight, [ token.content ].concat(fences))\n || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n return '
    '\n        + highlighted\n        + '
    '\n + getBreak(tokens, idx);\n};\n\nrules.fence_custom = {};\n\n/**\n * Headings\n */\n\nrules.heading_open = function(tokens, idx /*, options, env */) {\n return '';\n};\nrules.heading_close = function(tokens, idx /*, options, env */) {\n return '\\n';\n};\n\n/**\n * Horizontal rules\n */\n\nrules.hr = function(tokens, idx, options /*, env */) {\n return (options.xhtmlOut ? '
    ' : '
    ') + getBreak(tokens, idx);\n};\n\n/**\n * Bullets\n */\n\nrules.bullet_list_open = function(/* tokens, idx, options, env */) {\n return '
      \\n';\n};\nrules.bullet_list_close = function(tokens, idx /*, options, env */) {\n return '
    ' + getBreak(tokens, idx);\n};\n\n/**\n * List items\n */\n\nrules.list_item_open = function(/* tokens, idx, options, env */) {\n return '
  • ';\n};\nrules.list_item_close = function(/* tokens, idx, options, env */) {\n return '
  • \\n';\n};\n\n/**\n * Ordered list items\n */\n\nrules.ordered_list_open = function(tokens, idx /*, options, env */) {\n var token = tokens[idx];\n var order = token.order > 1 ? ' start=\"' + token.order + '\"' : '';\n return '\\n';\n};\nrules.ordered_list_close = function(tokens, idx /*, options, env */) {\n return '' + getBreak(tokens, idx);\n};\n\n/**\n * Paragraphs\n */\n\nrules.paragraph_open = function(tokens, idx /*, options, env */) {\n return tokens[idx].tight ? '' : '

    ';\n};\nrules.paragraph_close = function(tokens, idx /*, options, env */) {\n var addBreak = !(tokens[idx].tight && idx && tokens[idx - 1].type === 'inline' && !tokens[idx - 1].content);\n return (tokens[idx].tight ? '' : '

    ') + (addBreak ? getBreak(tokens, idx) : '');\n};\n\n/**\n * Links\n */\n\nrules.link_open = function(tokens, idx, options /* env */) {\n var title = tokens[idx].title ? (' title=\"' + escapeHtml(replaceEntities(tokens[idx].title)) + '\"') : '';\n var target = options.linkTarget ? (' target=\"' + options.linkTarget + '\"') : '';\n return '
    ';\n};\nrules.link_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Images\n */\n\nrules.image = function(tokens, idx, options /*, env */) {\n var src = ' src=\"' + escapeHtml(tokens[idx].src) + '\"';\n var title = tokens[idx].title ? (' title=\"' + escapeHtml(replaceEntities(tokens[idx].title)) + '\"') : '';\n var alt = ' alt=\"' + (tokens[idx].alt ? escapeHtml(replaceEntities(unescapeMd(tokens[idx].alt))) : '') + '\"';\n var suffix = options.xhtmlOut ? ' /' : '';\n return '';\n};\n\n/**\n * Tables\n */\n\nrules.table_open = function(/* tokens, idx, options, env */) {\n return '\\n';\n};\nrules.table_close = function(/* tokens, idx, options, env */) {\n return '
    \\n';\n};\nrules.thead_open = function(/* tokens, idx, options, env */) {\n return '\\n';\n};\nrules.thead_close = function(/* tokens, idx, options, env */) {\n return '\\n';\n};\nrules.tbody_open = function(/* tokens, idx, options, env */) {\n return '\\n';\n};\nrules.tbody_close = function(/* tokens, idx, options, env */) {\n return '\\n';\n};\nrules.tr_open = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.tr_close = function(/* tokens, idx, options, env */) {\n return '\\n';\n};\nrules.th_open = function(tokens, idx /*, options, env */) {\n var token = tokens[idx];\n return '';\n};\nrules.th_close = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.td_open = function(tokens, idx /*, options, env */) {\n var token = tokens[idx];\n return '';\n};\nrules.td_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Bold\n */\n\nrules.strong_open = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.strong_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Italicize\n */\n\nrules.em_open = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.em_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Strikethrough\n */\n\nrules.del_open = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.del_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Insert\n */\n\nrules.ins_open = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.ins_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Highlight\n */\n\nrules.mark_open = function(/* tokens, idx, options, env */) {\n return '';\n};\nrules.mark_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Super- and sub-script\n */\n\nrules.sub = function(tokens, idx /*, options, env */) {\n return '' + escapeHtml(tokens[idx].content) + '';\n};\nrules.sup = function(tokens, idx /*, options, env */) {\n return '' + escapeHtml(tokens[idx].content) + '';\n};\n\n/**\n * Breaks\n */\n\nrules.hardbreak = function(tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
    \\n' : '
    \\n';\n};\nrules.softbreak = function(tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
    \\n' : '
    \\n') : '\\n';\n};\n\n/**\n * Text\n */\n\nrules.text = function(tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content);\n};\n\n/**\n * Content\n */\n\nrules.htmlblock = function(tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\nrules.htmltag = function(tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\n\n/**\n * Abbreviations, initialism\n */\n\nrules.abbr_open = function(tokens, idx /*, options, env */) {\n return '';\n};\nrules.abbr_close = function(/* tokens, idx, options, env */) {\n return '';\n};\n\n/**\n * Footnotes\n */\n\nrules.footnote_ref = function(tokens, idx) {\n var n = Number(tokens[idx].id + 1).toString();\n var id = 'fnref' + n;\n if (tokens[idx].subId > 0) {\n id += ':' + tokens[idx].subId;\n }\n return '[' + n + ']';\n};\nrules.footnote_block_open = function(tokens, idx, options) {\n var hr = options.xhtmlOut\n ? '
    \\n'\n : '
    \\n';\n return hr + '
    \\n
      \\n';\n};\nrules.footnote_block_close = function() {\n return '
    \\n
    \\n';\n};\nrules.footnote_open = function(tokens, idx) {\n var id = Number(tokens[idx].id + 1).toString();\n return '
  • ';\n};\nrules.footnote_close = function() {\n return '
  • \\n';\n};\nrules.footnote_anchor = function(tokens, idx) {\n var n = Number(tokens[idx].id + 1).toString();\n var id = 'fnref' + n;\n if (tokens[idx].subId > 0) {\n id += ':' + tokens[idx].subId;\n }\n return ' ';\n};\n\n/**\n * Definition lists\n */\n\nrules.dl_open = function() {\n return '
    \\n';\n};\nrules.dt_open = function() {\n return '
    ';\n};\nrules.dd_open = function() {\n return '
    ';\n};\nrules.dl_close = function() {\n return '
    \\n';\n};\nrules.dt_close = function() {\n return '\\n';\n};\nrules.dd_close = function() {\n return '\\n';\n};\n\n/**\n * Helper functions\n */\n\nfunction nextToken(tokens, idx) {\n if (++idx >= tokens.length - 2) {\n return idx;\n }\n if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) &&\n (tokens[idx + 1].type === 'inline' && tokens[idx + 1].content.length === 0) &&\n (tokens[idx + 2].type === 'paragraph_close' && tokens[idx + 2].tight)) {\n return nextToken(tokens, idx + 2);\n }\n return idx;\n}\n\n/**\n * Check to see if `\\n` is needed before the next token.\n *\n * @param {Array} `tokens`\n * @param {Number} `idx`\n * @return {String} Empty string or newline\n * @api private\n */\n\nvar getBreak = rules.getBreak = function getBreak(tokens, idx) {\n idx = nextToken(tokens, idx);\n if (idx < tokens.length && tokens[idx].type === 'list_item_close') {\n return '';\n }\n return '\\n';\n};\n\n/**\n * Expose `rules`\n */\n\nmodule.exports = rules;\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar utils = require('./common/utils');\nvar rules = require('./rules');\n\n/**\n * Expose `Renderer`\n */\n\nmodule.exports = Renderer;\n\n/**\n * Renderer class. Renders HTML and exposes `rules` to allow\n * local modifications.\n */\n\nfunction Renderer() {\n this.rules = utils.assign({}, rules);\n\n // exported helper, for custom rules only\n this.getBreak = rules.getBreak;\n}\n\n/**\n * Render a string of inline HTML with the given `tokens` and\n * `options`.\n *\n * @param {Array} `tokens`\n * @param {Object} `options`\n * @param {Object} `env`\n * @return {String}\n * @api public\n */\n\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var _rules = this.rules;\n var len = tokens.length, i = 0;\n var result = '';\n\n while (len--) {\n result += _rules[tokens[i].type](tokens, i++, options, env, this);\n }\n\n return result;\n};\n\n/**\n * Render a string of HTML with the given `tokens` and\n * `options`.\n *\n * @param {Array} `tokens`\n * @param {Object} `options`\n * @param {Object} `env`\n * @return {String}\n * @api public\n */\n\nRenderer.prototype.render = function (tokens, options, env) {\n var _rules = this.rules;\n var len = tokens.length, i = -1;\n var result = '';\n\n while (++i < len) {\n if (tokens[i].type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else {\n result += _rules[tokens[i].type](tokens, i, options, env, this);\n }\n }\n return result;\n};\n","'use strict';\n\n/**\n * Ruler is a helper class for building responsibility chains from\n * parse rules. It allows:\n *\n * - easy stack rules chains\n * - getting main chain and named chains content (as arrays of functions)\n *\n * Helper methods, should not be used directly.\n * @api private\n */\n\nfunction Ruler() {\n // List of added rules. Each element is:\n //\n // { name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ] }\n //\n this.__rules__ = [];\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - digital anchor for fast filtering by charcodes.\n //\n this.__cache__ = null;\n}\n\n/**\n * Find the index of a rule by `name`.\n *\n * @param {String} `name`\n * @return {Number} Index of the given `name`\n * @api private\n */\n\nRuler.prototype.__find__ = function (name) {\n var len = this.__rules__.length;\n var i = -1;\n\n while (len--) {\n if (this.__rules__[++i].name === name) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Build the rules lookup cache\n *\n * @api private\n */\n\nRuler.prototype.__compile__ = function () {\n var self = this;\n var chains = [ '' ];\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n if (chain && rule.alt.indexOf(chain) < 0) {\n return;\n }\n self.__cache__[chain].push(rule.fn);\n });\n });\n};\n\n/**\n * Ruler public methods\n * ------------------------------------------------\n */\n\n/**\n * Replace rule function\n *\n * @param {String} `name` Rule name\n * @param {Function `fn`\n * @param {Object} `options`\n * @api private\n */\n\nRuler.prototype.at = function (name, fn, options) {\n var idx = this.__find__(name);\n var opt = options || {};\n\n if (idx === -1) {\n throw new Error('Parser rule not found: ' + name);\n }\n\n this.__rules__[idx].fn = fn;\n this.__rules__[idx].alt = opt.alt || [];\n this.__cache__ = null;\n};\n\n/**\n * Add a rule to the chain before given the `ruleName`.\n *\n * @param {String} `beforeName`\n * @param {String} `ruleName`\n * @param {Function} `fn`\n * @param {Object} `options`\n * @api private\n */\n\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n var idx = this.__find__(beforeName);\n var opt = options || {};\n\n if (idx === -1) {\n throw new Error('Parser rule not found: ' + beforeName);\n }\n\n this.__rules__.splice(idx, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Add a rule to the chain after the given `ruleName`.\n *\n * @param {String} `afterName`\n * @param {String} `ruleName`\n * @param {Function} `fn`\n * @param {Object} `options`\n * @api private\n */\n\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n var idx = this.__find__(afterName);\n var opt = options || {};\n\n if (idx === -1) {\n throw new Error('Parser rule not found: ' + afterName);\n }\n\n this.__rules__.splice(idx + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Add a rule to the end of chain.\n *\n * @param {String} `ruleName`\n * @param {Function} `fn`\n * @param {Object} `options`\n * @return {String}\n */\n\nRuler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Enable a rule or list of rules.\n *\n * @param {String|Array} `list` Name or array of rule names to enable\n * @param {Boolean} `strict` If `true`, all non listed rules will be disabled.\n * @api private\n */\n\nRuler.prototype.enable = function (list, strict) {\n list = !Array.isArray(list)\n ? [ list ]\n : list;\n\n // In strict mode disable all existing rules first\n if (strict) {\n this.__rules__.forEach(function (rule) {\n rule.enabled = false;\n });\n }\n\n // Search by name and enable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n if (idx < 0) {\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = true;\n }, this);\n\n this.__cache__ = null;\n};\n\n\n/**\n * Disable a rule or list of rules.\n *\n * @param {String|Array} `list` Name or array of rule names to disable\n * @api private\n */\n\nRuler.prototype.disable = function (list) {\n list = !Array.isArray(list)\n ? [ list ]\n : list;\n\n // Search by name and disable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n if (idx < 0) {\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = false;\n }, this);\n\n this.__cache__ = null;\n};\n\n/**\n * Get a rules list as an array of functions.\n *\n * @param {String} `chainName`\n * @return {Object}\n * @api private\n */\n\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n }\n return this.__cache__[chainName] || [];\n};\n\n/**\n * Expose `Ruler`\n */\n\nmodule.exports = Ruler;\n","'use strict';\n\nmodule.exports = function block(state) {\n\n if (state.inlineMode) {\n state.tokens.push({\n type: 'inline',\n content: state.src.replace(/\\n/g, ' ').trim(),\n level: 0,\n lines: [ 0, 1 ],\n children: []\n });\n\n } else {\n state.block.parse(state.src, state.options, state.env, state.tokens);\n }\n};\n","// Inline parser state\n\n'use strict';\n\nfunction StateInline(src, parserInline, options, env, outTokens) {\n this.src = src;\n this.env = env;\n this.options = options;\n this.parser = parserInline;\n this.tokens = outTokens;\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0;\n\n this.cache = []; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n // Link parser state vars\n\n this.isInLabel = false; // Set true when seek link label - we should disable\n // \"paired\" rules (emphasis, strikes) to not skip\n // tailing `]`\n\n this.linkLevel = 0; // Increment for each nesting link. Used to prevent\n // nesting in definitions\n\n this.linkContent = ''; // Temporary storage for link url\n\n this.labelUnmatchedScopes = 0; // Track unpaired `[` for link labels\n // (backtrack optimization)\n}\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n this.tokens.push({\n type: 'text',\n content: this.pending,\n level: this.pendingLevel\n });\n this.pending = '';\n};\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (token) {\n if (this.pending) {\n this.pushPending();\n }\n\n this.tokens.push(token);\n this.pendingLevel = this.level;\n};\n\n// Store value to cache.\n// !!! Implementation has parser-specific optimizations\n// !!! keys MUST be integer, >= 0; values MUST be integer, > 0\n//\nStateInline.prototype.cacheSet = function (key, val) {\n for (var i = this.cache.length; i <= key; i++) {\n this.cache.push(0);\n }\n\n this.cache[key] = val;\n};\n\n// Get cache value\n//\nStateInline.prototype.cacheGet = function (key) {\n return key < this.cache.length ? this.cache[key] : 0;\n};\n\nmodule.exports = StateInline;\n","'use strict';\n\n/**\n * Parse link labels\n *\n * This function assumes that first character (`[`) already matches;\n * returns the end of the label.\n *\n * @param {Object} state\n * @param {Number} start\n * @api private\n */\n\nmodule.exports = function parseLinkLabel(state, start) {\n var level, found, marker,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos,\n oldFlag = state.isInLabel;\n\n if (state.isInLabel) { return -1; }\n\n if (state.labelUnmatchedScopes) {\n state.labelUnmatchedScopes--;\n return -1;\n }\n\n state.pos = start + 1;\n state.isInLabel = true;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n if (marker === 0x5B /* [ */) {\n level++;\n } else if (marker === 0x5D /* ] */) {\n level--;\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n state.parser.skipToken(state);\n }\n\n if (found) {\n labelEnd = state.pos;\n state.labelUnmatchedScopes = 0;\n } else {\n state.labelUnmatchedScopes = level - 1;\n }\n\n // restore old state\n state.pos = oldPos;\n state.isInLabel = oldFlag;\n\n return labelEnd;\n};\n","// Parse abbreviation definitions, i.e. `*[abbr]: description`\n//\n\n'use strict';\n\n\nvar StateInline = require('../rules_inline/state_inline');\nvar parseLinkLabel = require('../helpers/parse_link_label');\n\n\nfunction parseAbbr(str, parserInline, options, env) {\n var state, labelEnd, pos, max, label, title;\n\n if (str.charCodeAt(0) !== 0x2A/* * */) { return -1; }\n if (str.charCodeAt(1) !== 0x5B/* [ */) { return -1; }\n\n if (str.indexOf(']:') === -1) { return -1; }\n\n state = new StateInline(str, parserInline, options, env, []);\n labelEnd = parseLinkLabel(state, 1);\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; }\n\n max = state.posMax;\n\n // abbr title is always one line, so looking for ending \"\\n\" here\n for (pos = labelEnd + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x0A) { break; }\n }\n\n label = str.slice(2, labelEnd);\n title = str.slice(labelEnd + 2, pos).trim();\n if (title.length === 0) { return -1; }\n if (!env.abbreviations) { env.abbreviations = {}; }\n // prepend ':' to avoid conflict with Object.prototype members\n if (typeof env.abbreviations[':' + label] === 'undefined') {\n env.abbreviations[':' + label] = title;\n }\n\n return pos;\n}\n\nmodule.exports = function abbr(state) {\n var tokens = state.tokens, i, l, content, pos;\n\n if (state.inlineMode) {\n return;\n }\n\n // Parse inlines\n for (i = 1, l = tokens.length - 1; i < l; i++) {\n if (tokens[i - 1].type === 'paragraph_open' &&\n tokens[i].type === 'inline' &&\n tokens[i + 1].type === 'paragraph_close') {\n\n content = tokens[i].content;\n while (content.length) {\n pos = parseAbbr(content, state.inline, state.options, state.env);\n if (pos < 0) { break; }\n content = content.slice(pos).trim();\n }\n\n tokens[i].content = content;\n if (!content.length) {\n tokens[i - 1].tight = true;\n tokens[i + 1].tight = true;\n }\n }\n }\n};\n","'use strict';\n\nvar replaceEntities = require('../common/utils').replaceEntities;\n\nmodule.exports = function normalizeLink(url) {\n var normalized = replaceEntities(url);\n // We shouldn't care about the result of malformed URIs,\n // and should not throw an exception.\n try {\n normalized = decodeURI(normalized);\n } catch (err) {}\n return encodeURI(normalized);\n};\n","'use strict';\n\n\nvar normalizeLink = require('./normalize_link');\nvar unescapeMd = require('../common/utils').unescapeMd;\n\n/**\n * Parse link destination\n *\n * - on success it returns a string and updates state.pos;\n * - on failure it returns null\n *\n * @param {Object} state\n * @param {Number} pos\n * @api private\n */\n\nmodule.exports = function parseLinkDestination(state, pos) {\n var code, level, link,\n start = pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) === 0x3C /* < */) {\n pos++;\n while (pos < max) {\n code = state.src.charCodeAt(pos);\n if (code === 0x0A /* \\n */) { return false; }\n if (code === 0x3E /* > */) {\n link = normalizeLink(unescapeMd(state.src.slice(start + 1, pos)));\n if (!state.parser.validateLink(link)) { return false; }\n state.pos = pos + 1;\n state.linkContent = link;\n return true;\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n // no closing '>'\n return false;\n }\n\n // this should be ... } else { ... branch\n\n level = 0;\n while (pos < max) {\n code = state.src.charCodeAt(pos);\n\n if (code === 0x20) { break; }\n\n if (code > 0x08 && code < 0x0e) { break; }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n if (code === 0x28 /* ( */) {\n level++;\n if (level > 1) { break; }\n }\n\n if (code === 0x29 /* ) */) {\n level--;\n if (level < 0) { break; }\n }\n\n pos++;\n }\n\n if (start === pos) { return false; }\n\n link = unescapeMd(state.src.slice(start, pos));\n if (!state.parser.validateLink(link)) { return false; }\n\n state.linkContent = link;\n state.pos = pos;\n return true;\n};\n","'use strict';\n\n\nvar unescapeMd = require('../common/utils').unescapeMd;\n\n/**\n * Parse link title\n *\n * - on success it returns a string and updates state.pos;\n * - on failure it returns null\n *\n * @param {Object} state\n * @param {Number} pos\n * @api private\n */\n\nmodule.exports = function parseLinkTitle(state, pos) {\n var code,\n start = pos,\n max = state.posMax,\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return false; }\n\n pos++;\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29; }\n\n while (pos < max) {\n code = state.src.charCodeAt(pos);\n if (code === marker) {\n state.pos = pos + 1;\n state.linkContent = unescapeMd(state.src.slice(start + 1, pos));\n return true;\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n return false;\n};\n","'use strict';\n\nmodule.exports = function normalizeReference(str) {\n // use .toUpperCase() instead of .toLowerCase()\n // here to avoid a conflict with Object.prototype\n // members (most notably, `__proto__`)\n return str.trim().replace(/\\s+/g, ' ').toUpperCase();\n};\n","'use strict';\n\n\nvar StateInline = require('../rules_inline/state_inline');\nvar parseLinkLabel = require('../helpers/parse_link_label');\nvar parseLinkDestination = require('../helpers/parse_link_destination');\nvar parseLinkTitle = require('../helpers/parse_link_title');\nvar normalizeReference = require('../helpers/normalize_reference');\n\n\nfunction parseReference(str, parser, options, env) {\n var state, labelEnd, pos, max, code, start, href, title, label;\n\n if (str.charCodeAt(0) !== 0x5B/* [ */) { return -1; }\n\n if (str.indexOf(']:') === -1) { return -1; }\n\n state = new StateInline(str, parser, options, env, []);\n labelEnd = parseLinkLabel(state, 0);\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return -1; }\n\n max = state.posMax;\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (code !== 0x20 && code !== 0x0A) { break; }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n if (!parseLinkDestination(state, pos)) { return -1; }\n href = state.linkContent;\n pos = state.pos;\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n start = pos;\n for (pos = pos + 1; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (code !== 0x20 && code !== 0x0A) { break; }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n if (pos < max && start !== pos && parseLinkTitle(state, pos)) {\n title = state.linkContent;\n pos = state.pos;\n } else {\n title = '';\n pos = start;\n }\n\n // ensure that the end of the line is empty\n while (pos < max && state.src.charCodeAt(pos) === 0x20/* space */) { pos++; }\n if (pos < max && state.src.charCodeAt(pos) !== 0x0A) { return -1; }\n\n label = normalizeReference(str.slice(1, labelEnd));\n if (typeof env.references[label] === 'undefined') {\n env.references[label] = { title: title, href: href };\n }\n\n return pos;\n}\n\n\nmodule.exports = function references(state) {\n var tokens = state.tokens, i, l, content, pos;\n\n state.env.references = state.env.references || {};\n\n if (state.inlineMode) {\n return;\n }\n\n // Scan definitions in paragraph inlines\n for (i = 1, l = tokens.length - 1; i < l; i++) {\n if (tokens[i].type === 'inline' &&\n tokens[i - 1].type === 'paragraph_open' &&\n tokens[i + 1].type === 'paragraph_close') {\n\n content = tokens[i].content;\n while (content.length) {\n pos = parseReference(content, state.inline, state.options, state.env);\n if (pos < 0) { break; }\n content = content.slice(pos).trim();\n }\n\n tokens[i].content = content;\n if (!content.length) {\n tokens[i - 1].tight = true;\n tokens[i + 1].tight = true;\n }\n }\n }\n};\n","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens, tok, i, l;\n\n // Parse inlines\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n if (tok.type === 'inline') {\n state.inline.parse(tok.content, state.options, state.env, tok.children);\n }\n }\n};\n","'use strict';\n\n\nmodule.exports = function footnote_block(state) {\n var i, l, j, t, lastParagraph, list, tokens, current, currentLabel,\n level = 0,\n insideRef = false,\n refTokens = {};\n\n if (!state.env.footnotes) { return; }\n\n state.tokens = state.tokens.filter(function(tok) {\n if (tok.type === 'footnote_reference_open') {\n insideRef = true;\n current = [];\n currentLabel = tok.label;\n return false;\n }\n if (tok.type === 'footnote_reference_close') {\n insideRef = false;\n // prepend ':' to avoid conflict with Object.prototype members\n refTokens[':' + currentLabel] = current;\n return false;\n }\n if (insideRef) { current.push(tok); }\n return !insideRef;\n });\n\n if (!state.env.footnotes.list) { return; }\n list = state.env.footnotes.list;\n\n state.tokens.push({\n type: 'footnote_block_open',\n level: level++\n });\n for (i = 0, l = list.length; i < l; i++) {\n state.tokens.push({\n type: 'footnote_open',\n id: i,\n level: level++\n });\n\n if (list[i].tokens) {\n tokens = [];\n tokens.push({\n type: 'paragraph_open',\n tight: false,\n level: level++\n });\n tokens.push({\n type: 'inline',\n content: '',\n level: level,\n children: list[i].tokens\n });\n tokens.push({\n type: 'paragraph_close',\n tight: false,\n level: --level\n });\n } else if (list[i].label) {\n tokens = refTokens[':' + list[i].label];\n }\n\n state.tokens = state.tokens.concat(tokens);\n if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') {\n lastParagraph = state.tokens.pop();\n } else {\n lastParagraph = null;\n }\n\n t = list[i].count > 0 ? list[i].count : 1;\n for (j = 0; j < t; j++) {\n state.tokens.push({\n type: 'footnote_anchor',\n id: i,\n subId: j,\n level: level\n });\n }\n\n if (lastParagraph) {\n state.tokens.push(lastParagraph);\n }\n\n state.tokens.push({\n type: 'footnote_close',\n level: --level\n });\n }\n state.tokens.push({\n type: 'footnote_block_close',\n level: --level\n });\n};\n","// Enclose abbreviations in tags\n//\n'use strict';\n\n\nvar PUNCT_CHARS = ' \\n()[]\\'\".,!?-';\n\n\n// from Google closure library\n// http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021\nfunction regEscape(s) {\n return s.replace(/([-()\\[\\]{}+?*.$\\^|,:#= 0; i--) {\n token = tokens[i];\n if (token.type !== 'text') { continue; }\n\n pos = 0;\n text = token.content;\n reg.lastIndex = 0;\n level = token.level;\n nodes = [];\n\n while ((m = reg.exec(text))) {\n if (reg.lastIndex > pos) {\n nodes.push({\n type: 'text',\n content: text.slice(pos, m.index + m[1].length),\n level: level\n });\n }\n\n nodes.push({\n type: 'abbr_open',\n title: state.env.abbreviations[':' + m[2]],\n level: level++\n });\n nodes.push({\n type: 'text',\n content: m[2],\n level: level\n });\n nodes.push({\n type: 'abbr_close',\n level: --level\n });\n pos = reg.lastIndex - m[3].length;\n }\n\n if (!nodes.length) { continue; }\n\n if (pos < text.length) {\n nodes.push({\n type: 'text',\n content: text.slice(pos),\n level: level\n });\n }\n\n // replace current node\n blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1));\n }\n }\n};\n","// Simple typographical replacements\n//\n'use strict';\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - miltiplication 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\nvar SCOPED_ABBR = {\n 'c': '©',\n 'r': '®',\n 'p': '§',\n 'tm': '™'\n};\n\nfunction replaceScopedAbbr(str) {\n if (str.indexOf('(') < 0) { return str; }\n\n return str.replace(SCOPED_ABBR_RE, function(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n });\n}\n\n\nmodule.exports = function replace(state) {\n var i, token, text, inlineTokens, blkIdx;\n\n if (!state.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n inlineTokens = state.tokens[blkIdx].children;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n if (token.type === 'text') {\n text = token.content;\n\n text = replaceScopedAbbr(text);\n\n if (RARE_RE.test(text)) {\n text = text\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---([^-]|$)/mg, '$1\\u2014$2')\n // en-dash\n .replace(/(^|\\s)--(\\s|$)/mg, '$1\\u2013$2')\n .replace(/(^|[^-\\s])--([^-\\s]|$)/mg, '$1\\u2013$2');\n }\n\n token.content = text;\n }\n }\n }\n};\n","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar PUNCT_RE = /[-\\s()\\[\\]]/;\nvar APOSTROPHE = '’';\n\n// This function returns true if the character at `pos`\n// could be inside a word.\nfunction isLetter(str, pos) {\n if (pos < 0 || pos >= str.length) { return false; }\n return !PUNCT_RE.test(str[pos]);\n}\n\n\nfunction replaceAt(str, index, ch) {\n return str.substr(0, index) + ch + str.substr(index + 1);\n}\n\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var i, token, text, t, pos, max, thisLevel, lastSpace, nextSpace, item,\n canOpen, canClose, j, isSingle, blkIdx, tokens,\n stack;\n\n if (!state.options.typographer) { return; }\n\n stack = [];\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n tokens = state.tokens[blkIdx].children;\n stack.length = 0;\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n if (token.type !== 'text' || QUOTE_TEST_RE.test(token.text)) { continue; }\n\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break; }\n }\n stack.length = j + 1;\n\n text = token.content;\n pos = 0;\n max = text.length;\n\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n if (!t) { break; }\n\n lastSpace = !isLetter(text, t.index - 1);\n pos = t.index + 1;\n isSingle = (t[0] === \"'\");\n nextSpace = !isLetter(text, pos);\n\n if (!nextSpace && !lastSpace) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n continue;\n }\n\n canOpen = !nextSpace;\n canClose = !lastSpace;\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n if (stack[j].level < thisLevel) { break; }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n if (isSingle) {\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[2]);\n token.content = replaceAt(token.content, t.index, state.options.quotes[3]);\n } else {\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, state.options.quotes[0]);\n token.content = replaceAt(token.content, t.index, state.options.quotes[1]);\n }\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n }\n};\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function () {\n return (root['Autolinker'] = factory());\n });\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n root['Autolinker'] = factory();\n }\n}(this, function () {\n\n/*!\n * Autolinker.js\n * 0.15.3\n *\n * Copyright(c) 2015 Gregory Jacobs \n * MIT Licensed. http://www.opensource.org/licenses/mit-license.php\n *\n * https://github.com/gregjacobs/Autolinker.js\n */\n/**\n * @class Autolinker\n * @extends Object\n * \n * Utility class used to process a given string of text, and wrap the URLs, email addresses, and Twitter handles in \n * the appropriate anchor (<a>) tags to turn them into links.\n * \n * Any of the configuration options may be provided in an Object (map) provided to the Autolinker constructor, which\n * will configure how the {@link #link link()} method will process the links.\n * \n * For example:\n * \n * var autolinker = new Autolinker( {\n * newWindow : false,\n * truncate : 30\n * } );\n * \n * var html = autolinker.link( \"Joe went to www.yahoo.com\" );\n * // produces: 'Joe went to yahoo.com'\n * \n * \n * The {@link #static-link static link()} method may also be used to inline options into a single call, which may\n * be more convenient for one-off uses. For example:\n * \n * var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\n * newWindow : false,\n * truncate : 30\n * } );\n * // produces: 'Joe went to yahoo.com'\n * \n * \n * ## Custom Replacements of Links\n * \n * If the configuration options do not provide enough flexibility, a {@link #replaceFn} may be provided to fully customize\n * the output of Autolinker. This function is called once for each URL/Email/Twitter handle match that is encountered.\n * \n * For example:\n * \n * var input = \"...\"; // string with URLs, Email Addresses, and Twitter Handles\n * \n * var linkedText = Autolinker.link( input, {\n * replaceFn : function( autolinker, match ) {\n * console.log( \"href = \", match.getAnchorHref() );\n * console.log( \"text = \", match.getAnchorText() );\n * \n * switch( match.getType() ) {\n * case 'url' : \n * console.log( \"url: \", match.getUrl() );\n * \n * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\n * var tag = autolinker.getTagBuilder().build( match ); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\n * tag.setAttr( 'rel', 'nofollow' );\n * tag.addClass( 'external-link' );\n * \n * return tag;\n * \n * } else {\n * return true; // let Autolinker perform its normal anchor tag replacement\n * }\n * \n * case 'email' :\n * var email = match.getEmail();\n * console.log( \"email: \", email );\n * \n * if( email === \"my@own.address\" ) {\n * return false; // don't auto-link this particular email address; leave as-is\n * } else {\n * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\n * }\n * \n * case 'twitter' :\n * var twitterHandle = match.getTwitterHandle();\n * console.log( twitterHandle );\n * \n * return '' + twitterHandle + '';\n * }\n * }\n * } );\n * \n * \n * The function may return the following values:\n * \n * - `true` (Boolean): Allow Autolinker to replace the match as it normally would.\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\n * - Any String: If a string is returned from the function, the string will be used directly as the replacement HTML for\n * the match.\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify an HTML tag before writing out its HTML text.\n * \n * @constructor\n * @param {Object} [config] The configuration options for the Autolinker instance, specified in an Object (map).\n */\nvar Autolinker = function( cfg ) {\n\tAutolinker.Util.assign( this, cfg ); // assign the properties of `cfg` onto the Autolinker instance. Prototype properties will be used for missing configs.\n};\n\n\nAutolinker.prototype = {\n\tconstructor : Autolinker, // fix constructor property\n\t\n\t/**\n\t * @cfg {Boolean} urls\n\t * \n\t * `true` if miscellaneous URLs should be automatically linked, `false` if they should not be.\n\t */\n\turls : true,\n\t\n\t/**\n\t * @cfg {Boolean} email\n\t * \n\t * `true` if email addresses should be automatically linked, `false` if they should not be.\n\t */\n\temail : true,\n\t\n\t/**\n\t * @cfg {Boolean} twitter\n\t * \n\t * `true` if Twitter handles (\"@example\") should be automatically linked, `false` if they should not be.\n\t */\n\ttwitter : true,\n\t\n\t/**\n\t * @cfg {Boolean} newWindow\n\t * \n\t * `true` if the links should open in a new window, `false` otherwise.\n\t */\n\tnewWindow : true,\n\t\n\t/**\n\t * @cfg {Boolean} stripPrefix\n\t * \n\t * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped from the beginning of URL links' text, \n\t * `false` otherwise.\n\t */\n\tstripPrefix : true,\n\t\n\t/**\n\t * @cfg {Number} truncate\n\t * \n\t * A number for how many characters long URLs/emails/twitter handles should be truncated to inside the text of \n\t * a link. If the URL/email/twitter is over this number of characters, it will be truncated to this length by \n\t * adding a two period ellipsis ('..') to the end of the string.\n\t * \n\t * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file' truncated to 25 characters might look\n\t * something like this: 'yahoo.com/some/long/pat..'\n\t */\n\ttruncate : undefined,\n\t\n\t/**\n\t * @cfg {String} className\n\t * \n\t * A CSS class name to add to the generated links. This class will be added to all links, as well as this class\n\t * plus url/email/twitter suffixes for styling url/email/twitter links differently.\n\t * \n\t * For example, if this config is provided as \"myLink\", then:\n\t * \n\t * - URL links will have the CSS classes: \"myLink myLink-url\"\n\t * - Email links will have the CSS classes: \"myLink myLink-email\", and\n\t * - Twitter links will have the CSS classes: \"myLink myLink-twitter\"\n\t */\n\tclassName : \"\",\n\t\n\t/**\n\t * @cfg {Function} replaceFn\n\t * \n\t * A function to individually process each URL/Email/Twitter match found in the input string.\n\t * \n\t * See the class's description for usage.\n\t * \n\t * This function is called with the following parameters:\n\t * \n\t * @cfg {Autolinker} replaceFn.autolinker The Autolinker instance, which may be used to retrieve child objects from (such\n\t * as the instance's {@link #getTagBuilder tag builder}).\n\t * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which can be used to retrieve information about the\n\t * {@link Autolinker.match.Url URL}/{@link Autolinker.match.Email email}/{@link Autolinker.match.Twitter Twitter}\n\t * match that the `replaceFn` is currently processing.\n\t */\n\t\n\t\n\t/**\n\t * @private\n\t * @property {Autolinker.htmlParser.HtmlParser} htmlParser\n\t * \n\t * The HtmlParser instance used to skip over HTML tags, while finding text nodes to process. This is lazily instantiated\n\t * in the {@link #getHtmlParser} method.\n\t */\n\thtmlParser : undefined,\n\t\n\t/**\n\t * @private\n\t * @property {Autolinker.matchParser.MatchParser} matchParser\n\t * \n\t * The MatchParser instance used to find URL/email/Twitter matches in the text nodes of an input string passed to\n\t * {@link #link}. This is lazily instantiated in the {@link #getMatchParser} method.\n\t */\n\tmatchParser : undefined,\n\t\n\t/**\n\t * @private\n\t * @property {Autolinker.AnchorTagBuilder} tagBuilder\n\t * \n\t * The AnchorTagBuilder instance used to build the URL/email/Twitter replacement anchor tags. This is lazily instantiated\n\t * in the {@link #getTagBuilder} method.\n\t */\n\ttagBuilder : undefined,\n\t\n\t\n\t/**\n\t * Automatically links URLs, email addresses, and Twitter handles found in the given chunk of HTML. \n\t * Does not link URLs found within HTML tags.\n\t * \n\t * For instance, if given the text: `You should go to http://www.yahoo.com`, then the result\n\t * will be `You should go to <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\n\t * \n\t * This method finds the text around any HTML elements in the input `textOrHtml`, which will be the text that is processed.\n\t * Any original HTML elements will be left as-is, as well as the text that is already wrapped in anchor (<a>) tags.\n\t * \n\t * @param {String} textOrHtml The HTML or text to link URLs, email addresses, and Twitter handles within (depending on if\n\t * the {@link #urls}, {@link #email}, and {@link #twitter} options are enabled).\n\t * @return {String} The HTML, with URLs/emails/Twitter handles automatically linked.\n\t */\n\tlink : function( textOrHtml ) {\n\t\tvar htmlParser = this.getHtmlParser(),\n\t\t htmlNodes = htmlParser.parse( textOrHtml ),\n\t\t anchorTagStackCount = 0, // used to only process text around anchor tags, and any inner text/html they may have\n\t\t resultHtml = [];\n\t\t\n\t\tfor( var i = 0, len = htmlNodes.length; i < len; i++ ) {\n\t\t\tvar node = htmlNodes[ i ],\n\t\t\t nodeType = node.getType(),\n\t\t\t nodeText = node.getText();\n\t\t\t\n\t\t\tif( nodeType === 'element' ) {\n\t\t\t\t// Process HTML nodes in the input `textOrHtml`\n\t\t\t\tif( node.getTagName() === 'a' ) {\n\t\t\t\t\tif( !node.isClosing() ) { // it's the start tag\n\t\t\t\t\t\tanchorTagStackCount++;\n\t\t\t\t\t} else { // it's the end tag\n\t\t\t\t\t\tanchorTagStackCount = Math.max( anchorTagStackCount - 1, 0 ); // attempt to handle extraneous tags by making sure the stack count never goes below 0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresultHtml.push( nodeText ); // now add the text of the tag itself verbatim\n\t\t\t\t\n\t\t\t} else if( nodeType === 'entity' ) {\n\t\t\t\tresultHtml.push( nodeText ); // append HTML entity nodes (such as ' ') verbatim\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t// Process text nodes in the input `textOrHtml`\n\t\t\t\tif( anchorTagStackCount === 0 ) {\n\t\t\t\t\t// If we're not within an tag, process the text node to linkify\n\t\t\t\t\tvar linkifiedStr = this.linkifyStr( nodeText );\n\t\t\t\t\tresultHtml.push( linkifiedStr );\n\t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// `text` is within an tag, simply append the text - we do not want to autolink anything \n\t\t\t\t\t// already within an ... tag\n\t\t\t\t\tresultHtml.push( nodeText );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn resultHtml.join( \"\" );\n\t},\n\t\n\t\n\t/**\n\t * Process the text that lies in between HTML tags, performing the anchor tag replacements for matched \n\t * URLs/emails/Twitter handles, and returns the string with the replacements made. \n\t * \n\t * This method does the actual wrapping of URLs/emails/Twitter handles with anchor tags.\n\t * \n\t * @private\n\t * @param {String} str The string of text to auto-link.\n\t * @return {String} The text with anchor tags auto-filled.\n\t */\n\tlinkifyStr : function( str ) {\n\t\treturn this.getMatchParser().replace( str, this.createMatchReturnVal, this );\n\t},\n\t\n\t\n\t/**\n\t * Creates the return string value for a given match in the input string, for the {@link #processTextNode} method.\n\t * \n\t * This method handles the {@link #replaceFn}, if one was provided.\n\t * \n\t * @private\n\t * @param {Autolinker.match.Match} match The Match object that represents the match.\n\t * @return {String} The string that the `match` should be replaced with. This is usually the anchor tag string, but\n\t * may be the `matchStr` itself if the match is not to be replaced.\n\t */\n\tcreateMatchReturnVal : function( match ) {\n\t\t// Handle a custom `replaceFn` being provided\n\t\tvar replaceFnResult;\n\t\tif( this.replaceFn ) {\n\t\t\treplaceFnResult = this.replaceFn.call( this, this, match ); // Autolinker instance is the context, and the first arg\n\t\t}\n\t\t\n\t\tif( typeof replaceFnResult === 'string' ) {\n\t\t\treturn replaceFnResult; // `replaceFn` returned a string, use that\n\t\t\t\n\t\t} else if( replaceFnResult === false ) {\n\t\t\treturn match.getMatchedText(); // no replacement for the match\n\t\t\t\n\t\t} else if( replaceFnResult instanceof Autolinker.HtmlTag ) {\n\t\t\treturn replaceFnResult.toString();\n\t\t\n\t\t} else { // replaceFnResult === true, or no/unknown return value from function\n\t\t\t// Perform Autolinker's default anchor tag generation\n\t\t\tvar tagBuilder = this.getTagBuilder(),\n\t\t\t anchorTag = tagBuilder.build( match ); // returns an Autolinker.HtmlTag instance\n\t\t\t\n\t\t\treturn anchorTag.toString();\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Lazily instantiates and returns the {@link #htmlParser} instance for this Autolinker instance.\n\t * \n\t * @protected\n\t * @return {Autolinker.htmlParser.HtmlParser}\n\t */\n\tgetHtmlParser : function() {\n\t\tvar htmlParser = this.htmlParser;\n\t\t\n\t\tif( !htmlParser ) {\n\t\t\thtmlParser = this.htmlParser = new Autolinker.htmlParser.HtmlParser();\n\t\t}\n\t\t\n\t\treturn htmlParser;\n\t},\n\t\n\t\n\t/**\n\t * Lazily instantiates and returns the {@link #matchParser} instance for this Autolinker instance.\n\t * \n\t * @protected\n\t * @return {Autolinker.matchParser.MatchParser}\n\t */\n\tgetMatchParser : function() {\n\t\tvar matchParser = this.matchParser;\n\t\t\n\t\tif( !matchParser ) {\n\t\t\tmatchParser = this.matchParser = new Autolinker.matchParser.MatchParser( {\n\t\t\t\turls : this.urls,\n\t\t\t\temail : this.email,\n\t\t\t\ttwitter : this.twitter,\n\t\t\t\tstripPrefix : this.stripPrefix\n\t\t\t} );\n\t\t}\n\t\t\n\t\treturn matchParser;\n\t},\n\t\n\t\n\t/**\n\t * Returns the {@link #tagBuilder} instance for this Autolinker instance, lazily instantiating it\n\t * if it does not yet exist.\n\t * \n\t * This method may be used in a {@link #replaceFn} to generate the {@link Autolinker.HtmlTag HtmlTag} instance that \n\t * Autolinker would normally generate, and then allow for modifications before returning it. For example:\n\t * \n\t * var html = Autolinker.link( \"Test google.com\", {\n\t * replaceFn : function( autolinker, match ) {\n\t * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance\n\t * tag.setAttr( 'rel', 'nofollow' );\n\t * \n\t * return tag;\n\t * }\n\t * } );\n\t * \n\t * // generated html:\n\t * // Test google.com\n\t * \n\t * @return {Autolinker.AnchorTagBuilder}\n\t */\n\tgetTagBuilder : function() {\n\t\tvar tagBuilder = this.tagBuilder;\n\t\t\n\t\tif( !tagBuilder ) {\n\t\t\ttagBuilder = this.tagBuilder = new Autolinker.AnchorTagBuilder( {\n\t\t\t\tnewWindow : this.newWindow,\n\t\t\t\ttruncate : this.truncate,\n\t\t\t\tclassName : this.className\n\t\t\t} );\n\t\t}\n\t\t\n\t\treturn tagBuilder;\n\t}\n\n};\n\n\n/**\n * Automatically links URLs, email addresses, and Twitter handles found in the given chunk of HTML. \n * Does not link URLs found within HTML tags.\n * \n * For instance, if given the text: `You should go to http://www.yahoo.com`, then the result\n * will be `You should go to <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\n * \n * Example:\n * \n * var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\n * // Produces: \"Go to google.com\"\n * \n * @static\n * @param {String} textOrHtml The HTML or text to find URLs, email addresses, and Twitter handles within (depending on if\n * the {@link #urls}, {@link #email}, and {@link #twitter} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker class, specified in an Object (map).\n * See the class description for an example call.\n * @return {String} The HTML text, with URLs automatically linked\n */\nAutolinker.link = function( textOrHtml, options ) {\n\tvar autolinker = new Autolinker( options );\n\treturn autolinker.link( textOrHtml );\n};\n\n\n// Autolinker Namespaces\nAutolinker.match = {};\nAutolinker.htmlParser = {};\nAutolinker.matchParser = {};\n/*global Autolinker */\n/*jshint eqnull:true, boss:true */\n/**\n * @class Autolinker.Util\n * @singleton\n * \n * A few utility methods for Autolinker.\n */\nAutolinker.Util = {\n\t\n\t/**\n\t * @property {Function} abstractMethod\n\t * \n\t * A function object which represents an abstract method.\n\t */\n\tabstractMethod : function() { throw \"abstract\"; },\n\t\n\t\n\t/**\n\t * Assigns (shallow copies) the properties of `src` onto `dest`.\n\t * \n\t * @param {Object} dest The destination object.\n\t * @param {Object} src The source object.\n\t * @return {Object} The destination object (`dest`)\n\t */\n\tassign : function( dest, src ) {\n\t\tfor( var prop in src ) {\n\t\t\tif( src.hasOwnProperty( prop ) ) {\n\t\t\t\tdest[ prop ] = src[ prop ];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn dest;\n\t},\n\t\n\t\n\t/**\n\t * Extends `superclass` to create a new subclass, adding the `protoProps` to the new subclass's prototype.\n\t * \n\t * @param {Function} superclass The constructor function for the superclass.\n\t * @param {Object} protoProps The methods/properties to add to the subclass's prototype. This may contain the\n\t * special property `constructor`, which will be used as the new subclass's constructor function.\n\t * @return {Function} The new subclass function.\n\t */\n\textend : function( superclass, protoProps ) {\n\t\tvar superclassProto = superclass.prototype;\n\t\t\n\t\tvar F = function() {};\n\t\tF.prototype = superclassProto;\n\t\t\n\t\tvar subclass;\n\t\tif( protoProps.hasOwnProperty( 'constructor' ) ) {\n\t\t\tsubclass = protoProps.constructor;\n\t\t} else {\n\t\t\tsubclass = function() { superclassProto.constructor.apply( this, arguments ); };\n\t\t}\n\t\t\n\t\tvar subclassProto = subclass.prototype = new F(); // set up prototype chain\n\t\tsubclassProto.constructor = subclass; // fix constructor property\n\t\tsubclassProto.superclass = superclassProto;\n\t\t\n\t\tdelete protoProps.constructor; // don't re-assign constructor property to the prototype, since a new function may have been created (`subclass`), which is now already there\n\t\tAutolinker.Util.assign( subclassProto, protoProps );\n\t\t\n\t\treturn subclass;\n\t},\n\t\n\t\n\t/**\n\t * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the\n\t * end of the string (by default, two periods: '..'). If the `str` length does not exceed \n\t * `len`, the string will be returned unchanged.\n\t * \n\t * @param {String} str The string to truncate and add an ellipsis to.\n\t * @param {Number} truncateLen The length to truncate the string at.\n\t * @param {String} [ellipsisChars=..] The ellipsis character(s) to add to the end of `str`\n\t * when truncated. Defaults to '..'\n\t */\n\tellipsis : function( str, truncateLen, ellipsisChars ) {\n\t\tif( str.length > truncateLen ) {\n\t\t\tellipsisChars = ( ellipsisChars == null ) ? '..' : ellipsisChars;\n\t\t\tstr = str.substring( 0, truncateLen - ellipsisChars.length ) + ellipsisChars;\n\t\t}\n\t\treturn str;\n\t},\n\t\n\t\n\t/**\n\t * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below).\n\t * \n\t * @param {Array} arr The array to find an element of.\n\t * @param {*} element The element to find in the array, and return the index of.\n\t * @return {Number} The index of the `element`, or -1 if it was not found.\n\t */\n\tindexOf : function( arr, element ) {\n\t\tif( Array.prototype.indexOf ) {\n\t\t\treturn arr.indexOf( element );\n\t\t\t\n\t\t} else {\n\t\t\tfor( var i = 0, len = arr.length; i < len; i++ ) {\n\t\t\t\tif( arr[ i ] === element ) return i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t},\n\t\n\t\n\t\n\t/**\n\t * Performs the functionality of what modern browsers do when `String.prototype.split()` is called\n\t * with a regular expression that contains capturing parenthesis.\n\t * \n\t * For example:\n\t * \n\t * // Modern browsers: \n\t * \"a,b,c\".split( /(,)/ ); // --> [ 'a', ',', 'b', ',', 'c' ]\n\t * \n\t * // Old IE (including IE8):\n\t * \"a,b,c\".split( /(,)/ ); // --> [ 'a', 'b', 'c' ]\n\t * \n\t * This method emulates the functionality of modern browsers for the old IE case.\n\t * \n\t * @param {String} str The string to split.\n\t * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting\n\t * character(s) will be spliced into the array, as in the \"modern browsers\" example in the \n\t * description of this method. \n\t * Note #1: the supplied regular expression **must** have the 'g' flag specified.\n\t * Note #2: for simplicity's sake, the regular expression does not need \n\t * to contain capturing parenthesis - it will be assumed that any match has them.\n\t * @return {String[]} The split array of strings, with the splitting character(s) included.\n\t */\n\tsplitAndCapture : function( str, splitRegex ) {\n\t\tif( !splitRegex.global ) throw new Error( \"`splitRegex` must have the 'g' flag set\" );\n\t\t\n\t\tvar result = [],\n\t\t lastIdx = 0,\n\t\t match;\n\t\t\n\t\twhile( match = splitRegex.exec( str ) ) {\n\t\t\tresult.push( str.substring( lastIdx, match.index ) );\n\t\t\tresult.push( match[ 0 ] ); // push the splitting char(s)\n\t\t\t\n\t\t\tlastIdx = match.index + match[ 0 ].length;\n\t\t}\n\t\tresult.push( str.substring( lastIdx ) );\n\t\t\n\t\treturn result;\n\t}\n\t\n};\n/*global Autolinker */\n/*jshint boss:true */\n/**\n * @class Autolinker.HtmlTag\n * @extends Object\n * \n * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically.\n * \n * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use\n * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}.\n * \n * ## Examples\n * \n * Example instantiation:\n * \n * var tag = new Autolinker.HtmlTag( {\n * tagName : 'a',\n * attrs : { 'href': 'http://google.com', 'class': 'external-link' },\n * innerHtml : 'Google'\n * } );\n * \n * tag.toString(); // Google\n * \n * // Individual accessor methods\n * tag.getTagName(); // 'a'\n * tag.getAttr( 'href' ); // 'http://google.com'\n * tag.hasClass( 'external-link' ); // true\n * \n * \n * Using mutator methods (which may be used in combination with instantiation config properties):\n * \n * var tag = new Autolinker.HtmlTag();\n * tag.setTagName( 'a' );\n * tag.setAttr( 'href', 'http://google.com' );\n * tag.addClass( 'external-link' );\n * tag.setInnerHtml( 'Google' );\n * \n * tag.getTagName(); // 'a'\n * tag.getAttr( 'href' ); // 'http://google.com'\n * tag.hasClass( 'external-link' ); // true\n * \n * tag.toString(); // Google\n * \n * \n * ## Example use within a {@link Autolinker#replaceFn replaceFn}\n * \n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( autolinker, match ) {\n * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text\n * tag.setAttr( 'rel', 'nofollow' );\n * \n * return tag;\n * }\n * } );\n * \n * // generated html:\n * // Test google.com\n * \n * \n * ## Example use with a new tag for the replacement\n * \n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( autolinker, match ) {\n * var tag = new Autolinker.HtmlTag( {\n * tagName : 'button',\n * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() },\n * innerHtml : 'Load URL: ' + match.getAnchorText()\n * } );\n * \n * return tag;\n * }\n * } );\n * \n * // generated html:\n * // Test \n */\nAutolinker.HtmlTag = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @cfg {String} tagName\n\t * \n\t * The tag name. Ex: 'a', 'button', etc.\n\t * \n\t * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toString}\n\t * is executed.\n\t */\n\t\n\t/**\n\t * @cfg {Object.} attrs\n\t * \n\t * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the\n\t * values are the attribute values.\n\t */\n\t\n\t/**\n\t * @cfg {String} innerHtml\n\t * \n\t * The inner HTML for the tag. \n\t * \n\t * Note the camel case name on `innerHtml`. Acronyms are camelCased in this utility (such as not to run into the acronym \n\t * naming inconsistency that the DOM developers created with `XMLHttpRequest`). You may alternatively use {@link #innerHTML}\n\t * if you prefer, but this one is recommended.\n\t */\n\t\n\t/**\n\t * @cfg {String} innerHTML\n\t * \n\t * Alias of {@link #innerHtml}, accepted for consistency with the browser DOM api, but prefer the camelCased version\n\t * for acronym names.\n\t */\n\t\n\t\n\t/**\n\t * @protected\n\t * @property {RegExp} whitespaceRegex\n\t * \n\t * Regular expression used to match whitespace in a string of CSS classes.\n\t */\n\twhitespaceRegex : /\\s+/,\n\t\n\t\n\t/**\n\t * @constructor\n\t * @param {Object} [cfg] The configuration properties for this class, in an Object (map)\n\t */\n\tconstructor : function( cfg ) {\n\t\tAutolinker.Util.assign( this, cfg );\n\t\t\n\t\tthis.innerHtml = this.innerHtml || this.innerHTML; // accept either the camelCased form or the fully capitalized acronym\n\t},\n\t\n\t\n\t/**\n\t * Sets the tag name that will be used to generate the tag with.\n\t * \n\t * @param {String} tagName\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\tsetTagName : function( tagName ) {\n\t\tthis.tagName = tagName;\n\t\treturn this;\n\t},\n\t\n\t\n\t/**\n\t * Retrieves the tag name.\n\t * \n\t * @return {String}\n\t */\n\tgetTagName : function() {\n\t\treturn this.tagName || \"\";\n\t},\n\t\n\t\n\t/**\n\t * Sets an attribute on the HtmlTag.\n\t * \n\t * @param {String} attrName The attribute name to set.\n\t * @param {String} attrValue The attribute value to set.\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\tsetAttr : function( attrName, attrValue ) {\n\t\tvar tagAttrs = this.getAttrs();\n\t\ttagAttrs[ attrName ] = attrValue;\n\t\t\n\t\treturn this;\n\t},\n\t\n\t\n\t/**\n\t * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`.\n\t * \n\t * @param {String} name The attribute name to retrieve.\n\t * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag.\n\t */\n\tgetAttr : function( attrName ) {\n\t\treturn this.getAttrs()[ attrName ];\n\t},\n\t\n\t\n\t/**\n\t * Sets one or more attributes on the HtmlTag.\n\t * \n\t * @param {Object.} attrs A key/value Object (map) of the attributes to set.\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\tsetAttrs : function( attrs ) {\n\t\tvar tagAttrs = this.getAttrs();\n\t\tAutolinker.Util.assign( tagAttrs, attrs );\n\t\t\n\t\treturn this;\n\t},\n\t\n\t\n\t/**\n\t * Retrieves the attributes Object (map) for the HtmlTag.\n\t * \n\t * @return {Object.} A key/value object of the attributes for the HtmlTag.\n\t */\n\tgetAttrs : function() {\n\t\treturn this.attrs || ( this.attrs = {} );\n\t},\n\t\n\t\n\t/**\n\t * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag.\n\t * \n\t * @param {String} cssClass One or more space-separated CSS classes to set (overwrite).\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\tsetClass : function( cssClass ) {\n\t\treturn this.setAttr( 'class', cssClass );\n\t},\n\t\n\t\n\t/**\n\t * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes.\n\t * \n\t * @param {String} cssClass One or more space-separated CSS classes to add.\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\taddClass : function( cssClass ) {\n\t\tvar classAttr = this.getClass(),\n\t\t whitespaceRegex = this.whitespaceRegex,\n\t\t indexOf = Autolinker.Util.indexOf, // to support IE8 and below\n\t\t classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ),\n\t\t newClasses = cssClass.split( whitespaceRegex ),\n\t\t newClass;\n\t\t\n\t\twhile( newClass = newClasses.shift() ) {\n\t\t\tif( indexOf( classes, newClass ) === -1 ) {\n\t\t\t\tclasses.push( newClass );\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.getAttrs()[ 'class' ] = classes.join( \" \" );\n\t\treturn this;\n\t},\n\t\n\t\n\t/**\n\t * Convenience method to remove one or more CSS classes from the HtmlTag.\n\t * \n\t * @param {String} cssClass One or more space-separated CSS classes to remove.\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\tremoveClass : function( cssClass ) {\n\t\tvar classAttr = this.getClass(),\n\t\t whitespaceRegex = this.whitespaceRegex,\n\t\t indexOf = Autolinker.Util.indexOf, // to support IE8 and below\n\t\t classes = ( !classAttr ) ? [] : classAttr.split( whitespaceRegex ),\n\t\t removeClasses = cssClass.split( whitespaceRegex ),\n\t\t removeClass;\n\t\t\n\t\twhile( classes.length && ( removeClass = removeClasses.shift() ) ) {\n\t\t\tvar idx = indexOf( classes, removeClass );\n\t\t\tif( idx !== -1 ) {\n\t\t\t\tclasses.splice( idx, 1 );\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.getAttrs()[ 'class' ] = classes.join( \" \" );\n\t\treturn this;\n\t},\n\t\n\t\n\t/**\n\t * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when\n\t * there are multiple.\n\t * \n\t * @return {String}\n\t */\n\tgetClass : function() {\n\t\treturn this.getAttrs()[ 'class' ] || \"\";\n\t},\n\t\n\t\n\t/**\n\t * Convenience method to check if the tag has a CSS class or not.\n\t * \n\t * @param {String} cssClass The CSS class to check for.\n\t * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise.\n\t */\n\thasClass : function( cssClass ) {\n\t\treturn ( ' ' + this.getClass() + ' ' ).indexOf( ' ' + cssClass + ' ' ) !== -1;\n\t},\n\t\n\t\n\t/**\n\t * Sets the inner HTML for the tag.\n\t * \n\t * @param {String} html The inner HTML to set.\n\t * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n\t */\n\tsetInnerHtml : function( html ) {\n\t\tthis.innerHtml = html;\n\t\t\n\t\treturn this;\n\t},\n\t\n\t\n\t/**\n\t * Retrieves the inner HTML for the tag.\n\t * \n\t * @return {String}\n\t */\n\tgetInnerHtml : function() {\n\t\treturn this.innerHtml || \"\";\n\t},\n\t\n\t\n\t/**\n\t * Override of superclass method used to generate the HTML string for the tag.\n\t * \n\t * @return {String}\n\t */\n\ttoString : function() {\n\t\tvar tagName = this.getTagName(),\n\t\t attrsStr = this.buildAttrsStr();\n\t\t\n\t\tattrsStr = ( attrsStr ) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes\n\t\t\n\t\treturn [ '<', tagName, attrsStr, '>', this.getInnerHtml(), '' ].join( \"\" );\n\t},\n\t\n\t\n\t/**\n\t * Support method for {@link #toString}, returns the string space-separated key=\"value\" pairs, used to populate \n\t * the stringified HtmlTag.\n\t * \n\t * @protected\n\t * @return {String} Example return: `attr1=\"value1\" attr2=\"value2\"`\n\t */\n\tbuildAttrsStr : function() {\n\t\tif( !this.attrs ) return \"\"; // no `attrs` Object (map) has been set, return empty string\n\t\t\n\t\tvar attrs = this.getAttrs(),\n\t\t attrsArr = [];\n\t\t\n\t\tfor( var prop in attrs ) {\n\t\t\tif( attrs.hasOwnProperty( prop ) ) {\n\t\t\t\tattrsArr.push( prop + '=\"' + attrs[ prop ] + '\"' );\n\t\t\t}\n\t\t}\n\t\treturn attrsArr.join( \" \" );\n\t}\n\t\n} );\n/*global Autolinker */\n/*jshint sub:true */\n/**\n * @protected\n * @class Autolinker.AnchorTagBuilder\n * @extends Object\n * \n * Builds anchor (<a>) tags for the Autolinker utility when a match is found.\n * \n * Normally this class is instantiated, configured, and used internally by an {@link Autolinker} instance, but may \n * actually be retrieved in a {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag} instances\n * which may be modified before returning from the {@link Autolinker#replaceFn replaceFn}. For example:\n * \n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( autolinker, match ) {\n * var tag = autolinker.getTagBuilder().build( match ); // returns an {@link Autolinker.HtmlTag} instance\n * tag.setAttr( 'rel', 'nofollow' );\n * \n * return tag;\n * }\n * } );\n * \n * // generated html:\n * // Test google.com\n */\nAutolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @cfg {Boolean} newWindow\n\t * @inheritdoc Autolinker#newWindow\n\t */\n\t\n\t/**\n\t * @cfg {Number} truncate\n\t * @inheritdoc Autolinker#truncate\n\t */\n\t\n\t/**\n\t * @cfg {String} className\n\t * @inheritdoc Autolinker#className\n\t */\n\t\n\t\n\t/**\n\t * @constructor\n\t * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n\t */\n\tconstructor : function( cfg ) {\n\t\tAutolinker.Util.assign( this, cfg );\n\t},\n\t\n\t\n\t/**\n\t * Generates the actual anchor (<a>) tag to use in place of the matched URL/email/Twitter text,\n\t * via its `match` object.\n\t * \n\t * @param {Autolinker.match.Match} match The Match instance to generate an anchor tag from.\n\t * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag.\n\t */\n\tbuild : function( match ) {\n\t\tvar tag = new Autolinker.HtmlTag( {\n\t\t\ttagName : 'a',\n\t\t\tattrs : this.createAttrs( match.getType(), match.getAnchorHref() ),\n\t\t\tinnerHtml : this.processAnchorText( match.getAnchorText() )\n\t\t} );\n\t\t\n\t\treturn tag;\n\t},\n\t\n\t\n\t/**\n\t * Creates the Object (map) of the HTML attributes for the anchor (<a>) tag being generated.\n\t * \n\t * @protected\n\t * @param {\"url\"/\"email\"/\"twitter\"} matchType The type of match that an anchor tag is being generated for.\n\t * @param {String} href The href for the anchor tag.\n\t * @return {Object} A key/value Object (map) of the anchor tag's attributes. \n\t */\n\tcreateAttrs : function( matchType, anchorHref ) {\n\t\tvar attrs = {\n\t\t\t'href' : anchorHref // we'll always have the `href` attribute\n\t\t};\n\t\t\n\t\tvar cssClass = this.createCssClass( matchType );\n\t\tif( cssClass ) {\n\t\t\tattrs[ 'class' ] = cssClass;\n\t\t}\n\t\tif( this.newWindow ) {\n\t\t\tattrs[ 'target' ] = \"_blank\";\n\t\t}\n\t\t\n\t\treturn attrs;\n\t},\n\t\n\t\n\t/**\n\t * Creates the CSS class that will be used for a given anchor tag, based on the `matchType` and the {@link #className}\n\t * config.\n\t * \n\t * @private\n\t * @param {\"url\"/\"email\"/\"twitter\"} matchType The type of match that an anchor tag is being generated for.\n\t * @return {String} The CSS class string for the link. Example return: \"myLink myLink-url\". If no {@link #className}\n\t * was configured, returns an empty string.\n\t */\n\tcreateCssClass : function( matchType ) {\n\t\tvar className = this.className;\n\t\t\n\t\tif( !className ) \n\t\t\treturn \"\";\n\t\telse\n\t\t\treturn className + \" \" + className + \"-\" + matchType; // ex: \"myLink myLink-url\", \"myLink myLink-email\", or \"myLink myLink-twitter\"\n\t},\n\t\n\t\n\t/**\n\t * Processes the `anchorText` by truncating the text according to the {@link #truncate} config.\n\t * \n\t * @private\n\t * @param {String} anchorText The anchor tag's text (i.e. what will be displayed).\n\t * @return {String} The processed `anchorText`.\n\t */\n\tprocessAnchorText : function( anchorText ) {\n\t\tanchorText = this.doTruncate( anchorText );\n\t\t\n\t\treturn anchorText;\n\t},\n\t\n\t\n\t/**\n\t * Performs the truncation of the `anchorText`, if the `anchorText` is longer than the {@link #truncate} option.\n\t * Truncates the text to 2 characters fewer than the {@link #truncate} option, and adds \"..\" to the end.\n\t * \n\t * @private\n\t * @param {String} text The anchor tag's text (i.e. what will be displayed).\n\t * @return {String} The truncated anchor text.\n\t */\n\tdoTruncate : function( anchorText ) {\n\t\treturn Autolinker.Util.ellipsis( anchorText, this.truncate || Number.POSITIVE_INFINITY );\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @private\n * @class Autolinker.htmlParser.HtmlParser\n * @extends Object\n * \n * An HTML parser implementation which simply walks an HTML string and returns an array of \n * {@link Autolinker.htmlParser.HtmlNode HtmlNodes} that represent the basic HTML structure of the input string.\n * \n * Autolinker uses this to only link URLs/emails/Twitter handles within text nodes, effectively ignoring / \"walking\n * around\" HTML tags.\n */\nAutolinker.htmlParser.HtmlParser = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @private\n\t * @property {RegExp} htmlRegex\n\t * \n\t * The regular expression used to pull out HTML tags from a string. Handles namespaced HTML tags and\n\t * attribute names, as specified by http://www.w3.org/TR/html-markup/syntax.html.\n\t * \n\t * Capturing groups:\n\t * \n\t * 1. The \"!DOCTYPE\" tag name, if a tag is a <!DOCTYPE> tag.\n\t * 2. If it is an end tag, this group will have the '/'.\n\t * 3. The tag name for all tags (other than the <!DOCTYPE> tag)\n\t */\n\thtmlRegex : (function() {\n\t\tvar tagNameRegex = /[0-9a-zA-Z][0-9a-zA-Z:]*/,\n\t\t attrNameRegex = /[^\\s\\0\"'>\\/=\\x01-\\x1F\\x7F]+/, // the unicode range accounts for excluding control chars, and the delete char\n\t\t attrValueRegex = /(?:\"[^\"]*?\"|'[^']*?'|[^'\"=<>`\\s]+)/, // double quoted, single quoted, or unquoted attribute values\n\t\t nameEqualsValueRegex = attrNameRegex.source + '(?:\\\\s*=\\\\s*' + attrValueRegex.source + ')?'; // optional '=[value]'\n\t\t\n\t\treturn new RegExp( [\n\t\t\t// for tag. Ex: ) \n\t\t\t'(?:',\n\t\t\t\t'<(!DOCTYPE)', // *** Capturing Group 1 - If it's a doctype tag\n\t\t\t\t\t\n\t\t\t\t\t// Zero or more attributes following the tag name\n\t\t\t\t\t'(?:',\n\t\t\t\t\t\t'\\\\s+', // one or more whitespace chars before an attribute\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Either:\n\t\t\t\t\t\t// A. attr=\"value\", or \n\t\t\t\t\t\t// B. \"value\" alone (To cover example doctype tag: ) \n\t\t\t\t\t\t'(?:', nameEqualsValueRegex, '|', attrValueRegex.source + ')',\n\t\t\t\t\t')*',\n\t\t\t\t'>',\n\t\t\t')',\n\t\t\t\n\t\t\t'|',\n\t\t\t\n\t\t\t// All other HTML tags (i.e. tags that are not )\n\t\t\t'(?:',\n\t\t\t\t'<(/)?', // Beginning of a tag. Either '<' for a start tag, or ''\n\t\t\t\t'>',\n\t\t\t')'\n\t\t].join( \"\" ), 'gi' );\n\t} )(),\n\t\n\t/**\n\t * @private\n\t * @property {RegExp} htmlCharacterEntitiesRegex\n\t *\n\t * The regular expression that matches common HTML character entities.\n\t * \n\t * Ignoring & as it could be part of a query string -- handling it separately.\n\t */\n\thtmlCharacterEntitiesRegex: /( | |<|<|>|>|"|"|')/gi,\n\t\n\t\n\t/**\n\t * Parses an HTML string and returns a simple array of {@link Autolinker.htmlParser.HtmlNode HtmlNodes} to represent\n\t * the HTML structure of the input string. \n\t * \n\t * @param {String} html The HTML to parse.\n\t * @return {Autolinker.htmlParser.HtmlNode[]}\n\t */\n\tparse : function( html ) {\n\t\tvar htmlRegex = this.htmlRegex,\n\t\t currentResult,\n\t\t lastIndex = 0,\n\t\t textAndEntityNodes,\n\t\t nodes = []; // will be the result of the method\n\t\t\n\t\twhile( ( currentResult = htmlRegex.exec( html ) ) !== null ) {\n\t\t\tvar tagText = currentResult[ 0 ],\n\t\t\t tagName = currentResult[ 1 ] || currentResult[ 3 ], // The tag (ex: \"!DOCTYPE\"), or another tag (ex: \"a\" or \"img\") \n\t\t\t isClosingTag = !!currentResult[ 2 ],\n\t\t\t inBetweenTagsText = html.substring( lastIndex, currentResult.index );\n\t\t\t\n\t\t\t// Push TextNodes and EntityNodes for any text found between tags\n\t\t\tif( inBetweenTagsText ) {\n\t\t\t\ttextAndEntityNodes = this.parseTextAndEntityNodes( inBetweenTagsText );\n\t\t\t\tnodes.push.apply( nodes, textAndEntityNodes );\n\t\t\t}\n\t\t\t\n\t\t\t// Push the ElementNode\n\t\t\tnodes.push( this.createElementNode( tagText, tagName, isClosingTag ) );\n\t\t\t\n\t\t\tlastIndex = currentResult.index + tagText.length;\n\t\t}\n\t\t\n\t\t// Process any remaining text after the last HTML element. Will process all of the text if there were no HTML elements.\n\t\tif( lastIndex < html.length ) {\n\t\t\tvar text = html.substring( lastIndex );\n\t\t\t\n\t\t\t// Push TextNodes and EntityNodes for any text found between tags\n\t\t\tif( text ) {\n\t\t\t\ttextAndEntityNodes = this.parseTextAndEntityNodes( text );\n\t\t\t\tnodes.push.apply( nodes, textAndEntityNodes );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn nodes;\n\t},\n\t\n\t\n\t/**\n\t * Parses text and HTML entity nodes from a given string. The input string should not have any HTML tags (elements)\n\t * within it.\n\t * \n\t * @private\n\t * @param {String} text The text to parse.\n\t * @return {Autolinker.htmlParser.HtmlNode[]} An array of HtmlNodes to represent the \n\t * {@link Autolinker.htmlParser.TextNode TextNodes} and {@link Autolinker.htmlParser.EntityNode EntityNodes} found.\n\t */\n\tparseTextAndEntityNodes : function( text ) {\n\t\tvar nodes = [],\n\t\t textAndEntityTokens = Autolinker.Util.splitAndCapture( text, this.htmlCharacterEntitiesRegex ); // split at HTML entities, but include the HTML entities in the results array\n\t\t\n\t\t// Every even numbered token is a TextNode, and every odd numbered token is an EntityNode\n\t\t// For example: an input `text` of \"Test "this" today\" would turn into the \n\t\t// `textAndEntityTokens`: [ 'Test ', '"', 'this', '"', ' today' ]\n\t\tfor( var i = 0, len = textAndEntityTokens.length; i < len; i += 2 ) {\n\t\t\tvar textToken = textAndEntityTokens[ i ],\n\t\t\t entityToken = textAndEntityTokens[ i + 1 ];\n\t\t\t\n\t\t\tif( textToken ) nodes.push( this.createTextNode( textToken ) );\n\t\t\tif( entityToken ) nodes.push( this.createEntityNode( entityToken ) );\n\t\t}\n\t\treturn nodes;\n\t},\n\t\n\t\n\t/**\n\t * Factory method to create an {@link Autolinker.htmlParser.ElementNode ElementNode}.\n\t * \n\t * @private\n\t * @param {String} tagText The full text of the tag (element) that was matched, including its attributes.\n\t * @param {String} tagName The name of the tag. Ex: An <img> tag would be passed to this method as \"img\".\n\t * @param {Boolean} isClosingTag `true` if it's a closing tag, false otherwise.\n\t * @return {Autolinker.htmlParser.ElementNode}\n\t */\n\tcreateElementNode : function( tagText, tagName, isClosingTag ) {\n\t\treturn new Autolinker.htmlParser.ElementNode( {\n\t\t\ttext : tagText,\n\t\t\ttagName : tagName.toLowerCase(),\n\t\t\tclosing : isClosingTag\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Factory method to create a {@link Autolinker.htmlParser.EntityNode EntityNode}.\n\t * \n\t * @private\n\t * @param {String} text The text that was matched for the HTML entity (such as '&nbsp;').\n\t * @return {Autolinker.htmlParser.EntityNode}\n\t */\n\tcreateEntityNode : function( text ) {\n\t\treturn new Autolinker.htmlParser.EntityNode( { text: text } );\n\t},\n\t\n\t\n\t/**\n\t * Factory method to create a {@link Autolinker.htmlParser.TextNode TextNode}.\n\t * \n\t * @private\n\t * @param {String} text The text that was matched.\n\t * @return {Autolinker.htmlParser.TextNode}\n\t */\n\tcreateTextNode : function( text ) {\n\t\treturn new Autolinker.htmlParser.TextNode( { text: text } );\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @abstract\n * @class Autolinker.htmlParser.HtmlNode\n * \n * Represents an HTML node found in an input string. An HTML node is one of the following:\n * \n * 1. An {@link Autolinker.htmlParser.ElementNode ElementNode}, which represents HTML tags.\n * 2. A {@link Autolinker.htmlParser.TextNode TextNode}, which represents text outside or within HTML tags.\n * 3. A {@link Autolinker.htmlParser.EntityNode EntityNode}, which represents one of the known HTML\n * entities that Autolinker looks for. This includes common ones such as &quot; and &nbsp;\n */\nAutolinker.htmlParser.HtmlNode = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @cfg {String} text (required)\n\t * \n\t * The original text that was matched for the HtmlNode. \n\t * \n\t * - In the case of an {@link Autolinker.htmlParser.ElementNode ElementNode}, this will be the tag's\n\t * text.\n\t * - In the case of a {@link Autolinker.htmlParser.TextNode TextNode}, this will be the text itself.\n\t * - In the case of a {@link Autolinker.htmlParser.EntityNode EntityNode}, this will be the text of\n\t * the HTML entity.\n\t */\n\ttext : \"\",\n\t\n\t\n\t/**\n\t * @constructor\n\t * @param {Object} cfg The configuration properties for the Match instance, specified in an Object (map).\n\t */\n\tconstructor : function( cfg ) {\n\t\tAutolinker.Util.assign( this, cfg );\n\t},\n\n\t\n\t/**\n\t * Returns a string name for the type of node that this class represents.\n\t * \n\t * @abstract\n\t * @return {String}\n\t */\n\tgetType : Autolinker.Util.abstractMethod,\n\t\n\t\n\t/**\n\t * Retrieves the {@link #text} for the HtmlNode.\n\t * \n\t * @return {String}\n\t */\n\tgetText : function() {\n\t\treturn this.text;\n\t}\n\n} );\n/*global Autolinker */\n/**\n * @class Autolinker.htmlParser.ElementNode\n * @extends Autolinker.htmlParser.HtmlNode\n * \n * Represents an HTML element node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\n * \n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more details.\n */\nAutolinker.htmlParser.ElementNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\n\t\n\t/**\n\t * @cfg {String} tagName (required)\n\t * \n\t * The name of the tag that was matched.\n\t */\n\ttagName : '',\n\t\n\t/**\n\t * @cfg {Boolean} closing (required)\n\t * \n\t * `true` if the element (tag) is a closing tag, `false` if its an opening tag.\n\t */\n\tclosing : false,\n\n\t\n\t/**\n\t * Returns a string name for the type of node that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetType : function() {\n\t\treturn 'element';\n\t},\n\t\n\n\t/**\n\t * Returns the HTML element's (tag's) name. Ex: for an <img> tag, returns \"img\".\n\t * \n\t * @return {String}\n\t */\n\tgetTagName : function() {\n\t\treturn this.tagName;\n\t},\n\t\n\t\n\t/**\n\t * Determines if the HTML element (tag) is a closing tag. Ex: <div> returns\n\t * `false`, while </div> returns `true`.\n\t * \n\t * @return {Boolean}\n\t */\n\tisClosing : function() {\n\t\treturn this.closing;\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @class Autolinker.htmlParser.EntityNode\n * @extends Autolinker.htmlParser.HtmlNode\n * \n * Represents a known HTML entity node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\n * Ex: '&nbsp;', or '&#160;' (which will be retrievable from the {@link #getText} method.\n * \n * Note that this class will only be returned from the HtmlParser for the set of checked HTML entity nodes \n * defined by the {@link Autolinker.htmlParser.HtmlParser#htmlCharacterEntitiesRegex}.\n * \n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more details.\n */\nAutolinker.htmlParser.EntityNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\n\t\n\t/**\n\t * Returns a string name for the type of node that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetType : function() {\n\t\treturn 'entity';\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @class Autolinker.htmlParser.TextNode\n * @extends Autolinker.htmlParser.HtmlNode\n * \n * Represents a text node that has been parsed by the {@link Autolinker.htmlParser.HtmlParser}.\n * \n * See this class's superclass ({@link Autolinker.htmlParser.HtmlNode}) for more details.\n */\nAutolinker.htmlParser.TextNode = Autolinker.Util.extend( Autolinker.htmlParser.HtmlNode, {\n\t\n\t/**\n\t * Returns a string name for the type of node that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetType : function() {\n\t\treturn 'text';\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @private\n * @class Autolinker.matchParser.MatchParser\n * @extends Object\n * \n * Used by Autolinker to parse {@link #urls URLs}, {@link #emails email addresses}, and {@link #twitter Twitter handles}, \n * given an input string of text.\n * \n * The MatchParser is fed a non-HTML string in order to search out URLs, email addresses and Twitter handles. Autolinker\n * first uses the {@link HtmlParser} to \"walk around\" HTML tags, and then the text around the HTML tags is passed into\n * the MatchParser in order to find the actual matches.\n */\nAutolinker.matchParser.MatchParser = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @cfg {Boolean} urls\n\t * \n\t * `true` if miscellaneous URLs should be automatically linked, `false` if they should not be.\n\t */\n\turls : true,\n\t\n\t/**\n\t * @cfg {Boolean} email\n\t * \n\t * `true` if email addresses should be automatically linked, `false` if they should not be.\n\t */\n\temail : true,\n\t\n\t/**\n\t * @cfg {Boolean} twitter\n\t * \n\t * `true` if Twitter handles (\"@example\") should be automatically linked, `false` if they should not be.\n\t */\n\ttwitter : true,\n\t\n\t/**\n\t * @cfg {Boolean} stripPrefix\n\t * \n\t * `true` if 'http://' or 'https://' and/or the 'www.' should be stripped from the beginning of URL links' text\n\t * in {@link Autolinker.match.Url URL matches}, `false` otherwise.\n\t * \n\t * TODO: Handle this before a URL Match object is instantiated.\n\t */\n\tstripPrefix : true,\n\t\n\t\n\t/**\n\t * @private\n\t * @property {RegExp} matcherRegex\n\t * \n\t * The regular expression that matches URLs, email addresses, and Twitter handles.\n\t * \n\t * This regular expression has the following capturing groups:\n\t * \n\t * 1. Group that is used to determine if there is a Twitter handle match (i.e. \\@someTwitterUser). Simply check for its \n\t * existence to determine if there is a Twitter handle match. The next couple of capturing groups give information \n\t * about the Twitter handle match.\n\t * 2. The whitespace character before the \\@sign in a Twitter handle. This is needed because there are no lookbehinds in\n\t * JS regular expressions, and can be used to reconstruct the original string in a replace().\n\t * 3. The Twitter handle itself in a Twitter match. If the match is '@someTwitterUser', the handle is 'someTwitterUser'.\n\t * 4. Group that matches an email address. Used to determine if the match is an email address, as well as holding the full \n\t * address. Ex: 'me@my.com'\n\t * 5. Group that matches a URL in the input text. Ex: 'http://google.com', 'www.google.com', or just 'google.com'.\n\t * This also includes a path, url parameters, or hash anchors. Ex: google.com/path/to/file?q1=1&q2=2#myAnchor\n\t * 6. Group that matches a protocol URL (i.e. 'http://google.com'). This is used to match protocol URLs with just a single\n\t * word, like 'http://localhost', where we won't double check that the domain name has at least one '.' in it.\n\t * 7. A protocol-relative ('//') match for the case of a 'www.' prefixed URL. Will be an empty string if it is not a \n\t * protocol-relative match. We need to know the character before the '//' in order to determine if it is a valid match\n\t * or the // was in a string we don't want to auto-link.\n\t * 8. A protocol-relative ('//') match for the case of a known TLD prefixed URL. Will be an empty string if it is not a \n\t * protocol-relative match. See #6 for more info. \n\t */\n\tmatcherRegex : (function() {\n\t\tvar twitterRegex = /(^|[^\\w])@(\\w{1,15})/, // For matching a twitter handle. Ex: @gregory_jacobs\n\t\t \n\t\t emailRegex = /(?:[\\-;:&=\\+\\$,\\w\\.]+@)/, // something@ for email addresses (a.k.a. local-part)\n\t\t \n\t\t protocolRegex = /(?:[A-Za-z][-.+A-Za-z0-9]+:(?![A-Za-z][-.+A-Za-z0-9]+:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/, // match protocol, allow in format \"http://\" or \"mailto:\". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match \"link:\"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex)\n\t\t wwwRegex = /(?:www\\.)/, // starting with 'www.'\n\t\t domainNameRegex = /[A-Za-z0-9\\.\\-]*[A-Za-z0-9\\-]/, // anything looking at all like a domain, non-unicode domains, not ending in a period\n\t\t tldRegex = /\\.(?:international|construction|contractors|enterprises|photography|productions|foundation|immobilien|industries|management|properties|technology|christmas|community|directory|education|equipment|institute|marketing|solutions|vacations|bargains|boutique|builders|catering|cleaning|clothing|computer|democrat|diamonds|graphics|holdings|lighting|partners|plumbing|supplies|training|ventures|academy|careers|company|cruises|domains|exposed|flights|florist|gallery|guitars|holiday|kitchen|neustar|okinawa|recipes|rentals|reviews|shiksha|singles|support|systems|agency|berlin|camera|center|coffee|condos|dating|estate|events|expert|futbol|kaufen|luxury|maison|monash|museum|nagoya|photos|repair|report|social|supply|tattoo|tienda|travel|viajes|villas|vision|voting|voyage|actor|build|cards|cheap|codes|dance|email|glass|house|mango|ninja|parts|photo|shoes|solar|today|tokyo|tools|watch|works|aero|arpa|asia|best|bike|blue|buzz|camp|club|cool|coop|farm|fish|gift|guru|info|jobs|kiwi|kred|land|limo|link|menu|mobi|moda|name|pics|pink|post|qpon|rich|ruhr|sexy|tips|vote|voto|wang|wien|wiki|zone|bar|bid|biz|cab|cat|ceo|com|edu|gov|int|kim|mil|net|onl|org|pro|pub|red|tel|uno|wed|xxx|xyz|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)\\b/, // match our known top level domains (TLDs)\n\t\t \n\t\t // Allow optional path, query string, and hash anchor, not ending in the following characters: \"?!:,.;\"\n\t\t // http://blog.codinghorror.com/the-problem-with-urls/\n\t\t urlSuffixRegex = /[\\-A-Za-z0-9+&@#\\/%=~_()|'$*\\[\\]?!:,.;]*[\\-A-Za-z0-9+&@#\\/%=~_()|'$*\\[\\]]/;\n\t\t\n\t\treturn new RegExp( [\n\t\t\t'(', // *** Capturing group $1, which can be used to check for a twitter handle match. Use group $3 for the actual twitter handle though. $2 may be used to reconstruct the original string in a replace() \n\t\t\t\t// *** Capturing group $2, which matches the whitespace character before the '@' sign (needed because of no lookbehinds), and \n\t\t\t\t// *** Capturing group $3, which matches the actual twitter handle\n\t\t\t\ttwitterRegex.source,\n\t\t\t')',\n\t\t\t\n\t\t\t'|',\n\t\t\t\n\t\t\t'(', // *** Capturing group $4, which is used to determine an email match\n\t\t\t\temailRegex.source,\n\t\t\t\tdomainNameRegex.source,\n\t\t\t\ttldRegex.source,\n\t\t\t')',\n\t\t\t\n\t\t\t'|',\n\t\t\t\n\t\t\t'(', // *** Capturing group $5, which is used to match a URL\n\t\t\t\t'(?:', // parens to cover match for protocol (optional), and domain\n\t\t\t\t\t'(', // *** Capturing group $6, for a protocol-prefixed url (ex: http://google.com)\n\t\t\t\t\t\tprotocolRegex.source,\n\t\t\t\t\t\tdomainNameRegex.source,\n\t\t\t\t\t')',\n\t\t\t\t\t\n\t\t\t\t\t'|',\n\t\t\t\t\t\n\t\t\t\t\t'(?:', // non-capturing paren for a 'www.' prefixed url (ex: www.google.com)\n\t\t\t\t\t\t'(.?//)?', // *** Capturing group $7 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character\n\t\t\t\t\t\twwwRegex.source,\n\t\t\t\t\t\tdomainNameRegex.source,\n\t\t\t\t\t')',\n\t\t\t\t\t\n\t\t\t\t\t'|',\n\t\t\t\t\t\n\t\t\t\t\t'(?:', // non-capturing paren for known a TLD url (ex: google.com)\n\t\t\t\t\t\t'(.?//)?', // *** Capturing group $8 for an optional protocol-relative URL. Must be at the beginning of the string or start with a non-word character\n\t\t\t\t\t\tdomainNameRegex.source,\n\t\t\t\t\t\ttldRegex.source,\n\t\t\t\t\t')',\n\t\t\t\t')',\n\t\t\t\t\n\t\t\t\t'(?:' + urlSuffixRegex.source + ')?', // match for path, query string, and/or hash anchor - optional\n\t\t\t')'\n\t\t].join( \"\" ), 'gi' );\n\t} )(),\n\t\n\t/**\n\t * @private\n\t * @property {RegExp} charBeforeProtocolRelMatchRegex\n\t * \n\t * The regular expression used to retrieve the character before a protocol-relative URL match.\n\t * \n\t * This is used in conjunction with the {@link #matcherRegex}, which needs to grab the character before a protocol-relative\n\t * '//' due to the lack of a negative look-behind in JavaScript regular expressions. The character before the match is stripped\n\t * from the URL.\n\t */\n\tcharBeforeProtocolRelMatchRegex : /^(.)?\\/\\//,\n\t\n\t/**\n\t * @private\n\t * @property {Autolinker.MatchValidator} matchValidator\n\t * \n\t * The MatchValidator object, used to filter out any false positives from the {@link #matcherRegex}. See\n\t * {@link Autolinker.MatchValidator} for details.\n\t */\n\t\n\t\n\t/**\n\t * @constructor\n\t * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n\t */\n\tconstructor : function( cfg ) {\n\t\tAutolinker.Util.assign( this, cfg );\n\t\n\t\tthis.matchValidator = new Autolinker.MatchValidator();\n\t},\n\t\n\t\n\t/**\n\t * Parses the input `text` to search for URLs/emails/Twitter handles, and calls the `replaceFn`\n\t * to allow replacements of the matches. Returns the `text` with matches replaced.\n\t * \n\t * @param {String} text The text to search and repace matches in.\n\t * @param {Function} replaceFn The iterator function to handle the replacements. The function takes a\n\t * single argument, a {@link Autolinker.match.Match} object, and should return the text that should\n\t * make the replacement.\n\t * @param {Object} [contextObj=window] The context object (\"scope\") to run the `replaceFn` in.\n\t * @return {String}\n\t */\n\treplace : function( text, replaceFn, contextObj ) {\n\t\tvar me = this; // for closure\n\t\t\n\t\treturn text.replace( this.matcherRegex, function( matchStr, $1, $2, $3, $4, $5, $6, $7, $8 ) {\n\t\t\tvar matchDescObj = me.processCandidateMatch( matchStr, $1, $2, $3, $4, $5, $6, $7, $8 ); // \"match description\" object\n\t\t\t\n\t\t\t// Return out with no changes for match types that are disabled (url, email, twitter), or for matches that are \n\t\t\t// invalid (false positives from the matcherRegex, which can't use look-behinds since they are unavailable in JS).\n\t\t\tif( !matchDescObj ) {\n\t\t\t\treturn matchStr;\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t// Generate replacement text for the match from the `replaceFn`\n\t\t\t\tvar replaceStr = replaceFn.call( contextObj, matchDescObj.match );\n\t\t\t\treturn matchDescObj.prefixStr + replaceStr + matchDescObj.suffixStr;\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Processes a candidate match from the {@link #matcherRegex}. \n\t * \n\t * Not all matches found by the regex are actual URL/email/Twitter matches, as determined by the {@link #matchValidator}. In\n\t * this case, the method returns `null`. Otherwise, a valid Object with `prefixStr`, `match`, and `suffixStr` is returned.\n\t * \n\t * @private\n\t * @param {String} matchStr The full match that was found by the {@link #matcherRegex}.\n\t * @param {String} twitterMatch The matched text of a Twitter handle, if the match is a Twitter match.\n\t * @param {String} twitterHandlePrefixWhitespaceChar The whitespace char before the @ sign in a Twitter handle match. This \n\t * is needed because of no lookbehinds in JS regexes, and is need to re-include the character for the anchor tag replacement.\n\t * @param {String} twitterHandle The actual Twitter user (i.e the word after the @ sign in a Twitter match).\n\t * @param {String} emailAddressMatch The matched email address for an email address match.\n\t * @param {String} urlMatch The matched URL string for a URL match.\n\t * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to match\n\t * something like 'http://localhost', where we won't double check that the domain name has at least one '.' in it.\n\t * @param {String} wwwProtocolRelativeMatch The '//' for a protocol-relative match from a 'www' url, with the character that \n\t * comes before the '//'.\n\t * @param {String} tldProtocolRelativeMatch The '//' for a protocol-relative match from a TLD (top level domain) match, with \n\t * the character that comes before the '//'.\n\t * \n\t * @return {Object} A \"match description object\". This will be `null` if the match was invalid, or if a match type is disabled.\n\t * Otherwise, this will be an Object (map) with the following properties:\n\t * @return {String} return.prefixStr The char(s) that should be prepended to the replacement string. These are char(s) that\n\t * were needed to be included from the regex match that were ignored by processing code, and should be re-inserted into \n\t * the replacement stream.\n\t * @return {String} return.suffixStr The char(s) that should be appended to the replacement string. These are char(s) that\n\t * were needed to be included from the regex match that were ignored by processing code, and should be re-inserted into \n\t * the replacement stream.\n\t * @return {Autolinker.match.Match} return.match The Match object that represents the match that was found.\n\t */\n\tprocessCandidateMatch : function( \n\t\tmatchStr, twitterMatch, twitterHandlePrefixWhitespaceChar, twitterHandle, \n\t\temailAddressMatch, urlMatch, protocolUrlMatch, wwwProtocolRelativeMatch, tldProtocolRelativeMatch\n\t) {\n\t\t// Note: The `matchStr` variable wil be fixed up to remove characters that are no longer needed (which will \n\t\t// be added to `prefixStr` and `suffixStr`).\n\t\t\n\t\tvar protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch,\n\t\t match, // Will be an Autolinker.match.Match object\n\t\t \n\t\t prefixStr = \"\", // A string to use to prefix the anchor tag that is created. This is needed for the Twitter handle match\n\t\t suffixStr = \"\"; // A string to suffix the anchor tag that is created. This is used if there is a trailing parenthesis that should not be auto-linked.\n\t\t \n\t\t\n\t\t// Return out with `null` for match types that are disabled (url, email, twitter), or for matches that are \n\t\t// invalid (false positives from the matcherRegex, which can't use look-behinds since they are unavailable in JS).\n\t\tif(\n\t\t\t( twitterMatch && !this.twitter ) || ( emailAddressMatch && !this.email ) || ( urlMatch && !this.urls ) ||\n\t\t\t!this.matchValidator.isValidMatch( urlMatch, protocolUrlMatch, protocolRelativeMatch ) \n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t// Handle a closing parenthesis at the end of the match, and exclude it if there is not a matching open parenthesis\n\t\t// in the match itself. \n\t\tif( this.matchHasUnbalancedClosingParen( matchStr ) ) {\n\t\t\tmatchStr = matchStr.substr( 0, matchStr.length - 1 ); // remove the trailing \")\"\n\t\t\tsuffixStr = \")\"; // this will be added after the generated tag\n\t\t}\n\t\t\n\t\t\n\t\tif( emailAddressMatch ) {\n\t\t\tmatch = new Autolinker.match.Email( { matchedText: matchStr, email: emailAddressMatch } );\n\t\t\t\n\t\t} else if( twitterMatch ) {\n\t\t\t// fix up the `matchStr` if there was a preceding whitespace char, which was needed to determine the match \n\t\t\t// itself (since there are no look-behinds in JS regexes)\n\t\t\tif( twitterHandlePrefixWhitespaceChar ) {\n\t\t\t\tprefixStr = twitterHandlePrefixWhitespaceChar;\n\t\t\t\tmatchStr = matchStr.slice( 1 ); // remove the prefixed whitespace char from the match\n\t\t\t}\n\t\t\tmatch = new Autolinker.match.Twitter( { matchedText: matchStr, twitterHandle: twitterHandle } );\n\t\t\t\n\t\t} else { // url match\n\t\t\t// If it's a protocol-relative '//' match, remove the character before the '//' (which the matcherRegex needed\n\t\t\t// to match due to the lack of a negative look-behind in JavaScript regular expressions)\n\t\t\tif( protocolRelativeMatch ) {\n\t\t\t\tvar charBeforeMatch = protocolRelativeMatch.match( this.charBeforeProtocolRelMatchRegex )[ 1 ] || \"\";\n\t\t\t\t\n\t\t\t\tif( charBeforeMatch ) { // fix up the `matchStr` if there was a preceding char before a protocol-relative match, which was needed to determine the match itself (since there are no look-behinds in JS regexes)\n\t\t\t\t\tprefixStr = charBeforeMatch;\n\t\t\t\t\tmatchStr = matchStr.slice( 1 ); // remove the prefixed char from the match\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmatch = new Autolinker.match.Url( {\n\t\t\t\tmatchedText : matchStr,\n\t\t\t\turl : matchStr,\n\t\t\t\tprotocolUrlMatch : !!protocolUrlMatch,\n\t\t\t\tprotocolRelativeMatch : !!protocolRelativeMatch,\n\t\t\t\tstripPrefix : this.stripPrefix\n\t\t\t} );\n\t\t}\n\t\t\n\t\treturn {\n\t\t\tprefixStr : prefixStr,\n\t\t\tsuffixStr : suffixStr,\n\t\t\tmatch : match\n\t\t};\n\t},\n\t\n\t\n\t/**\n\t * Determines if a match found has an unmatched closing parenthesis. If so, this parenthesis will be removed\n\t * from the match itself, and appended after the generated anchor tag in {@link #processTextNode}.\n\t * \n\t * A match may have an extra closing parenthesis at the end of the match because the regular expression must include parenthesis\n\t * for URLs such as \"wikipedia.com/something_(disambiguation)\", which should be auto-linked. \n\t * \n\t * However, an extra parenthesis *will* be included when the URL itself is wrapped in parenthesis, such as in the case of\n\t * \"(wikipedia.com/something_(disambiguation))\". In this case, the last closing parenthesis should *not* be part of the URL \n\t * itself, and this method will return `true`.\n\t * \n\t * @private\n\t * @param {String} matchStr The full match string from the {@link #matcherRegex}.\n\t * @return {Boolean} `true` if there is an unbalanced closing parenthesis at the end of the `matchStr`, `false` otherwise.\n\t */\n\tmatchHasUnbalancedClosingParen : function( matchStr ) {\n\t\tvar lastChar = matchStr.charAt( matchStr.length - 1 );\n\t\t\n\t\tif( lastChar === ')' ) {\n\t\t\tvar openParensMatch = matchStr.match( /\\(/g ),\n\t\t\t closeParensMatch = matchStr.match( /\\)/g ),\n\t\t\t numOpenParens = ( openParensMatch && openParensMatch.length ) || 0,\n\t\t\t numCloseParens = ( closeParensMatch && closeParensMatch.length ) || 0;\n\t\t\t\n\t\t\tif( numOpenParens < numCloseParens ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n} );\n/*global Autolinker */\n/*jshint scripturl:true */\n/**\n * @private\n * @class Autolinker.MatchValidator\n * @extends Object\n * \n * Used by Autolinker to filter out false positives from the {@link Autolinker#matcherRegex}.\n * \n * Due to the limitations of regular expressions (including the missing feature of look-behinds in JS regular expressions),\n * we cannot always determine the validity of a given match. This class applies a bit of additional logic to filter out any\n * false positives that have been matched by the {@link Autolinker#matcherRegex}.\n */\nAutolinker.MatchValidator = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @private\n\t * @property {RegExp} invalidProtocolRelMatchRegex\n\t * \n\t * The regular expression used to check a potential protocol-relative URL match, coming from the \n\t * {@link Autolinker#matcherRegex}. A protocol-relative URL is, for example, \"//yahoo.com\"\n\t * \n\t * This regular expression checks to see if there is a word character before the '//' match in order to determine if \n\t * we should actually autolink a protocol-relative URL. This is needed because there is no negative look-behind in \n\t * JavaScript regular expressions. \n\t * \n\t * For instance, we want to autolink something like \"Go to: //google.com\", but we don't want to autolink something \n\t * like \"abc//google.com\"\n\t */\n\tinvalidProtocolRelMatchRegex : /^[\\w]\\/\\//,\n\t\n\t/**\n\t * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://'\n\t * \n\t * @private\n\t * @property {RegExp} hasFullProtocolRegex\n\t */\n\thasFullProtocolRegex : /^[A-Za-z][-.+A-Za-z0-9]+:\\/\\//,\n\t\n\t/**\n\t * Regex to find the URI scheme, such as 'mailto:'.\n\t * \n\t * This is used to filter out 'javascript:' and 'vbscript:' schemes.\n\t * \n\t * @private\n\t * @property {RegExp} uriSchemeRegex\n\t */\n\turiSchemeRegex : /^[A-Za-z][-.+A-Za-z0-9]+:/,\n\t\n\t/**\n\t * Regex to determine if at least one word char exists after the protocol (i.e. after the ':')\n\t * \n\t * @private\n\t * @property {RegExp} hasWordCharAfterProtocolRegex\n\t */\n\thasWordCharAfterProtocolRegex : /:[^\\s]*?[A-Za-z]/,\n\t\n\t\n\t/**\n\t * Determines if a given match found by {@link Autolinker#processTextNode} is valid. Will return `false` for:\n\t * \n\t * 1) URL matches which do not have at least have one period ('.') in the domain name (effectively skipping over \n\t * matches like \"abc:def\"). However, URL matches with a protocol will be allowed (ex: 'http://localhost')\n\t * 2) URL matches which do not have at least one word character in the domain name (effectively skipping over\n\t * matches like \"git:1.0\").\n\t * 3) A protocol-relative url match (a URL beginning with '//') whose previous character is a word character \n\t * (effectively skipping over strings like \"abc//google.com\")\n\t * \n\t * Otherwise, returns `true`.\n\t * \n\t * @param {String} urlMatch The matched URL, if there was one. Will be an empty string if the match is not a URL match.\n\t * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to match\n\t * something like 'http://localhost', where we won't double check that the domain name has at least one '.' in it.\n\t * @param {String} protocolRelativeMatch The protocol-relative string for a URL match (i.e. '//'), possibly with a preceding\n\t * character (ex, a space, such as: ' //', or a letter, such as: 'a//'). The match is invalid if there is a word character\n\t * preceding the '//'.\n\t * @return {Boolean} `true` if the match given is valid and should be processed, or `false` if the match is invalid and/or \n\t * should just not be processed.\n\t */\n\tisValidMatch : function( urlMatch, protocolUrlMatch, protocolRelativeMatch ) {\n\t\tif(\n\t\t\t( protocolUrlMatch && !this.isValidUriScheme( protocolUrlMatch ) ) ||\n\t\t\tthis.urlMatchDoesNotHaveProtocolOrDot( urlMatch, protocolUrlMatch ) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost')\n\t\t\tthis.urlMatchDoesNotHaveAtLeastOneWordChar( urlMatch, protocolUrlMatch ) || // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like \"git:1.0\"\n\t\t\tthis.isInvalidProtocolRelativeMatch( protocolRelativeMatch ) // A protocol-relative match which has a word character in front of it (so we can skip something like \"abc//google.com\")\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\treturn true;\n\t},\n\t\n\t\n\t/**\n\t * Determines if the URI scheme is a valid scheme to be autolinked. Returns `false` if the scheme is \n\t * 'javascript:' or 'vbscript:'\n\t * \n\t * @private\n\t * @param {String} uriSchemeMatch The match URL string for a full URI scheme match. Ex: 'http://yahoo.com' \n\t * or 'mailto:a@a.com'.\n\t * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise.\n\t */\n\tisValidUriScheme : function( uriSchemeMatch ) {\n\t\tvar uriScheme = uriSchemeMatch.match( this.uriSchemeRegex )[ 0 ].toLowerCase();\n\t\t\n\t\treturn ( uriScheme !== 'javascript:' && uriScheme !== 'vbscript:' );\n\t},\n\t\n\t\n\t/**\n\t * Determines if a URL match does not have either:\n\t * \n\t * a) a full protocol (i.e. 'http://'), or\n\t * b) at least one dot ('.') in the domain name (for a non-full-protocol match).\n\t * \n\t * Either situation is considered an invalid URL (ex: 'git:d' does not have either the '://' part, or at least one dot\n\t * in the domain name. If the match was 'git:abc.com', we would consider this valid.)\n\t * \n\t * @private\n\t * @param {String} urlMatch The matched URL, if there was one. Will be an empty string if the match is not a URL match.\n\t * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to match\n\t * something like 'http://localhost', where we won't double check that the domain name has at least one '.' in it.\n\t * @return {Boolean} `true` if the URL match does not have a full protocol, or at least one dot ('.') in a non-full-protocol\n\t * match.\n\t */\n\turlMatchDoesNotHaveProtocolOrDot : function( urlMatch, protocolUrlMatch ) {\n\t\treturn ( !!urlMatch && ( !protocolUrlMatch || !this.hasFullProtocolRegex.test( protocolUrlMatch ) ) && urlMatch.indexOf( '.' ) === -1 );\n\t},\n\t\n\t\n\t/**\n\t * Determines if a URL match does not have at least one word character after the protocol (i.e. in the domain name).\n\t * \n\t * At least one letter character must exist in the domain name after a protocol match. Ex: skip over something \n\t * like \"git:1.0\"\n\t * \n\t * @private\n\t * @param {String} urlMatch The matched URL, if there was one. Will be an empty string if the match is not a URL match.\n\t * @param {String} protocolUrlMatch The match URL string for a protocol match. Ex: 'http://yahoo.com'. This is used to\n\t * know whether or not we have a protocol in the URL string, in order to check for a word character after the protocol\n\t * separator (':').\n\t * @return {Boolean} `true` if the URL match does not have at least one word character in it after the protocol, `false`\n\t * otherwise.\n\t */\n\turlMatchDoesNotHaveAtLeastOneWordChar : function( urlMatch, protocolUrlMatch ) {\n\t\tif( urlMatch && protocolUrlMatch ) {\n\t\t\treturn !this.hasWordCharAfterProtocolRegex.test( urlMatch );\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Determines if a protocol-relative match is an invalid one. This method returns `true` if there is a `protocolRelativeMatch`,\n\t * and that match contains a word character before the '//' (i.e. it must contain whitespace or nothing before the '//' in\n\t * order to be considered valid).\n\t * \n\t * @private\n\t * @param {String} protocolRelativeMatch The protocol-relative string for a URL match (i.e. '//'), possibly with a preceding\n\t * character (ex, a space, such as: ' //', or a letter, such as: 'a//'). The match is invalid if there is a word character\n\t * preceding the '//'.\n\t * @return {Boolean} `true` if it is an invalid protocol-relative match, `false` otherwise.\n\t */\n\tisInvalidProtocolRelativeMatch : function( protocolRelativeMatch ) {\n\t\treturn ( !!protocolRelativeMatch && this.invalidProtocolRelMatchRegex.test( protocolRelativeMatch ) );\n\t}\n\n} );\n/*global Autolinker */\n/**\n * @abstract\n * @class Autolinker.match.Match\n * \n * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a \n * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match.\n * \n * For example:\n * \n * var input = \"...\"; // string with URLs, Email Addresses, and Twitter Handles\n * \n * var linkedText = Autolinker.link( input, {\n * replaceFn : function( autolinker, match ) {\n * console.log( \"href = \", match.getAnchorHref() );\n * console.log( \"text = \", match.getAnchorText() );\n * \n * switch( match.getType() ) {\n * case 'url' : \n * console.log( \"url: \", match.getUrl() );\n * \n * case 'email' :\n * console.log( \"email: \", match.getEmail() );\n * \n * case 'twitter' :\n * console.log( \"twitter: \", match.getTwitterHandle() );\n * }\n * }\n * } );\n * \n * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}.\n */\nAutolinker.match.Match = Autolinker.Util.extend( Object, {\n\t\n\t/**\n\t * @cfg {String} matchedText (required)\n\t * \n\t * The original text that was matched.\n\t */\n\t\n\t\n\t/**\n\t * @constructor\n\t * @param {Object} cfg The configuration properties for the Match instance, specified in an Object (map).\n\t */\n\tconstructor : function( cfg ) {\n\t\tAutolinker.Util.assign( this, cfg );\n\t},\n\n\t\n\t/**\n\t * Returns a string name for the type of match that this class represents.\n\t * \n\t * @abstract\n\t * @return {String}\n\t */\n\tgetType : Autolinker.Util.abstractMethod,\n\t\n\t\n\t/**\n\t * Returns the original text that was matched.\n\t * \n\t * @return {String}\n\t */\n\tgetMatchedText : function() {\n\t\treturn this.matchedText;\n\t},\n\t\n\n\t/**\n\t * Returns the anchor href that should be generated for the match.\n\t * \n\t * @abstract\n\t * @return {String}\n\t */\n\tgetAnchorHref : Autolinker.Util.abstractMethod,\n\t\n\t\n\t/**\n\t * Returns the anchor text that should be generated for the match.\n\t * \n\t * @abstract\n\t * @return {String}\n\t */\n\tgetAnchorText : Autolinker.Util.abstractMethod\n\n} );\n/*global Autolinker */\n/**\n * @class Autolinker.match.Email\n * @extends Autolinker.match.Match\n * \n * Represents a Email match found in an input string which should be Autolinked.\n * \n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nAutolinker.match.Email = Autolinker.Util.extend( Autolinker.match.Match, {\n\t\n\t/**\n\t * @cfg {String} email (required)\n\t * \n\t * The email address that was matched.\n\t */\n\t\n\n\t/**\n\t * Returns a string name for the type of match that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetType : function() {\n\t\treturn 'email';\n\t},\n\t\n\t\n\t/**\n\t * Returns the email address that was matched.\n\t * \n\t * @return {String}\n\t */\n\tgetEmail : function() {\n\t\treturn this.email;\n\t},\n\t\n\n\t/**\n\t * Returns the anchor href that should be generated for the match.\n\t * \n\t * @return {String}\n\t */\n\tgetAnchorHref : function() {\n\t\treturn 'mailto:' + this.email;\n\t},\n\t\n\t\n\t/**\n\t * Returns the anchor text that should be generated for the match.\n\t * \n\t * @return {String}\n\t */\n\tgetAnchorText : function() {\n\t\treturn this.email;\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @class Autolinker.match.Twitter\n * @extends Autolinker.match.Match\n * \n * Represents a Twitter match found in an input string which should be Autolinked.\n * \n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nAutolinker.match.Twitter = Autolinker.Util.extend( Autolinker.match.Match, {\n\t\n\t/**\n\t * @cfg {String} twitterHandle (required)\n\t * \n\t * The Twitter handle that was matched.\n\t */\n\t\n\n\t/**\n\t * Returns the type of match that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetType : function() {\n\t\treturn 'twitter';\n\t},\n\t\n\t\n\t/**\n\t * Returns a string name for the type of match that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetTwitterHandle : function() {\n\t\treturn this.twitterHandle;\n\t},\n\t\n\n\t/**\n\t * Returns the anchor href that should be generated for the match.\n\t * \n\t * @return {String}\n\t */\n\tgetAnchorHref : function() {\n\t\treturn 'https://twitter.com/' + this.twitterHandle;\n\t},\n\t\n\t\n\t/**\n\t * Returns the anchor text that should be generated for the match.\n\t * \n\t * @return {String}\n\t */\n\tgetAnchorText : function() {\n\t\treturn '@' + this.twitterHandle;\n\t}\n\t\n} );\n/*global Autolinker */\n/**\n * @class Autolinker.match.Url\n * @extends Autolinker.match.Match\n * \n * Represents a Url match found in an input string which should be Autolinked.\n * \n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nAutolinker.match.Url = Autolinker.Util.extend( Autolinker.match.Match, {\n\t\n\t/**\n\t * @cfg {String} url (required)\n\t * \n\t * The url that was matched.\n\t */\n\t\n\t/**\n\t * @cfg {Boolean} protocolUrlMatch (required)\n\t * \n\t * `true` if the URL is a match which already has a protocol (i.e. 'http://'), `false` if the match was from a 'www' or\n\t * known TLD match.\n\t */\n\t\n\t/**\n\t * @cfg {Boolean} protocolRelativeMatch (required)\n\t * \n\t * `true` if the URL is a protocol-relative match. A protocol-relative match is a URL that starts with '//',\n\t * and will be either http:// or https:// based on the protocol that the site is loaded under.\n\t */\n\t\n\t/**\n\t * @cfg {Boolean} stripPrefix (required)\n\t * @inheritdoc Autolinker#stripPrefix\n\t */\n\t\n\n\t/**\n\t * @private\n\t * @property {RegExp} urlPrefixRegex\n\t * \n\t * A regular expression used to remove the 'http://' or 'https://' and/or the 'www.' from URLs.\n\t */\n\turlPrefixRegex: /^(https?:\\/\\/)?(www\\.)?/i,\n\t\n\t/**\n\t * @private\n\t * @property {RegExp} protocolRelativeRegex\n\t * \n\t * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes\n\t * of {@link #getAnchorText}. A protocol-relative URL is, for example, \"//yahoo.com\"\n\t */\n\tprotocolRelativeRegex : /^\\/\\//,\n\t\n\t/**\n\t * @private\n\t * @property {Boolean} protocolPrepended\n\t * \n\t * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the\n\t * {@link #url} did not have a protocol)\n\t */\n\tprotocolPrepended : false,\n\t\n\n\t/**\n\t * Returns a string name for the type of match that this class represents.\n\t * \n\t * @return {String}\n\t */\n\tgetType : function() {\n\t\treturn 'url';\n\t},\n\t\n\t\n\t/**\n\t * Returns the url that was matched, assuming the protocol to be 'http://' if the original\n\t * match was missing a protocol.\n\t * \n\t * @return {String}\n\t */\n\tgetUrl : function() {\n\t\tvar url = this.url;\n\t\t\n\t\t// if the url string doesn't begin with a protocol, assume 'http://'\n\t\tif( !this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended ) {\n\t\t\turl = this.url = 'http://' + url;\n\t\t\t\n\t\t\tthis.protocolPrepended = true;\n\t\t}\n\t\t\n\t\treturn url;\n\t},\n\t\n\n\t/**\n\t * Returns the anchor href that should be generated for the match.\n\t * \n\t * @return {String}\n\t */\n\tgetAnchorHref : function() {\n\t\tvar url = this.getUrl();\n\t\t\n\t\treturn url.replace( /&/g, '&' ); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html \n\t},\n\t\n\t\n\t/**\n\t * Returns the anchor text that should be generated for the match.\n\t * \n\t * @return {String}\n\t */\n\tgetAnchorText : function() {\n\t\tvar anchorText = this.getUrl();\n\t\t\n\t\tif( this.protocolRelativeMatch ) {\n\t\t\t// Strip off any protocol-relative '//' from the anchor text\n\t\t\tanchorText = this.stripProtocolRelativePrefix( anchorText );\n\t\t}\n\t\tif( this.stripPrefix ) {\n\t\t\tanchorText = this.stripUrlPrefix( anchorText );\n\t\t}\n\t\tanchorText = this.removeTrailingSlash( anchorText ); // remove trailing slash, if there is one\n\t\t\n\t\treturn anchorText;\n\t},\n\t\n\t\n\t// ---------------------------------------\n\t\n\t// Utility Functionality\n\t\n\t/**\n\t * Strips the URL prefix (such as \"http://\" or \"https://\") from the given text.\n\t * \n\t * @private\n\t * @param {String} text The text of the anchor that is being generated, for which to strip off the\n\t * url prefix (such as stripping off \"http://\")\n\t * @return {String} The `anchorText`, with the prefix stripped.\n\t */\n\tstripUrlPrefix : function( text ) {\n\t\treturn text.replace( this.urlPrefixRegex, '' );\n\t},\n\t\n\t\n\t/**\n\t * Strips any protocol-relative '//' from the anchor text.\n\t * \n\t * @private\n\t * @param {String} text The text of the anchor that is being generated, for which to strip off the\n\t * protocol-relative prefix (such as stripping off \"//\")\n\t * @return {String} The `anchorText`, with the protocol-relative prefix stripped.\n\t */\n\tstripProtocolRelativePrefix : function( text ) {\n\t\treturn text.replace( this.protocolRelativeRegex, '' );\n\t},\n\t\n\t\n\t/**\n\t * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed.\n\t * \n\t * @private\n\t * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing\n\t * slash ('/') that may exist.\n\t * @return {String} The `anchorText`, with the trailing slash removed.\n\t */\n\tremoveTrailingSlash : function( anchorText ) {\n\t\tif( anchorText.charAt( anchorText.length - 1 ) === '/' ) {\n\t\t\tanchorText = anchorText.slice( 0, -1 );\n\t\t}\n\t\treturn anchorText;\n\t}\n\t\n} );\nreturn Autolinker;\n\n}));\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `inline.validateLink()` to http/https/ftp\n//\n'use strict';\n\n\nvar Autolinker = require('autolinker');\n\n\nvar LINK_SCAN_RE = /www|@|\\:\\/\\//;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n// Stupid fabric to avoid singletons, for thread safety.\n// Required for engines like Nashorn.\n//\nfunction createLinkifier() {\n var links = [];\n var autolinker = new Autolinker({\n stripPrefix: false,\n url: true,\n email: true,\n twitter: false,\n replaceFn: function (linker, match) {\n // Only collect matched strings but don't change anything.\n switch (match.getType()) {\n /*eslint default-case:0*/\n case 'url':\n links.push({\n text: match.matchedText,\n url: match.getUrl()\n });\n break;\n case 'email':\n links.push({\n text: match.matchedText,\n // normalize email protocol\n url: 'mailto:' + match.getEmail().replace(/^mailto:/i, '')\n });\n break;\n }\n return false;\n }\n });\n\n return {\n links: links,\n autolinker: autolinker\n };\n}\n\n\nmodule.exports = function linkify(state) {\n var i, j, l, tokens, token, text, nodes, ln, pos, level, htmlLinkLevel,\n blockTokens = state.tokens,\n linkifier = null, links, autolinker;\n\n if (!state.options.linkify) { return; }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') { continue; }\n tokens = blockTokens[j].children;\n\n htmlLinkLevel = 0;\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i];\n\n // Skip content of markdown links\n if (token.type === 'link_close') {\n i--;\n while (tokens[i].level !== token.level && tokens[i].type !== 'link_open') {\n i--;\n }\n continue;\n }\n\n // Skip content of html tag links\n if (token.type === 'htmltag') {\n if (isLinkOpen(token.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n if (isLinkClose(token.content)) {\n htmlLinkLevel++;\n }\n }\n if (htmlLinkLevel > 0) { continue; }\n\n if (token.type === 'text' && LINK_SCAN_RE.test(token.content)) {\n\n // Init linkifier in lazy manner, only if required.\n if (!linkifier) {\n linkifier = createLinkifier();\n links = linkifier.links;\n autolinker = linkifier.autolinker;\n }\n\n text = token.content;\n links.length = 0;\n autolinker.link(text);\n\n if (!links.length) { continue; }\n\n // Now split string to nodes\n nodes = [];\n level = token.level;\n\n for (ln = 0; ln < links.length; ln++) {\n\n if (!state.inline.validateLink(links[ln].url)) { continue; }\n\n pos = text.indexOf(links[ln].text);\n\n if (pos) {\n level = level;\n nodes.push({\n type: 'text',\n content: text.slice(0, pos),\n level: level\n });\n }\n nodes.push({\n type: 'link_open',\n href: links[ln].url,\n title: '',\n level: level++\n });\n nodes.push({\n type: 'text',\n content: links[ln].text,\n level: level\n });\n nodes.push({\n type: 'link_close',\n level: --level\n });\n text = text.slice(pos + links[ln].text.length);\n }\n if (text.length) {\n nodes.push({\n type: 'text',\n content: text,\n level: level\n });\n }\n\n // replace current node\n blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1));\n }\n }\n }\n};\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar Ruler = require('./ruler');\n\n/**\n * Core parser `rules`\n */\n\nvar _rules = [\n [ 'block', require('./rules_core/block') ],\n [ 'abbr', require('./rules_core/abbr') ],\n [ 'references', require('./rules_core/references') ],\n [ 'inline', require('./rules_core/inline') ],\n [ 'footnote_tail', require('./rules_core/footnote_tail') ],\n [ 'abbr2', require('./rules_core/abbr2') ],\n [ 'replacements', require('./rules_core/replacements') ],\n [ 'smartquotes', require('./rules_core/smartquotes') ],\n [ 'linkify', require('./rules_core/linkify') ]\n];\n\n/**\n * Class for top level (`core`) parser rules\n *\n * @api private\n */\n\nfunction Core() {\n this.options = {};\n this.ruler = new Ruler();\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n\n/**\n * Process rules with the given `state`\n *\n * @param {Object} `state`\n * @api private\n */\n\nCore.prototype.process = function (state) {\n var i, l, rules;\n rules = this.ruler.getRules('');\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\n/**\n * Expose `Core`\n */\n\nmodule.exports = Core;\n","// Parser state class\n\n'use strict';\n\n\nfunction StateBlock(src, parser, options, env, tokens) {\n var ch, s, start, pos, len, indent, indent_found;\n\n this.src = src;\n\n // Shortcuts to simplify nested calls\n this.parser = parser;\n\n this.options = options;\n\n this.env = env;\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n\n this.bMarks = []; // line begin offsets for fast jumps\n this.eMarks = []; // line end offsets for fast jumps\n this.tShift = []; // indent for each line\n\n // block parser variables\n this.blkIndent = 0; // required block content indent\n // (for example, if we are in list)\n this.line = 0; // line index in src\n this.lineMax = 0; // lines count\n this.tight = false; // loose/tight mode for lists\n this.parentType = 'root'; // if `list`, block parser stops on two newlines\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n\n this.level = 0;\n\n // renderer\n this.result = '';\n\n // Create caches\n // Generate markers.\n s = this.src;\n indent = 0;\n indent_found = false;\n\n for (start = pos = indent = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (ch === 0x20/* space */) {\n indent++;\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++; }\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n\n indent_found = false;\n indent = 0;\n start = pos + 1;\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; }\n }\n return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break; }\n }\n return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n }\n return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i, first, last, queue, shift,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n // Opt: don't use push queue for single line;\n if (line + 1 === end) {\n first = this.bMarks[line] + Math.min(this.tShift[line], indent);\n last = keepLastLF ? this.eMarks[line] + 1 : this.eMarks[line];\n return this.src.slice(first, last);\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n shift = this.tShift[line];\n if (shift > indent) { shift = indent; }\n if (shift < 0) { shift = 0; }\n\n first = this.bMarks[line] + shift;\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n queue[i] = this.src.slice(first, last);\n }\n\n return queue.join('');\n};\n\n\nmodule.exports = StateBlock;\n","// Code block (4 spaces padded)\n\n'use strict';\n\n\nmodule.exports = function code(state, startLine, endLine/*, silent*/) {\n var nextLine, last;\n\n if (state.tShift[startLine] - state.blkIndent < 4) { return false; }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n if (state.tShift[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n break;\n }\n\n state.line = nextLine;\n state.tokens.push({\n type: 'code',\n content: state.getLines(startLine, last, 4 + state.blkIndent, true),\n block: true,\n lines: [ startLine, state.line ],\n level: state.level\n });\n\n return true;\n};\n","// fences (``` lang, ~~~ lang)\n\n'use strict';\n\n\nmodule.exports = function fences(state, startLine, endLine, silent) {\n var marker, len, params, nextLine, mem,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos + 3 > max) { return false; }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false;\n }\n\n // scan marker length\n mem = pos;\n pos = state.skipChars(pos, marker);\n\n len = pos - mem;\n\n if (len < 3) { return false; }\n\n params = state.src.slice(pos, max).trim();\n\n if (params.indexOf('`') >= 0) { return false; }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true; }\n\n // search end of block\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.tShift[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n if (state.tShift[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker);\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue; }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos);\n\n if (pos < max) { continue; }\n\n haveEndMarker = true;\n // found!\n break;\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.tShift[startLine];\n\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n state.tokens.push({\n type: 'fence',\n params: params,\n content: state.getLines(startLine + 1, nextLine, len, true),\n lines: [ startLine, state.line ],\n level: state.level\n });\n\n return true;\n};\n","// Block quotes\n\n'use strict';\n\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines,\n terminatorRules,\n i, l, terminate,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos > max) { return false; }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; }\n\n if (state.level >= state.options.maxNesting) { return false; }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true; }\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n\n oldBMarks = [ state.bMarks[startLine] ];\n state.bMarks[startLine] = pos;\n\n // check if we have an empty blockquote\n pos = pos < max ? state.skipSpaces(pos) : pos;\n lastLineEmpty = pos >= max;\n\n oldTShift = [ state.tShift[startLine] ];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n\n terminatorRules = state.parser.ruler.getRules('blockquote');\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */) {\n // This line is inside the blockquote.\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n pos = pos < max ? state.skipSpaces(pos) : pos;\n lastLineEmpty = pos >= max;\n\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break; }\n\n // Case 3: another tag found.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n\n // A negative number means that this is a paragraph continuation;\n //\n // Any negative number will do the job here, but it's better for it\n // to be large enough to make any bugs obvious.\n state.tShift[nextLine] = -1337;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n state.tokens.push({\n type: 'blockquote_open',\n lines: lines = [ startLine, 0 ],\n level: state.level++\n });\n state.parser.tokenize(state, startLine, nextLine);\n state.tokens.push({\n type: 'blockquote_close',\n level: --state.level\n });\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n }\n state.blkIndent = oldIndent;\n\n return true;\n};\n","// Horizontal rule\n\n'use strict';\n\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker, cnt, ch,\n pos = state.bMarks[startLine],\n max = state.eMarks[startLine];\n\n pos += state.tShift[startLine];\n\n if (pos > max) { return false; }\n\n marker = state.src.charCodeAt(pos++);\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false;\n }\n\n // markers can be mixed with spaces, but there should be at least 3 one\n\n cnt = 1;\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n if (ch !== marker && ch !== 0x20/* space */) { return false; }\n if (ch === marker) { cnt++; }\n }\n\n if (cnt < 3) { return false; }\n\n if (silent) { return true; }\n\n state.line = startLine + 1;\n state.tokens.push({\n type: 'hr',\n lines: [ startLine, state.line ],\n level: state.level\n });\n\n return true;\n};\n","// Lists\n\n'use strict';\n\n\n// Search `[-+*][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max;\n\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n\n if (pos >= max) { return -1; }\n\n marker = state.src.charCodeAt(pos++);\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1;\n }\n\n if (pos < max && state.src.charCodeAt(pos) !== 0x20) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n\n return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos + 1 >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n continue;\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break;\n }\n\n return -1;\n }\n\n\n if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].tight = true;\n state.tokens[i].tight = true;\n i += 2;\n }\n }\n}\n\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var nextLine,\n indent,\n oldTShift,\n oldIndent,\n oldTight,\n oldParentType,\n start,\n posAfterMarker,\n max,\n indentAfterMarker,\n markerValue,\n markerCharCode,\n isOrdered,\n contentStart,\n listTokIdx,\n prevEmptyEnd,\n listLines,\n itemLines,\n tight = true,\n terminatorRules,\n i, l, terminate;\n\n // Detect list type and position after marker\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n }\n\n if (state.level >= state.options.maxNesting) { return false; }\n\n // We should terminate list on style change. Remember first one to compare.\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n // For validation mode we can terminate immediately\n if (silent) { return true; }\n\n // Start list\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.substr(start, posAfterMarker - start - 1));\n\n state.tokens.push({\n type: 'ordered_list_open',\n order: markerValue,\n lines: listLines = [ startLine, 0 ],\n level: state.level++\n });\n\n } else {\n state.tokens.push({\n type: 'bullet_list_open',\n lines: listLines = [ startLine, 0 ],\n level: state.level++\n });\n }\n\n //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.parser.ruler.getRules('list');\n\n while (nextLine < endLine) {\n contentStart = state.skipSpaces(posAfterMarker);\n max = state.eMarks[nextLine];\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = contentStart - posAfterMarker;\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n // If indent is less than 1, assume that it's one, example:\n // \"-\\n test\"\n if (indentAfterMarker < 1) { indentAfterMarker = 1; }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker;\n\n // Run subparser & write tokens\n state.tokens.push({\n type: 'list_item_open',\n lines: itemLines = [ startLine, 0 ],\n level: state.level++\n });\n\n oldIndent = state.blkIndent;\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldParentType = state.parentType;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.blkIndent = indent;\n state.tight = true;\n state.parentType = 'list';\n\n state.parser.tokenize(state, startLine, endLine, true);\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1);\n\n state.blkIndent = oldIndent;\n state.tShift[startLine] = oldTShift;\n state.tight = oldTight;\n state.parentType = oldParentType;\n\n state.tokens.push({\n type: 'list_item_close',\n level: --state.level\n });\n\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) { break; }\n\n if (state.isEmpty(nextLine)) {\n break;\n }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.tShift[nextLine] < state.blkIndent) { break; }\n\n // fail if terminating block found\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n }\n\n // Finilize list\n state.tokens.push({\n type: isOrdered ? 'ordered_list_close' : 'bullet_list_close',\n level: --state.level\n });\n listLines[1] = nextLine;\n\n state.line = nextLine;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","// Process footnote reference list\n\n'use strict';\n\n\nmodule.exports = function footnote(state, startLine, endLine, silent) {\n var oldBMark, oldTShift, oldParentType, pos, label,\n start = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // line should be at least 5 chars - \"[^x]:\"\n if (start + 4 > max) { return false; }\n\n if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n for (pos = start + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x20) { return false; }\n if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n break;\n }\n }\n\n if (pos === start + 2) { return false; } // no empty footnote labels\n if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; }\n if (silent) { return true; }\n pos++;\n\n if (!state.env.footnotes) { state.env.footnotes = {}; }\n if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; }\n label = state.src.slice(start + 2, pos - 2);\n state.env.footnotes.refs[':' + label] = -1;\n\n state.tokens.push({\n type: 'footnote_reference_open',\n label: label,\n level: state.level++\n });\n\n oldBMark = state.bMarks[startLine];\n oldTShift = state.tShift[startLine];\n oldParentType = state.parentType;\n state.tShift[startLine] = state.skipSpaces(pos) - pos;\n state.bMarks[startLine] = pos;\n state.blkIndent += 4;\n state.parentType = 'footnote';\n\n if (state.tShift[startLine] < state.blkIndent) {\n state.tShift[startLine] += state.blkIndent;\n state.bMarks[startLine] -= state.blkIndent;\n }\n\n state.parser.tokenize(state, startLine, endLine, true);\n\n state.parentType = oldParentType;\n state.blkIndent -= 4;\n state.tShift[startLine] = oldTShift;\n state.bMarks[startLine] = oldBMark;\n\n state.tokens.push({\n type: 'footnote_reference_close',\n level: --state.level\n });\n\n return true;\n};\n","// heading (#, ##, ...)\n\n'use strict';\n\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch, level, tmp,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos >= max) { return false; }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n // count heading level\n level = 1;\n ch = state.src.charCodeAt(++pos);\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; }\n\n if (silent) { return true; }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipCharsBack(max, 0x20, pos); // space\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n\n state.tokens.push({ type: 'heading_open',\n hLevel: level,\n lines: [ startLine, state.line ],\n level: state.level\n });\n\n // only if header is not empty\n if (pos < max) {\n state.tokens.push({\n type: 'inline',\n content: state.src.slice(pos, max).trim(),\n level: state.level + 1,\n lines: [ startLine, state.line ],\n children: []\n });\n }\n state.tokens.push({ type: 'heading_close', hLevel: level, level: state.level });\n\n return true;\n};\n","// lheading (---, ===)\n\n'use strict';\n\n\nmodule.exports = function lheading(state, startLine, endLine/*, silent*/) {\n var marker, pos, max,\n next = startLine + 1;\n\n if (next >= endLine) { return false; }\n if (state.tShift[next] < state.blkIndent) { return false; }\n\n // Scan next line\n\n if (state.tShift[next] - state.blkIndent > 3) { return false; }\n\n pos = state.bMarks[next] + state.tShift[next];\n max = state.eMarks[next];\n\n if (pos >= max) { return false; }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x2D/* - */ && marker !== 0x3D/* = */) { return false; }\n\n pos = state.skipChars(pos, marker);\n\n pos = state.skipSpaces(pos);\n\n if (pos < max) { return false; }\n\n pos = state.bMarks[startLine] + state.tShift[startLine];\n\n state.line = next + 1;\n state.tokens.push({\n type: 'heading_open',\n hLevel: marker === 0x3D/* = */ ? 1 : 2,\n lines: [ startLine, state.line ],\n level: state.level\n });\n state.tokens.push({\n type: 'inline',\n content: state.src.slice(pos, state.eMarks[startLine]).trim(),\n level: state.level + 1,\n lines: [ startLine, state.line - 1 ],\n children: []\n });\n state.tokens.push({\n type: 'heading_close',\n hLevel: marker === 0x3D/* = */ ? 1 : 2,\n level: state.level\n });\n\n return true;\n};\n","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\n'use strict';\n\nvar html_blocks = {};\n\n[\n 'article',\n 'aside',\n 'button',\n 'blockquote',\n 'body',\n 'canvas',\n 'caption',\n 'col',\n 'colgroup',\n 'dd',\n 'div',\n 'dl',\n 'dt',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'hr',\n 'iframe',\n 'li',\n 'map',\n 'object',\n 'ol',\n 'output',\n 'p',\n 'pre',\n 'progress',\n 'script',\n 'section',\n 'style',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'tr',\n 'thead',\n 'ul',\n 'video'\n].forEach(function (name) { html_blocks[name] = true; });\n\n\nmodule.exports = html_blocks;\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\n\n\nvar HTML_TAG_OPEN_RE = /^<([a-zA-Z]{1,15})[\\s\\/>]/;\nvar HTML_TAG_CLOSE_RE = /^<\\/([a-zA-Z]{1,15})[\\s>]/;\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\nmodule.exports = function htmlblock(state, startLine, endLine, silent) {\n var ch, match, nextLine,\n pos = state.bMarks[startLine],\n max = state.eMarks[startLine],\n shift = state.tShift[startLine];\n\n pos += shift;\n\n if (!state.options.html) { return false; }\n\n if (shift > 3 || pos + 2 >= max) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x21/* ! */ || ch === 0x3F/* ? */) {\n // Directive start / comment start / processing instruction start\n if (silent) { return true; }\n\n } else if (ch === 0x2F/* / */ || isLetter(ch)) {\n\n // Probably start or end of tag\n if (ch === 0x2F/* \\ */) {\n // closing tag\n match = state.src.slice(pos, max).match(HTML_TAG_CLOSE_RE);\n if (!match) { return false; }\n } else {\n // opening tag\n match = state.src.slice(pos, max).match(HTML_TAG_OPEN_RE);\n if (!match) { return false; }\n }\n // Make sure tag name is valid\n if (block_names[match[1].toLowerCase()] !== true) { return false; }\n if (silent) { return true; }\n\n } else {\n return false;\n }\n\n // If we are here - we detected HTML block.\n // Let's roll down till empty line (block end).\n nextLine = startLine + 1;\n while (nextLine < state.lineMax && !state.isEmpty(nextLine)) {\n nextLine++;\n }\n\n state.line = nextLine;\n state.tokens.push({\n type: 'htmlblock',\n level: state.level,\n lines: [ startLine, state.line ],\n content: state.getLines(startLine, nextLine, 0, true)\n });\n\n return true;\n};\n","// GFM table, non-standard\n\n'use strict';\n\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.blkIndent,\n max = state.eMarks[line];\n\n return state.src.substr(pos, max - pos);\n}\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, nextLine, rows, cell,\n aligns, t, tableLines, tbodyLines;\n\n // should have at least three lines\n if (startLine + 2 > endLine) { return false; }\n\n nextLine = startLine + 1;\n\n if (state.tShift[nextLine] < state.blkIndent) { return false; }\n\n // first character of the second line should be '|' or '-'\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n ch = state.src.charCodeAt(pos);\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; }\n\n lineText = getLine(state, startLine + 1);\n if (!/^[-:| ]+$/.test(lineText)) { return false; }\n\n rows = lineText.split('|');\n if (rows <= 2) { return false; }\n aligns = [];\n for (i = 0; i < rows.length; i++) {\n t = rows[i].trim();\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === rows.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false; }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n if (lineText.indexOf('|') === -1) { return false; }\n rows = lineText.replace(/^\\||\\|$/g, '').split('|');\n if (aligns.length !== rows.length) { return false; }\n if (silent) { return true; }\n\n state.tokens.push({\n type: 'table_open',\n lines: tableLines = [ startLine, 0 ],\n level: state.level++\n });\n state.tokens.push({\n type: 'thead_open',\n lines: [ startLine, startLine + 1 ],\n level: state.level++\n });\n\n state.tokens.push({\n type: 'tr_open',\n lines: [ startLine, startLine + 1 ],\n level: state.level++\n });\n for (i = 0; i < rows.length; i++) {\n state.tokens.push({\n type: 'th_open',\n align: aligns[i],\n lines: [ startLine, startLine + 1 ],\n level: state.level++\n });\n state.tokens.push({\n type: 'inline',\n content: rows[i].trim(),\n lines: [ startLine, startLine + 1 ],\n level: state.level,\n children: []\n });\n state.tokens.push({ type: 'th_close', level: --state.level });\n }\n state.tokens.push({ type: 'tr_close', level: --state.level });\n state.tokens.push({ type: 'thead_close', level: --state.level });\n\n state.tokens.push({\n type: 'tbody_open',\n lines: tbodyLines = [ startLine + 2, 0 ],\n level: state.level++\n });\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.tShift[nextLine] < state.blkIndent) { break; }\n\n lineText = getLine(state, nextLine).trim();\n if (lineText.indexOf('|') === -1) { break; }\n rows = lineText.replace(/^\\||\\|$/g, '').split('|');\n\n state.tokens.push({ type: 'tr_open', level: state.level++ });\n for (i = 0; i < rows.length; i++) {\n state.tokens.push({ type: 'td_open', align: aligns[i], level: state.level++ });\n // 0x7c === '|'\n cell = rows[i].substring(\n rows[i].charCodeAt(0) === 0x7c ? 1 : 0,\n rows[i].charCodeAt(rows[i].length - 1) === 0x7c ? rows[i].length - 1 : rows[i].length\n ).trim();\n state.tokens.push({\n type: 'inline',\n content: cell,\n level: state.level,\n children: []\n });\n state.tokens.push({ type: 'td_close', level: --state.level });\n }\n state.tokens.push({ type: 'tr_close', level: --state.level });\n }\n state.tokens.push({ type: 'tbody_close', level: --state.level });\n state.tokens.push({ type: 'table_close', level: --state.level });\n\n tableLines[1] = tbodyLines[1] = nextLine;\n state.line = nextLine;\n return true;\n};\n","// Definition lists\n\n'use strict';\n\n\n// Search `[:~][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipMarker(state, line) {\n var pos, marker,\n start = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n\n if (start >= max) { return -1; }\n\n // Check bullet\n marker = state.src.charCodeAt(start++);\n if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; }\n\n pos = state.skipSpaces(start);\n\n // require space after \":\"\n if (start === pos) { return -1; }\n\n // no empty definitions, e.g. \" : \"\n if (pos >= max) { return -1; }\n\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].tight = true;\n state.tokens[i].tight = true;\n i += 2;\n }\n }\n}\n\nmodule.exports = function deflist(state, startLine, endLine, silent) {\n var contentStart,\n ddLine,\n dtLine,\n itemLines,\n listLines,\n listTokIdx,\n nextLine,\n oldIndent,\n oldDDIndent,\n oldParentType,\n oldTShift,\n oldTight,\n prevEmptyEnd,\n tight;\n\n if (silent) {\n // quirk: validation mode validates a dd block only, not a whole deflist\n if (state.ddIndent < 0) { return false; }\n return skipMarker(state, startLine) >= 0;\n }\n\n nextLine = startLine + 1;\n if (state.isEmpty(nextLine)) {\n if (++nextLine > endLine) { return false; }\n }\n\n if (state.tShift[nextLine] < state.blkIndent) { return false; }\n contentStart = skipMarker(state, nextLine);\n if (contentStart < 0) { return false; }\n\n if (state.level >= state.options.maxNesting) { return false; }\n\n // Start list\n listTokIdx = state.tokens.length;\n\n state.tokens.push({\n type: 'dl_open',\n lines: listLines = [ startLine, 0 ],\n level: state.level++\n });\n\n //\n // Iterate list items\n //\n\n dtLine = startLine;\n ddLine = nextLine;\n\n // One definition list can contain multiple DTs,\n // and one DT can be followed by multiple DDs.\n //\n // Thus, there is two loops here, and label is\n // needed to break out of the second one\n //\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n for (;;) {\n tight = true;\n prevEmptyEnd = false;\n\n state.tokens.push({\n type: 'dt_open',\n lines: [ dtLine, dtLine ],\n level: state.level++\n });\n state.tokens.push({\n type: 'inline',\n content: state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim(),\n level: state.level + 1,\n lines: [ dtLine, dtLine ],\n children: []\n });\n state.tokens.push({\n type: 'dt_close',\n level: --state.level\n });\n\n for (;;) {\n state.tokens.push({\n type: 'dd_open',\n lines: itemLines = [ nextLine, 0 ],\n level: state.level++\n });\n\n oldTight = state.tight;\n oldDDIndent = state.ddIndent;\n oldIndent = state.blkIndent;\n oldTShift = state.tShift[ddLine];\n oldParentType = state.parentType;\n state.blkIndent = state.ddIndent = state.tShift[ddLine] + 2;\n state.tShift[ddLine] = contentStart - state.bMarks[ddLine];\n state.tight = true;\n state.parentType = 'deflist';\n\n state.parser.tokenize(state, ddLine, endLine, true);\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1);\n\n state.tShift[ddLine] = oldTShift;\n state.tight = oldTight;\n state.parentType = oldParentType;\n state.blkIndent = oldIndent;\n state.ddIndent = oldDDIndent;\n\n state.tokens.push({\n type: 'dd_close',\n level: --state.level\n });\n\n itemLines[1] = nextLine = state.line;\n\n if (nextLine >= endLine) { break OUTER; }\n\n if (state.tShift[nextLine] < state.blkIndent) { break OUTER; }\n contentStart = skipMarker(state, nextLine);\n if (contentStart < 0) { break; }\n\n ddLine = nextLine;\n\n // go to the next loop iteration:\n // insert DD tag and repeat checking\n }\n\n if (nextLine >= endLine) { break; }\n dtLine = nextLine;\n\n if (state.isEmpty(dtLine)) { break; }\n if (state.tShift[dtLine] < state.blkIndent) { break; }\n\n ddLine = dtLine + 1;\n if (ddLine >= endLine) { break; }\n if (state.isEmpty(ddLine)) { ddLine++; }\n if (ddLine >= endLine) { break; }\n\n if (state.tShift[ddLine] < state.blkIndent) { break; }\n contentStart = skipMarker(state, ddLine);\n if (contentStart < 0) { break; }\n\n // go to the next loop iteration:\n // insert DT and DD tags and repeat checking\n }\n\n // Finilize list\n state.tokens.push({\n type: 'dl_close',\n level: --state.level\n });\n listLines[1] = nextLine;\n\n state.line = nextLine;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","// Paragraph\n\n'use strict';\n\n\nmodule.exports = function paragraph(state, startLine/*, endLine*/) {\n var endLine, content, terminate, i, l,\n nextLine = startLine + 1,\n terminatorRules;\n\n endLine = state.lineMax;\n\n // jump line-by-line until empty one or EOF\n if (nextLine < endLine && !state.isEmpty(nextLine)) {\n terminatorRules = state.parser.ruler.getRules('paragraph');\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.tShift[nextLine] - state.blkIndent > 3) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine;\n if (content.length) {\n state.tokens.push({\n type: 'paragraph_open',\n tight: false,\n lines: [ startLine, state.line ],\n level: state.level\n });\n state.tokens.push({\n type: 'inline',\n content: content,\n level: state.level + 1,\n lines: [ startLine, state.line ],\n children: []\n });\n state.tokens.push({\n type: 'paragraph_close',\n tight: false,\n level: state.level\n });\n }\n\n return true;\n};\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar Ruler = require('./ruler');\nvar StateBlock = require('./rules_block/state_block');\n\n/**\n * Parser rules\n */\n\nvar _rules = [\n [ 'code', require('./rules_block/code') ],\n [ 'fences', require('./rules_block/fences'), [ 'paragraph', 'blockquote', 'list' ] ],\n [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'blockquote', 'list' ] ],\n [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'blockquote', 'list' ] ],\n [ 'list', require('./rules_block/list'), [ 'paragraph', 'blockquote' ] ],\n [ 'footnote', require('./rules_block/footnote'), [ 'paragraph' ] ],\n [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'blockquote' ] ],\n [ 'lheading', require('./rules_block/lheading') ],\n [ 'htmlblock', require('./rules_block/htmlblock'), [ 'paragraph', 'blockquote' ] ],\n [ 'table', require('./rules_block/table'), [ 'paragraph' ] ],\n [ 'deflist', require('./rules_block/deflist'), [ 'paragraph' ] ],\n [ 'paragraph', require('./rules_block/paragraph') ]\n];\n\n/**\n * Block Parser class\n *\n * @api private\n */\n\nfunction ParserBlock() {\n this.ruler = new Ruler();\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], {\n alt: (_rules[i][2] || []).slice()\n });\n }\n}\n\n/**\n * Generate tokens for the given input range.\n *\n * @param {Object} `state` Has properties like `src`, `parser`, `options` etc\n * @param {Number} `startLine`\n * @param {Number} `endLine`\n * @api private\n */\n\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var rules = this.ruler.getRules('');\n var len = rules.length;\n var line = startLine;\n var hasEmptyLines = false;\n var ok, i;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n if (line >= endLine) {\n break;\n }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.tShift[line] < state.blkIndent) {\n break;\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n if (ok) {\n break;\n }\n }\n\n // set state.tight iff we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines;\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n\n // two empty lines should stop the parser in list mode\n if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; }\n state.line = line;\n }\n }\n};\n\nvar TABS_SCAN_RE = /[\\n\\t]/g;\nvar NEWLINES_RE = /\\r[\\n\\u0085]|[\\u2424\\u2028\\u0085]/g;\nvar SPACES_RE = /\\u00a0/g;\n\n/**\n * Tokenize the given `str`.\n *\n * @param {String} `str` Source string\n * @param {Object} `options`\n * @param {Object} `env`\n * @param {Array} `outTokens`\n * @api private\n */\n\nParserBlock.prototype.parse = function (str, options, env, outTokens) {\n var state, lineStart = 0, lastTabPos = 0;\n if (!str) { return []; }\n\n // Normalize spaces\n str = str.replace(SPACES_RE, ' ');\n\n // Normalize newlines\n str = str.replace(NEWLINES_RE, '\\n');\n\n // Replace tabs with proper number of spaces (1..4)\n if (str.indexOf('\\t') >= 0) {\n str = str.replace(TABS_SCAN_RE, function (match, offset) {\n var result;\n if (str.charCodeAt(offset) === 0x0A) {\n lineStart = offset + 1;\n lastTabPos = 0;\n return match;\n }\n result = ' '.slice((offset - lineStart - lastTabPos) % 4);\n lastTabPos = offset - lineStart + 1;\n return result;\n });\n }\n\n state = new StateBlock(str, this, options, env, outTokens);\n this.tokenize(state, state.line, state.lineMax);\n};\n\n/**\n * Expose `ParserBlock`\n */\n\nmodule.exports = ParserBlock;\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n'use strict';\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x5C/* \\ */:\n case 0x60/* ` */:\n case 0x2A/* * */:\n case 0x5F/* _ */:\n case 0x5E/* ^ */:\n case 0x5B/* [ */:\n case 0x5D/* ] */:\n case 0x21/* ! */:\n case 0x26/* & */:\n case 0x3C/* < */:\n case 0x3E/* > */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x40/* @ */:\n case 0x7E/* ~ */:\n case 0x2B/* + */:\n case 0x3D/* = */:\n case 0x3A/* : */:\n return true;\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) { return false; }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n state.pos = pos;\n\n return true;\n};\n","// Proceess '\\n'\n\n'use strict';\n\nmodule.exports = function newline(state, silent) {\n var pmax, max, pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n pmax = state.pending.length - 1;\n max = state.posMax;\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Strip out all trailing spaces on this line.\n for (var i = pmax - 2; i >= 0; i--) {\n if (state.pending.charCodeAt(i) !== 0x20) {\n state.pending = state.pending.substring(0, i + 1);\n break;\n }\n }\n state.push({\n type: 'hardbreak',\n level: state.level\n });\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push({\n type: 'softbreak',\n level: state.level\n });\n }\n\n } else {\n state.push({\n type: 'softbreak',\n level: state.level\n });\n }\n }\n\n pos++;\n\n // skip heading spaces for next line\n while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n state.pos = pos;\n return true;\n};\n","// Proceess escaped chars and hardbreaks\n\n'use strict';\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function(ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nmodule.exports = function escape(state, silent) {\n var ch, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) { return false; }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) { state.pending += state.src[pos]; }\n state.pos += 2;\n return true;\n }\n\n if (ch === 0x0A) {\n if (!silent) {\n state.push({\n type: 'hardbreak',\n level: state.level\n });\n }\n\n pos++;\n // skip leading whitespaces from next line\n while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) { state.pending += '\\\\'; }\n state.pos++;\n return true;\n};\n","// Parse backticks\n\n'use strict';\n\nmodule.exports = function backticks(state, silent) {\n var start, max, marker, matchStart, matchEnd,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60/* ` */) { return false; }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n marker = state.src.slice(start, pos);\n\n matchStart = matchEnd = pos;\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n if (matchEnd - matchStart === marker.length) {\n if (!silent) {\n state.push({\n type: 'code',\n content: state.src.slice(pos, matchStart)\n .replace(/[ \\n]+/g, ' ')\n .trim(),\n block: false,\n level: state.level\n });\n }\n state.pos = matchEnd;\n return true;\n }\n }\n\n if (!silent) { state.pending += marker; }\n state.pos += marker.length;\n return true;\n};\n","// Process ~~deleted text~~\n\n'use strict';\n\nmodule.exports = function del(state, silent) {\n var found,\n pos,\n stack,\n max = state.posMax,\n start = state.pos,\n lastChar,\n nextChar;\n\n if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 4 >= max) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x7E/* ~ */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n nextChar = state.src.charCodeAt(start + 2);\n\n if (lastChar === 0x7E/* ~ */) { return false; }\n if (nextChar === 0x7E/* ~ */) { return false; }\n if (nextChar === 0x20 || nextChar === 0x0A) { return false; }\n\n pos = start + 2;\n while (pos < max && state.src.charCodeAt(pos) === 0x7E/* ~ */) { pos++; }\n if (pos > start + 3) {\n // sequence of 4+ markers taking as literal, same as in a emphasis\n state.pos += pos - start;\n if (!silent) { state.pending += state.src.slice(start, pos); }\n return true;\n }\n\n state.pos = start + 2;\n stack = 1;\n\n while (state.pos + 1 < max) {\n if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {\n if (state.src.charCodeAt(state.pos + 1) === 0x7E/* ~ */) {\n lastChar = state.src.charCodeAt(state.pos - 1);\n nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1;\n if (nextChar !== 0x7E/* ~ */ && lastChar !== 0x7E/* ~ */) {\n if (lastChar !== 0x20 && lastChar !== 0x0A) {\n // closing '~~'\n stack--;\n } else if (nextChar !== 0x20 && nextChar !== 0x0A) {\n // opening '~~'\n stack++;\n } // else {\n // // standalone ' ~~ ' indented with spaces\n // }\n if (stack <= 0) {\n found = true;\n break;\n }\n }\n }\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found) {\n // parser failed to find ending tag, so it's not valid emphasis\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 2;\n\n if (!silent) {\n state.push({ type: 'del_open', level: state.level++ });\n state.parser.tokenize(state);\n state.push({ type: 'del_close', level: --state.level });\n }\n\n state.pos = state.posMax + 2;\n state.posMax = max;\n return true;\n};\n","// Process ++inserted text++\n\n'use strict';\n\nmodule.exports = function ins(state, silent) {\n var found,\n pos,\n stack,\n max = state.posMax,\n start = state.pos,\n lastChar,\n nextChar;\n\n if (state.src.charCodeAt(start) !== 0x2B/* + */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 4 >= max) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x2B/* + */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n nextChar = state.src.charCodeAt(start + 2);\n\n if (lastChar === 0x2B/* + */) { return false; }\n if (nextChar === 0x2B/* + */) { return false; }\n if (nextChar === 0x20 || nextChar === 0x0A) { return false; }\n\n pos = start + 2;\n while (pos < max && state.src.charCodeAt(pos) === 0x2B/* + */) { pos++; }\n if (pos !== start + 2) {\n // sequence of 3+ markers taking as literal, same as in a emphasis\n state.pos += pos - start;\n if (!silent) { state.pending += state.src.slice(start, pos); }\n return true;\n }\n\n state.pos = start + 2;\n stack = 1;\n\n while (state.pos + 1 < max) {\n if (state.src.charCodeAt(state.pos) === 0x2B/* + */) {\n if (state.src.charCodeAt(state.pos + 1) === 0x2B/* + */) {\n lastChar = state.src.charCodeAt(state.pos - 1);\n nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1;\n if (nextChar !== 0x2B/* + */ && lastChar !== 0x2B/* + */) {\n if (lastChar !== 0x20 && lastChar !== 0x0A) {\n // closing '++'\n stack--;\n } else if (nextChar !== 0x20 && nextChar !== 0x0A) {\n // opening '++'\n stack++;\n } // else {\n // // standalone ' ++ ' indented with spaces\n // }\n if (stack <= 0) {\n found = true;\n break;\n }\n }\n }\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found) {\n // parser failed to find ending tag, so it's not valid emphasis\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 2;\n\n if (!silent) {\n state.push({ type: 'ins_open', level: state.level++ });\n state.parser.tokenize(state);\n state.push({ type: 'ins_close', level: --state.level });\n }\n\n state.pos = state.posMax + 2;\n state.posMax = max;\n return true;\n};\n","// Process ==highlighted text==\n\n'use strict';\n\nmodule.exports = function del(state, silent) {\n var found,\n pos,\n stack,\n max = state.posMax,\n start = state.pos,\n lastChar,\n nextChar;\n\n if (state.src.charCodeAt(start) !== 0x3D/* = */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 4 >= max) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x3D/* = */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n nextChar = state.src.charCodeAt(start + 2);\n\n if (lastChar === 0x3D/* = */) { return false; }\n if (nextChar === 0x3D/* = */) { return false; }\n if (nextChar === 0x20 || nextChar === 0x0A) { return false; }\n\n pos = start + 2;\n while (pos < max && state.src.charCodeAt(pos) === 0x3D/* = */) { pos++; }\n if (pos !== start + 2) {\n // sequence of 3+ markers taking as literal, same as in a emphasis\n state.pos += pos - start;\n if (!silent) { state.pending += state.src.slice(start, pos); }\n return true;\n }\n\n state.pos = start + 2;\n stack = 1;\n\n while (state.pos + 1 < max) {\n if (state.src.charCodeAt(state.pos) === 0x3D/* = */) {\n if (state.src.charCodeAt(state.pos + 1) === 0x3D/* = */) {\n lastChar = state.src.charCodeAt(state.pos - 1);\n nextChar = state.pos + 2 < max ? state.src.charCodeAt(state.pos + 2) : -1;\n if (nextChar !== 0x3D/* = */ && lastChar !== 0x3D/* = */) {\n if (lastChar !== 0x20 && lastChar !== 0x0A) {\n // closing '=='\n stack--;\n } else if (nextChar !== 0x20 && nextChar !== 0x0A) {\n // opening '=='\n stack++;\n } // else {\n // // standalone ' == ' indented with spaces\n // }\n if (stack <= 0) {\n found = true;\n break;\n }\n }\n }\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found) {\n // parser failed to find ending tag, so it's not valid emphasis\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 2;\n\n if (!silent) {\n state.push({ type: 'mark_open', level: state.level++ });\n state.parser.tokenize(state);\n state.push({ type: 'mark_close', level: --state.level });\n }\n\n state.pos = state.posMax + 2;\n state.posMax = max;\n return true;\n};\n","// Process *this* and _that_\n\n'use strict';\n\n\nfunction isAlphaNum(code) {\n return (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) ||\n (code >= 0x41 /* A */ && code <= 0x5A /* Z */) ||\n (code >= 0x61 /* a */ && code <= 0x7A /* z */);\n}\n\n// parse sequence of emphasis markers,\n// \"start\" should point at a valid marker\nfunction scanDelims(state, start) {\n var pos = start, lastChar, nextChar, count,\n can_open = true,\n can_close = true,\n max = state.posMax,\n marker = state.src.charCodeAt(start);\n\n lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n\n while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; }\n if (pos >= max) { can_open = false; }\n count = pos - start;\n\n if (count >= 4) {\n // sequence of four or more unescaped markers can't start/end an emphasis\n can_open = can_close = false;\n } else {\n nextChar = pos < max ? state.src.charCodeAt(pos) : -1;\n\n // check whitespace conditions\n if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; }\n if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; }\n\n if (marker === 0x5F /* _ */) {\n // check if we aren't inside the word\n if (isAlphaNum(lastChar)) { can_open = false; }\n if (isAlphaNum(nextChar)) { can_close = false; }\n }\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n delims: count\n };\n}\n\nmodule.exports = function emphasis(state, silent) {\n var startCount,\n count,\n found,\n oldCount,\n newCount,\n stack,\n res,\n max = state.posMax,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n\n res = scanDelims(state, start);\n startCount = res.delims;\n if (!res.can_open) {\n state.pos += startCount;\n if (!silent) { state.pending += state.src.slice(start, state.pos); }\n return true;\n }\n\n if (state.level >= state.options.maxNesting) { return false; }\n\n state.pos = start + startCount;\n stack = [ startCount ];\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === marker) {\n res = scanDelims(state, state.pos);\n count = res.delims;\n if (res.can_close) {\n oldCount = stack.pop();\n newCount = count;\n\n while (oldCount !== newCount) {\n if (newCount < oldCount) {\n stack.push(oldCount - newCount);\n break;\n }\n\n // assert(newCount > oldCount)\n newCount -= oldCount;\n\n if (stack.length === 0) { break; }\n state.pos += oldCount;\n oldCount = stack.pop();\n }\n\n if (stack.length === 0) {\n startCount = oldCount;\n found = true;\n break;\n }\n state.pos += count;\n continue;\n }\n\n if (res.can_open) { stack.push(count); }\n state.pos += count;\n continue;\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found) {\n // parser failed to find ending tag, so it's not valid emphasis\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + startCount;\n\n if (!silent) {\n if (startCount === 2 || startCount === 3) {\n state.push({ type: 'strong_open', level: state.level++ });\n }\n if (startCount === 1 || startCount === 3) {\n state.push({ type: 'em_open', level: state.level++ });\n }\n\n state.parser.tokenize(state);\n\n if (startCount === 1 || startCount === 3) {\n state.push({ type: 'em_close', level: --state.level });\n }\n if (startCount === 2 || startCount === 3) {\n state.push({ type: 'strong_close', level: --state.level });\n }\n }\n\n state.pos = state.posMax + startCount;\n state.posMax = max;\n return true;\n};\n","// Process ~subscript~\n\n'use strict';\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nmodule.exports = function sub(state, silent) {\n var found,\n content,\n max = state.posMax,\n start = state.pos;\n\n if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 2 >= max) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n state.pos = start + 1;\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {\n found = true;\n break;\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found || start + 1 === state.pos) {\n state.pos = start;\n return false;\n }\n\n content = state.src.slice(start + 1, state.pos);\n\n // don't allow unescaped spaces/newlines inside\n if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 1;\n\n if (!silent) {\n state.push({\n type: 'sub',\n level: state.level,\n content: content.replace(UNESCAPE_RE, '$1')\n });\n }\n\n state.pos = state.posMax + 1;\n state.posMax = max;\n return true;\n};\n","// Process ^superscript^\n\n'use strict';\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nmodule.exports = function sup(state, silent) {\n var found,\n content,\n max = state.posMax,\n start = state.pos;\n\n if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 2 >= max) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n state.pos = start + 1;\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) {\n found = true;\n break;\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found || start + 1 === state.pos) {\n state.pos = start;\n return false;\n }\n\n content = state.src.slice(start + 1, state.pos);\n\n // don't allow unescaped spaces/newlines inside\n if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 1;\n\n if (!silent) {\n state.push({\n type: 'sup',\n level: state.level,\n content: content.replace(UNESCAPE_RE, '$1')\n });\n }\n\n state.pos = state.posMax + 1;\n state.posMax = max;\n return true;\n};\n","// Process [links]( \"stuff\")\n\n'use strict';\n\nvar parseLinkLabel = require('../helpers/parse_link_label');\nvar parseLinkDestination = require('../helpers/parse_link_destination');\nvar parseLinkTitle = require('../helpers/parse_link_title');\nvar normalizeReference = require('../helpers/normalize_reference');\n\n\nmodule.exports = function links(state, silent) {\n var labelStart,\n labelEnd,\n label,\n href,\n title,\n pos,\n ref,\n code,\n isImage = false,\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (marker === 0x21/* ! */) {\n isImage = true;\n marker = state.src.charCodeAt(++start);\n }\n\n if (marker !== 0x5B/* [ */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n labelStart = start + 1;\n labelEnd = parseLinkLabel(state, start);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (code !== 0x20 && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n if (parseLinkDestination(state, pos)) {\n href = state.linkContent;\n pos = state.pos;\n } else {\n href = '';\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (code !== 0x20 && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n if (pos < max && start !== pos && parseLinkTitle(state, pos)) {\n title = state.linkContent;\n pos = state.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (code !== 0x20 && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos;\n return false;\n }\n pos++;\n } else {\n //\n // Link reference\n //\n\n // do not allow nested reference links\n if (state.linkLevel > 0) { return false; }\n\n // [foo] [bar]\n // ^^ optional whitespace (can include newlines)\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (code !== 0x20 && code !== 0x0A) { break; }\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = start - 1;\n }\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) {\n if (typeof label === 'undefined') {\n pos = labelEnd + 1;\n }\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n if (isImage) {\n state.push({\n type: 'image',\n src: href,\n title: title,\n alt: state.src.substr(labelStart, labelEnd - labelStart),\n level: state.level\n });\n } else {\n state.push({\n type: 'link_open',\n href: href,\n title: title,\n level: state.level++\n });\n state.linkLevel++;\n state.parser.tokenize(state);\n state.linkLevel--;\n state.push({ type: 'link_close', level: --state.level });\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process inline footnotes (^[...])\n\n'use strict';\n\nvar parseLinkLabel = require('../helpers/parse_link_label');\n\n\nmodule.exports = function footnote_inline(state, silent) {\n var labelStart,\n labelEnd,\n footnoteId,\n oldLength,\n max = state.posMax,\n start = state.pos;\n\n if (start + 2 >= max) { return false; }\n if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n labelStart = start + 2;\n labelEnd = parseLinkLabel(state, start + 1);\n\n // parser failed to find ']', so it's not a valid note\n if (labelEnd < 0) { return false; }\n\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n if (!state.env.footnotes) { state.env.footnotes = {}; }\n if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n footnoteId = state.env.footnotes.list.length;\n\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n state.push({\n type: 'footnote_ref',\n id: footnoteId,\n level: state.level\n });\n state.linkLevel++;\n oldLength = state.tokens.length;\n state.parser.tokenize(state);\n state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) };\n state.linkLevel--;\n }\n\n state.pos = labelEnd + 1;\n state.posMax = max;\n return true;\n};\n","// Process footnote references ([^...])\n\n'use strict';\n\n\nmodule.exports = function footnote_ref(state, silent) {\n var label,\n pos,\n footnoteId,\n footnoteSubId,\n max = state.posMax,\n start = state.pos;\n\n // should be at least 4 chars - \"[^x]\"\n if (start + 3 > max) { return false; }\n\n if (!state.env.footnotes || !state.env.footnotes.refs) { return false; }\n if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n if (state.level >= state.options.maxNesting) { return false; }\n\n for (pos = start + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x20) { return false; }\n if (state.src.charCodeAt(pos) === 0x0A) { return false; }\n if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n break;\n }\n }\n\n if (pos === start + 2) { return false; } // no empty footnote labels\n if (pos >= max) { return false; }\n pos++;\n\n label = state.src.slice(start + 2, pos - 1);\n if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; }\n\n if (!silent) {\n if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n\n if (state.env.footnotes.refs[':' + label] < 0) {\n footnoteId = state.env.footnotes.list.length;\n state.env.footnotes.list[footnoteId] = { label: label, count: 0 };\n state.env.footnotes.refs[':' + label] = footnoteId;\n } else {\n footnoteId = state.env.footnotes.refs[':' + label];\n }\n\n footnoteSubId = state.env.footnotes.list[footnoteId].count;\n state.env.footnotes.list[footnoteId].count++;\n\n state.push({\n type: 'footnote_ref',\n id: footnoteId,\n subId: footnoteSubId,\n level: state.level\n });\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// List of valid url schemas, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#autolinks\n\n'use strict';\n\n\nmodule.exports = [\n 'coap',\n 'doi',\n 'javascript',\n 'aaa',\n 'aaas',\n 'about',\n 'acap',\n 'cap',\n 'cid',\n 'crid',\n 'data',\n 'dav',\n 'dict',\n 'dns',\n 'file',\n 'ftp',\n 'geo',\n 'go',\n 'gopher',\n 'h323',\n 'http',\n 'https',\n 'iax',\n 'icap',\n 'im',\n 'imap',\n 'info',\n 'ipp',\n 'iris',\n 'iris.beep',\n 'iris.xpc',\n 'iris.xpcs',\n 'iris.lwz',\n 'ldap',\n 'mailto',\n 'mid',\n 'msrp',\n 'msrps',\n 'mtqp',\n 'mupdate',\n 'news',\n 'nfs',\n 'ni',\n 'nih',\n 'nntp',\n 'opaquelocktoken',\n 'pop',\n 'pres',\n 'rtsp',\n 'service',\n 'session',\n 'shttp',\n 'sieve',\n 'sip',\n 'sips',\n 'sms',\n 'snmp',\n 'soap.beep',\n 'soap.beeps',\n 'tag',\n 'tel',\n 'telnet',\n 'tftp',\n 'thismessage',\n 'tn3270',\n 'tip',\n 'tv',\n 'urn',\n 'vemmi',\n 'ws',\n 'wss',\n 'xcon',\n 'xcon-userid',\n 'xmlrpc.beep',\n 'xmlrpc.beeps',\n 'xmpp',\n 'z39.50r',\n 'z39.50s',\n 'adiumxtra',\n 'afp',\n 'afs',\n 'aim',\n 'apt',\n 'attachment',\n 'aw',\n 'beshare',\n 'bitcoin',\n 'bolo',\n 'callto',\n 'chrome',\n 'chrome-extension',\n 'com-eventbrite-attendee',\n 'content',\n 'cvs',\n 'dlna-playsingle',\n 'dlna-playcontainer',\n 'dtn',\n 'dvb',\n 'ed2k',\n 'facetime',\n 'feed',\n 'finger',\n 'fish',\n 'gg',\n 'git',\n 'gizmoproject',\n 'gtalk',\n 'hcp',\n 'icon',\n 'ipn',\n 'irc',\n 'irc6',\n 'ircs',\n 'itms',\n 'jar',\n 'jms',\n 'keyparc',\n 'lastfm',\n 'ldaps',\n 'magnet',\n 'maps',\n 'market',\n 'message',\n 'mms',\n 'ms-help',\n 'msnim',\n 'mumble',\n 'mvn',\n 'notes',\n 'oid',\n 'palm',\n 'paparazzi',\n 'platform',\n 'proxy',\n 'psyc',\n 'query',\n 'res',\n 'resource',\n 'rmi',\n 'rsync',\n 'rtmp',\n 'secondlife',\n 'sftp',\n 'sgn',\n 'skype',\n 'smb',\n 'soldat',\n 'spotify',\n 'ssh',\n 'steam',\n 'svn',\n 'teamspeak',\n 'things',\n 'udp',\n 'unreal',\n 'ut2004',\n 'ventrilo',\n 'view-source',\n 'webcal',\n 'wtai',\n 'wyciwyg',\n 'xfire',\n 'xri',\n 'ymsgr'\n];\n","// Process autolinks ''\n\n'use strict';\n\nvar url_schemas = require('../common/url_schemas');\nvar normalizeLink = require('../helpers/normalize_link');\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar AUTOLINK_RE = /^<([a-zA-Z.\\-]{1,25}):([^<>\\x00-\\x20]*)>/;\n\n\nmodule.exports = function autolink(state, silent) {\n var tail, linkMatch, emailMatch, url, fullUrl, pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n tail = state.src.slice(pos);\n\n if (tail.indexOf('>') < 0) { return false; }\n\n linkMatch = tail.match(AUTOLINK_RE);\n\n if (linkMatch) {\n if (url_schemas.indexOf(linkMatch[1].toLowerCase()) < 0) { return false; }\n\n url = linkMatch[0].slice(1, -1);\n fullUrl = normalizeLink(url);\n if (!state.parser.validateLink(url)) { return false; }\n\n if (!silent) {\n state.push({\n type: 'link_open',\n href: fullUrl,\n level: state.level\n });\n state.push({\n type: 'text',\n content: url,\n level: state.level + 1\n });\n state.push({ type: 'link_close', level: state.level });\n }\n\n state.pos += linkMatch[0].length;\n return true;\n }\n\n emailMatch = tail.match(EMAIL_RE);\n\n if (emailMatch) {\n\n url = emailMatch[0].slice(1, -1);\n\n fullUrl = normalizeLink('mailto:' + url);\n if (!state.parser.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n state.push({\n type: 'link_open',\n href: fullUrl,\n level: state.level\n });\n state.push({\n type: 'text',\n content: url,\n level: state.level + 1\n });\n state.push({ type: 'link_close', level: state.level });\n }\n\n state.pos += emailMatch[0].length;\n return true;\n }\n\n return false;\n};\n","// Regexps to match html elements\n\n'use strict';\n\n\nfunction replace(regex, options) {\n regex = regex.source;\n options = options || '';\n\n return function self(name, val) {\n if (!name) {\n return new RegExp(regex, options);\n }\n val = val.source || val;\n regex = regex.replace(name, val);\n return self;\n };\n}\n\n\nvar attr_name = /[a-zA-Z_:][a-zA-Z0-9:._-]*/;\n\nvar unquoted = /[^\"'=<>`\\x00-\\x20]+/;\nvar single_quoted = /'[^']*'/;\nvar double_quoted = /\"[^\"]*\"/;\n\n/*eslint no-spaced-func:0*/\nvar attr_value = replace(/(?:unquoted|single_quoted|double_quoted)/)\n ('unquoted', unquoted)\n ('single_quoted', single_quoted)\n ('double_quoted', double_quoted)\n ();\n\nvar attribute = replace(/(?:\\s+attr_name(?:\\s*=\\s*attr_value)?)/)\n ('attr_name', attr_name)\n ('attr_value', attr_value)\n ();\n\nvar open_tag = replace(/<[A-Za-z][A-Za-z0-9]*attribute*\\s*\\/?>/)\n ('attribute', attribute)\n ();\n\nvar close_tag = /<\\/[A-Za-z][A-Za-z0-9]*\\s*>/;\nvar comment = //;\nvar processing = /<[?].*?[?]>/;\nvar declaration = /]*>/;\nvar cdata = /])*\\]\\]>/;\n\nvar HTML_TAG_RE = replace(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)\n ('open_tag', open_tag)\n ('close_tag', close_tag)\n ('comment', comment)\n ('processing', processing)\n ('declaration', declaration)\n ('cdata', cdata)\n ();\n\n\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\n","// Process html tags\n\n'use strict';\n\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nmodule.exports = function htmltag(state, silent) {\n var ch, match, max, pos = state.pos;\n\n if (!state.options.html) { return false; }\n\n // Check start\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false;\n }\n\n // Quick fail on second char\n ch = state.src.charCodeAt(pos + 1);\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n if (!match) { return false; }\n\n if (!silent) {\n state.push({\n type: 'htmltag',\n content: state.src.slice(pos, pos + match[0].length),\n level: state.level\n });\n }\n state.pos += match[0].length;\n return true;\n};\n","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) { state.pending += entities[match[1]]; }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) { state.pending += '&'; }\n state.pos++;\n return true;\n};\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar Ruler = require('./ruler');\nvar StateInline = require('./rules_inline/state_inline');\nvar utils = require('./common/utils');\n\n/**\n * Inline Parser `rules`\n */\n\nvar _rules = [\n [ 'text', require('./rules_inline/text') ],\n [ 'newline', require('./rules_inline/newline') ],\n [ 'escape', require('./rules_inline/escape') ],\n [ 'backticks', require('./rules_inline/backticks') ],\n [ 'del', require('./rules_inline/del') ],\n [ 'ins', require('./rules_inline/ins') ],\n [ 'mark', require('./rules_inline/mark') ],\n [ 'emphasis', require('./rules_inline/emphasis') ],\n [ 'sub', require('./rules_inline/sub') ],\n [ 'sup', require('./rules_inline/sup') ],\n [ 'links', require('./rules_inline/links') ],\n [ 'footnote_inline', require('./rules_inline/footnote_inline') ],\n [ 'footnote_ref', require('./rules_inline/footnote_ref') ],\n [ 'autolink', require('./rules_inline/autolink') ],\n [ 'htmltag', require('./rules_inline/htmltag') ],\n [ 'entity', require('./rules_inline/entity') ]\n];\n\n/**\n * Inline Parser class. Note that link validation is stricter\n * in Remarkable than what is specified by CommonMark. If you\n * want to change this you can use a custom validator.\n *\n * @api private\n */\n\nfunction ParserInline() {\n this.ruler = new Ruler();\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n\n // Can be overridden with a custom validator\n this.validateLink = validateLink;\n}\n\n/**\n * Skip a single token by running all rules in validation mode.\n * Returns `true` if any rule reports success.\n *\n * @param {Object} `state`\n * @api privage\n */\n\nParserInline.prototype.skipToken = function (state) {\n var rules = this.ruler.getRules('');\n var len = rules.length;\n var pos = state.pos;\n var i, cached_pos;\n\n if ((cached_pos = state.cacheGet(pos)) > 0) {\n state.pos = cached_pos;\n return;\n }\n\n for (i = 0; i < len; i++) {\n if (rules[i](state, true)) {\n state.cacheSet(pos, state.pos);\n return;\n }\n }\n\n state.pos++;\n state.cacheSet(pos, state.pos);\n};\n\n/**\n * Generate tokens for the given input range.\n *\n * @param {Object} `state`\n * @api private\n */\n\nParserInline.prototype.tokenize = function (state) {\n var rules = this.ruler.getRules('');\n var len = rules.length;\n var end = state.posMax;\n var ok, i;\n\n while (state.pos < end) {\n\n // Try all possible rules.\n // On success, the rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n\n if (ok) {\n break;\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break; }\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n\n/**\n * Parse the given input string.\n *\n * @param {String} `str`\n * @param {Object} `options`\n * @param {Object} `env`\n * @param {Array} `outTokens`\n * @api private\n */\n\nParserInline.prototype.parse = function (str, options, env, outTokens) {\n var state = new StateInline(str, this, options, env, outTokens);\n this.tokenize(state);\n};\n\n/**\n * Validate the given `url` by checking for bad protocols.\n *\n * @param {String} `url`\n * @return {Boolean}\n */\n\nfunction validateLink(url) {\n var BAD_PROTOCOLS = [ 'vbscript', 'javascript', 'file', 'data' ];\n var str = url.trim().toLowerCase();\n // Care about digital entities \"javascript:alert(1)\"\n str = utils.replaceEntities(str);\n if (str.indexOf(':') !== -1 && BAD_PROTOCOLS.indexOf(str.split(':')[0]) !== -1) {\n return false;\n }\n return true;\n}\n\n/**\n * Expose `ParserInline`\n */\n\nmodule.exports = ParserInline;\n","// Remarkable default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: false, // Enable HTML tags in source\n xhtmlOut: false, // Use '/' to close single tags (
    )\n breaks: false, // Convert '\\n' in paragraphs into
    \n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n linkTarget: '', // set target to open link in\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.\n quotes: '“”‘’',\n\n // Highlighter function. Should return escaped HTML,\n // or '' if input not changed\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n\n maxNesting: 20 // Internal protection, recursion limit\n },\n\n components: {\n\n core: {\n rules: [\n 'block',\n 'inline',\n 'references',\n 'replacements',\n 'linkify',\n 'smartquotes',\n 'references',\n 'abbr2',\n 'footnote_tail'\n ]\n },\n\n block: {\n rules: [\n 'blockquote',\n 'code',\n 'fences',\n 'footnote',\n 'heading',\n 'hr',\n 'htmlblock',\n 'lheading',\n 'list',\n 'paragraph',\n 'table'\n ]\n },\n\n inline: {\n rules: [\n 'autolink',\n 'backticks',\n 'del',\n 'emphasis',\n 'entity',\n 'escape',\n 'footnote_ref',\n 'htmltag',\n 'links',\n 'newline',\n 'text'\n ]\n }\n }\n};\n","// Remarkable default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: false, // Enable HTML tags in source\n xhtmlOut: false, // Use '/' to close single tags (
    )\n breaks: false, // Convert '\\n' in paragraphs into
    \n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n linkTarget: '', // set target to open link in\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.\n quotes: '“”‘’',\n\n // Highlighter function. Should return escaped HTML,\n // or '' if input not changed\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n\n maxNesting: 20 // Internal protection, recursion limit\n },\n\n components: {\n // Don't restrict core/block/inline rules\n core: {},\n block: {},\n inline: {}\n }\n};\n","// Commonmark default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: true, // Enable HTML tags in source\n xhtmlOut: true, // Use '/' to close single tags (
    )\n breaks: false, // Convert '\\n' in paragraphs into
    \n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n linkTarget: '', // set target to open link in\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.\n quotes: '“”‘’',\n\n // Highlighter function. Should return escaped HTML,\n // or '' if input not changed\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n\n maxNesting: 20 // Internal protection, recursion limit\n },\n\n components: {\n\n core: {\n rules: [\n 'block',\n 'inline',\n 'references',\n 'abbr2'\n ]\n },\n\n block: {\n rules: [\n 'blockquote',\n 'code',\n 'fences',\n 'heading',\n 'hr',\n 'htmlblock',\n 'lheading',\n 'list',\n 'paragraph'\n ]\n },\n\n inline: {\n rules: [\n 'autolink',\n 'backticks',\n 'emphasis',\n 'entity',\n 'escape',\n 'htmltag',\n 'links',\n 'newline',\n 'text'\n ]\n }\n }\n};\n","'use strict';\n\n/**\n * Local dependencies\n */\n\nvar assign = require('./common/utils').assign;\nvar Renderer = require('./renderer');\nvar ParserCore = require('./parser_core');\nvar ParserBlock = require('./parser_block');\nvar ParserInline = require('./parser_inline');\nvar Ruler = require('./ruler');\n\n/**\n * Preset configs\n */\n\nvar config = {\n 'default': require('./configs/default'),\n 'full': require('./configs/full'),\n 'commonmark': require('./configs/commonmark')\n};\n\n/**\n * The `StateCore` class manages state.\n *\n * @param {Object} `instance` Remarkable instance\n * @param {String} `str` Markdown string\n * @param {Object} `env`\n */\n\nfunction StateCore(instance, str, env) {\n this.src = str;\n this.env = env;\n this.options = instance.options;\n this.tokens = [];\n this.inlineMode = false;\n\n this.inline = instance.inline;\n this.block = instance.block;\n this.renderer = instance.renderer;\n this.typographer = instance.typographer;\n}\n\n/**\n * The main `Remarkable` class. Create an instance of\n * `Remarkable` with a `preset` and/or `options`.\n *\n * @param {String} `preset` If no preset is given, `default` is used.\n * @param {Object} `options`\n */\n\nfunction Remarkable(preset, options) {\n if (typeof preset !== 'string') {\n options = preset;\n preset = 'default';\n }\n\n this.inline = new ParserInline();\n this.block = new ParserBlock();\n this.core = new ParserCore();\n this.renderer = new Renderer();\n this.ruler = new Ruler();\n\n this.options = {};\n this.configure(config[preset]);\n this.set(options || {});\n}\n\n/**\n * Set options as an alternative to passing them\n * to the constructor.\n *\n * ```js\n * md.set({typographer: true});\n * ```\n * @param {Object} `options`\n * @api public\n */\n\nRemarkable.prototype.set = function (options) {\n assign(this.options, options);\n};\n\n/**\n * Batch loader for components rules states, and options\n *\n * @param {Object} `presets`\n */\n\nRemarkable.prototype.configure = function (presets) {\n var self = this;\n\n if (!presets) { throw new Error('Wrong `remarkable` preset, check name/content'); }\n if (presets.options) { self.set(presets.options); }\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enable(presets.components[name].rules, true);\n }\n });\n }\n};\n\n/**\n * Use a plugin.\n *\n * ```js\n * var md = new Remarkable();\n *\n * md.use(plugin1)\n * .use(plugin2, opts)\n * .use(plugin3);\n * ```\n *\n * @param {Function} `plugin`\n * @param {Object} `options`\n * @return {Object} `Remarkable` for chaining\n */\n\nRemarkable.prototype.use = function (plugin, options) {\n plugin(this, options);\n return this;\n};\n\n\n/**\n * Parse the input `string` and return a tokens array.\n * Modifies `env` with definitions data.\n *\n * @param {String} `string`\n * @param {Object} `env`\n * @return {Array} Array of tokens\n */\n\nRemarkable.prototype.parse = function (str, env) {\n var state = new StateCore(this, str, env);\n this.core.process(state);\n return state.tokens;\n};\n\n/**\n * The main `.render()` method that does all the magic :)\n *\n * @param {String} `string`\n * @param {Object} `env`\n * @return {String} Rendered HTML.\n */\n\nRemarkable.prototype.render = function (str, env) {\n env = env || {};\n return this.renderer.render(this.parse(str, env), this.options, env);\n};\n\n/**\n * Parse the given content `string` as a single string.\n *\n * @param {String} `string`\n * @param {Object} `env`\n * @return {Array} Array of tokens\n */\n\nRemarkable.prototype.parseInline = function (str, env) {\n var state = new StateCore(this, str, env);\n state.inlineMode = true;\n this.core.process(state);\n return state.tokens;\n};\n\n/**\n * Render a single content `string`, without wrapping it\n * to paragraphs\n *\n * @param {String} `str`\n * @param {Object} `env`\n * @return {String}\n */\n\nRemarkable.prototype.renderInline = function (str, env) {\n env = env || {};\n return this.renderer.render(this.parseInline(str, env), this.options, env);\n};\n\n/**\n * Expose `Remarkable`\n */\n\nmodule.exports = Remarkable;\n\n/**\n * Expose `utils`, Useful helper functions for custom\n * rendering.\n */\n\nmodule.exports.utils = require('./common/utils');\n","'use strict';\n\nmodule.exports = require('./lib/');\n","import React from 'react'\nimport Remarkable from 'remarkable'\n\nexport default class MarkdownEditor extends React.Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.state = { value: 'Hello, **world**!' };\n }\n\n handleChange(e) {\n this.setState({ value: e.target.value });\n }\n\n getRawMarkup() {\n const md = new Remarkable();\n return { __html: md.render(this.state.value) };\n }\n\n render() {\n return (\n
    \n

    Input

    \n
    \n \n

    Output

    \n \n
    \n );\n }\n}\n","import { define, render, WeElement } from '../../src/omi'\n\nimport MarkdownEditor from './markdown-edit'\n\ndefine('my-app', class extends WeElement {\n\n\n render(props, data) {\n return (\n
    \n \n
    \n )\n }\n})\n\nrender(\n ,\n document.body\n);"],"names":["getGlobal","global","Math","Array","self","window","store","root","mapping","Reflect","undefined","customElements","hasOwnProperty","BuiltInHTMLElement","HTMLElement","construct","constructor","prototype","Object","setPrototypeOf","cssToDom","css","node","document","createElement","textContent","npn","str","replace","$","$1","toUpperCase","applyRef","ref","value","current","defer","Promise","resolve","then","bind","setTimeout","isArray","obj","toString","call","nProps","props","result","keys","forEach","key","getUse","data","paths","path","index","isPath","getTargetByPath","tempPath","tempVal","args","push","apply","origin","arr","split","i","len","length","ATTR_KEY","IS_NON_DIMENSIONAL","isSameNodeType","vnode","hydrating","splitText","type","_componentConstructor","isNamedNode","options","nodeName","toLowerCase","normalizedNodeName","createNode","isSvg","createElementNS","removeNode","parentNode","removeChild","setAccessor","name","old","className","style","cssText","test","innerHTML","__html","useCapture","substring","addEventListener","eventProxy","touchStart","touchEnd","removeEventListener","_listeners","e","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","event","___touchX","touches","pageX","___touchY","pageY","___scrollTop","body","scrollTop","abs","changedTouches","dispatchEvent","CustomEvent","detail","k","require$$0","ba","x","aa","ca","da","ea","fa","y","n","z","C","D","E","r","F","G","H","I","J","K","L","M","N","O","P","Q","S","T","U","V","W","X","Y","Z","diffLevel","isSvgMode","diff","dom","context","mountAll","parent","componentRoot","ret","ownerSVGElement","domLength","vnodeLength","maxLength","ele","idiff","appendChild","item","children","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","isReact","div","cpt","ReactDom","render","firstChild","_reactComponent","String","fc","vchildren","a","attributes","nextSibling","is","noSlot","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","originalChildren","childNodes","keyed","keyedLen","min","childrenLen","vlen","j","c","f","vchild","child","__key","trim","diffIt","cl","morphdom","insertBefore","unmountOnly","removeChildren","lastChild","next","previousSibling","attrs","update","isWeElement","oldClone","receiveProps","assign","JSON","parse","stringify","console","warn","JSONPatcherProxy","deepClone","escapePathComponent","indexOf","findObjectPath","instance","pathComponents","parentAndPath","parenthoodMap","get","unshift","join","setTrap","target","newValue","parentPath","destinationPropKey","proxifiedObjectsMap","has","newValueOriginalObject","set","originalObject","revokableInstance","isProxifyingTreeNow","inherited","_proxifyObjectTreeRecursively","operation","op","oldValue","delete","disableTrapsForProxy","Number","isInteger","reflectionResult","defaultCallback","deleteTrap","revokableProxyInstance","deleteProperty","resume","isRecording","patches","userCallback","isObserving","pause","showDetachedWarning","Map","cachedProxy","generateProxyAtPath","traps","receiver","revocableInstance","Proxy","revocable","trapsInstance","proxy","proxifyObjectTree","proxifiedObject","message","targetObject","propKey","observe","record","callback","Error","generate","splice","revoke","el","disableTraps","callbacks","nextTickCallback","tick","fn","scope","fireTick","nextItem","nextTick","proxyUpdate","timeout","JSONProxy","_willUpdate","mergeUpdate","clearTimeout","OBJECTTYPE","ARRAYTYPE","define","ctor","use","updatePath","getPath","getUpdatePath","Element","_useId","_useMap","_preCss","beforeRender","useCss","shadowRoot","querySelector","useData","option","updater","id","effect","_isInstalled","installed","WeElement","dataToPath","_objToPath","_arrayToPath","reactEvents","divergentNativeEvents","onDoubleClick","mimickedReactEvents","onInput","onFocusOut","onSelectionChange","retargetEvents","reactEventName","nativeEventName","getNativeEventName","composedPath","reactComponent","findReactComponent","findReactProps","cancelBubble","component","memoizedProps","_currentElement","eventType","componentProps","tagName","parentElement","defaultProps","elementId","connectedCallback","p","host","instances","initUse","_updatePath","beforeInstall","install","afterInstall","attachShadow","mode","beforeObserve","observed","_host","rendered","disconnectedCallback","uninstall","beforeUpdate","updated","fire","extendStoreUpate","patch","patchs","kv","getArrayPatch","v","fixPath","updateAll","matchGlobalData","globalData","needUpdate","onChange","diffResult","keyA","includePath","keyB","pathA","pathB","substr","mpPath","isNaN","fixArrPath","tag","pure","getHost","rpx","b","innerWidth","ModelView","vm","hasOwn","classNames","classes","arguments","arg","argType","inner","extractClass","slice","class","t","u","html","htm","h","React","cloneElement","createRef","Component","defineElement","omi","Omi","version","unescapeMd","replaceEntities","escapeHtml","rules","StateInline","parseLinkLabel","normalizeLink","parseLinkDestination","parseLinkTitle","normalizeReference","this","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","Ruler","isLetter","block_names","markTightParagraphs","_rules","require$$9","require$$10","require$$11","StateBlock","UNESCAPE_RE","HTML_TAG_RE","isValidEntityCode","fromCodePoint","require$$12","require$$13","require$$14","require$$15","ParserInline","ParserBlock","ParserCore","Renderer","MarkdownEditor","handleChange","state","setState","getRawMarkup","md","Remarkable"],"mappings":"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GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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"} \ No newline at end of file diff --git a/packages/omire/examples/markdown/index.html b/packages/omire/examples/markdown/index.html new file mode 100644 index 000000000..46bbb4d59 --- /dev/null +++ b/packages/omire/examples/markdown/index.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/omire/examples/markdown/main.js b/packages/omire/examples/markdown/main.js new file mode 100644 index 000000000..09e0a031c --- /dev/null +++ b/packages/omire/examples/markdown/main.js @@ -0,0 +1,20 @@ +import { define, render, WeElement } from '../../src/omi' + +import MarkdownEditor from './markdown-edit' + +define('my-app', class extends WeElement { + + + render(props, data) { + return ( +
    + +
    + ) + } +}) + +render( + , + document.body +); \ No newline at end of file diff --git a/packages/omire/examples/markdown/markdown-edit.js b/packages/omire/examples/markdown/markdown-edit.js new file mode 100644 index 000000000..8e7182392 --- /dev/null +++ b/packages/omire/examples/markdown/markdown-edit.js @@ -0,0 +1,40 @@ +import React from 'react' +import Remarkable from 'remarkable' + +export default class MarkdownEditor extends React.Component { + constructor(props) { + super(props); + this.handleChange = this.handleChange.bind(this); + this.state = { value: 'Hello, **world**!' }; + } + + handleChange(e) { + this.setState({ value: e.target.value }); + } + + getRawMarkup() { + const md = new Remarkable(); + return { __html: md.render(this.state.value) }; + } + + render() { + return ( +
    +

    Input

    +
    +