1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-23 00:14:21 +00:00
triennale-appunti-steffo/docs/bundle.4cb97.js.map
2019-12-16 18:32:27 +01:00

1 line
No EOL
765 KiB
Text

{"version":3,"sources":["webpack:///bundle.4cb97.js","webpack:///webpack/bootstrap e1a478a1eee9c6f724e6","webpack:///./components/latex.css","webpack:///./components/split.css","webpack:///../node_modules/showdown/dist/showdown.js","webpack:///../C:/Users/stepi/AppData/Roaming/npm/node_modules/preact-cli/lib/lib/entry.js","webpack:///../node_modules/preact-router/dist/preact-router.es.js","webpack:///./components/panel.js","webpack:///./components/split.js","webpack:///./components/todo.js","webpack:///./pages/home.js","webpack:///./components/latex.js","webpack:///./components/plus.js","webpack:///./components/minus.js","webpack:///./pages/fisica.js","webpack:///./components/markdown.js","webpack:///./pages/vldigeometria.js","webpack:///./pages/mingwinstall.js","webpack:///./components/copyright.js","webpack:///./index.js","webpack:///../node_modules/preact/dist/preact.min.js","webpack:///./components/markdown.css","webpack:///./components/minus.css","webpack:///./components/panel.css","webpack:///./manifest.json","webpack:///./components/plus.css","webpack:///./components/copyright.css","webpack:///./components/todo.css"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","+uq9","0lnO","1EpE","36Ou","5m9J","6adR","getDefaultOpts","simple","defaultOptions","omitExtraWLInCodeBlocks","defaultValue","describe","type","noHeaderId","prefixHeaderId","rawPrefixHeaderId","ghCompatibleHeaderId","rawHeaderId","headerLevelStart","parseImgDimensions","simplifiedAutoLink","excludeTrailingPunctuationFromURLs","literalMidWordUnderscores","literalMidWordAsterisks","strikethrough","tables","tablesHeaderId","ghCodeBlocks","tasklists","smoothLivePreview","smartIndentationFix","description","disableForced4SpacesIndentedSublists","simpleLineBreaks","requireSpaceBeforeHeadingText","ghMentions","ghMentionsLink","encodeEmails","openLinksInNewWindow","backslashEscapesHTMLTags","emoji","underline","completeHTMLDocument","metadata","splitAdjacentBlockquotes","JSON","parse","stringify","ret","opt","validate","extension","errMsg","valid","error","showdown","helper","isArray","length","baseMsg","ext","isString","toLowerCase","isUndefined","listeners","filter","regex","ln","RegExp","replace","escapeCharactersCallback","wholeMatch","m1","charCodeAt","parsers","extensions","globalOptions","setFlavor","flavor","github","original","ghost","vanilla","allOn","options","setOption","key","value","this","getOption","getOptions","resetOptions","Error","preset","option","getFlavor","getFlavorOptions","getDefaultOptions","subParser","func","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","console","warn","a","String","isFunction","getType","toString","Array","forEach","obj","callback","prop","escapeCharacters","text","charsToEscape","afterBackslash","regexString","unescapeHTMLEntities","txt","rgxFindMatchPos","str","left","right","flags","t","start","end","f","g","indexOf","x","pos","exec","test","lastIndex","index","match","push","matchRecursiveRegExp","matchPos","results","slice","replaceRecursiveRegExp","replacement","repStr","finalStr","lng","bits","join","regexIndexOf","fromIndex","substring","search","splitAtIndex","encodeEmailAddress","mail","encode","ch","Math","floor","random","r","padEnd","targetLength","padString","repeat","msg","alert","log","regexes","asteriskDashAndColon","emojis","Converter","converterOptions","_parseExtension","legacyExtensionLoading","validExt","langExtensions","outputModifiers","listen","rTrimInputText","rsp","setConvFlavor","parsed","raw","format","gOpt","_dispatch","evtName","globals","ei","nText","makeHtml","gHtmlBlocks","gHtmlMdBlocks","gHtmlSpans","gUrls","gTitles","gDimensions","gListLevel","hashLinkCounts","converter","makeMarkdown","makeMd","src","HTMLParser","clean","node","childNodes","child","nodeType","nodeValue","split","removeChild","window","document","doc","createElement","innerHTML","preList","pres","querySelectorAll","presPH","childElementCount","firstChild","tagName","content","trim","language","getAttribute","classes","className","matches","outerHTML","setAttribute","nodes","mdDoc","addExtension","useExtension","extensionName","splice","output","getMetadata","getMetadataFormat","_setMetadataPair","_setMetadataFormat","_setMetadataRaw","writeAnchorTag","linkText","linkId","url","m5","m6","title","result","wm","st","escape","mentions","username","lnk","target","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","link","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","b","href","rgx","bq","pre","codeblock","nextChar","doctype","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiCode","tags","comments","delim","blockText","blockTags","repFunc","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","concat","hashHTMLSpan","html","repText","limit","num","$1","headerId","prefix","customizedHeaderId","isNaN","parseInt","setextRegexH1","setextRegexH2","spanGamut","hID","hLevel","hashBlock","matchFound","hText","span","header","writeImageTagBase64","altText","width","height","writeImageTag","gDims","inlineRegExp","crazyRegExp","base64RegExp","referenceRegExp","refShortcutRegExp","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","$2","re","base64Regex","replaceFunc","blankLines","parseStyles","sLine","parseHeaders","id","tableHeaderId","parseCells","cell","buildTable","headers","cells","tb","tblLgn","ii","parseTable","rawTable","tableLines","rawHeaders","map","rawStyles","rawCells","styles","shift","row","tableRgx","singeColTblRgx","charCodeToReplace","fromCharCode","hasChildNodes","children","childrenLength","innerTxt","headerLevel","headerMark","hasAttribute","listItems","listItemsLenght","listNum","bullet","listItemTxt","childrenLenght","spansOnly","data","tableArray","headings","rows","headContent","allign","cols","getElementsByTagName","cellContent","cellSpacesCount","strLen","define","99bU","_preact","require","navigator","location","protocol","serviceWorker","register","__webpack_public_path__","interopDefault","default","root","body","firstElementChild","init","app","render","h","JkW7","__webpack_exports__","assign","props","route","opts","reg","decodeURIComponent","segmentize","max","i$1","charAt","param","EMPTY$1","plus","star","val","pathRankSort","rank","prepareVNodeForRanking","vnode","rankChild","attributes","rankSegment","segment","path","isPreactElement","__preactattr_","Symbol","for","setUrl","customHistory","history","getCurrentUrl","getCurrentLocation","EMPTY","pathname","canRoute","routeTo","ROUTERS","didRoute","subscribers","routeFromLink","handleLinkClick","e","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","ctrlKey","metaKey","altKey","shiftKey","nodeName","toUpperCase","parentNode","initEventListeners","eventListenersInitialized","addEventListener","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","TypeError","create","constructor","writable","setPrototypeOf","__proto__","split__classCallCheck","instance","Constructor","split__possibleConstructorReturn","split__inherits","todo__classCallCheck","todo__possibleConstructorReturn","todo__inherits","home__classCallCheck","home__possibleConstructorReturn","home__inherits","latex__classCallCheck","latex__possibleConstructorReturn","latex__inherits","plus__classCallCheck","plus__possibleConstructorReturn","plus__inherits","minus__classCallCheck","minus__possibleConstructorReturn","minus__inherits","_taggedTemplateLiteralLoose","strings","fisica__classCallCheck","fisica__possibleConstructorReturn","fisica__inherits","markdown__classCallCheck","markdown__possibleConstructorReturn","markdown__inherits","vldigeometria__classCallCheck","vldigeometria__possibleConstructorReturn","vldigeometria__inherits","mingwinstall__classCallCheck","mingwinstall__possibleConstructorReturn","mingwinstall__inherits","copyright__classCallCheck","copyright__possibleConstructorReturn","copyright__inherits","index__classCallCheck","index__possibleConstructorReturn","index__inherits","preact_min","Router","Component$$1","state","shouldComponentUpdate","static","onChange","getMatchingChildren","_didRoute","setState","updating","forceUpdate","componentWillMount","componentDidMount","this$1","unlisten","componentWillUnmount","componentWillUpdate","componentDidUpdate","invoke","sort","newProps","ref","cloneElement","Boolean","ref$1","active","current","previous","previousUrl","router","Component","Link","onClick","Route","component","home","home_default","panel","panel_default","Panel","_Component","apply","arguments","undefined","class","split_default","Split","element","splitchild","splitparent","todo","todo_default","Todo","_ref","_ref2","_ref3","Home","fisica","fisica_default","latex","latex_default","Latex","equation","alt","plus_default","Plus","minus","minus_default","Minus","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","_templateObject18","_templateObject19","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","_templateObject33","_templateObject34","_templateObject35","_templateObject36","_templateObject37","_templateObject38","_templateObject39","_templateObject40","_templateObject41","_templateObject42","_templateObject43","_templateObject44","_templateObject45","_templateObject46","_templateObject47","_templateObject48","_templateObject49","_templateObject50","_templateObject51","_templateObject52","_templateObject53","_templateObject54","_templateObject55","_templateObject56","_templateObject57","_templateObject58","_templateObject59","_templateObject60","_templateObject61","_templateObject62","_templateObject63","_templateObject64","_templateObject65","_templateObject66","_templateObject67","_templateObject68","_templateObject69","_templateObject70","_templateObject71","_templateObject72","_templateObject73","_templateObject74","_templateObject75","_templateObject76","_templateObject77","_templateObject78","_templateObject79","_templateObject80","_templateObject81","_templateObject82","_templateObject83","_templateObject84","_templateObject85","_templateObject86","_templateObject87","_templateObject88","_templateObject89","_templateObject90","_templateObject91","_templateObject92","_templateObject93","_templateObject94","_templateObject95","_templateObject96","_templateObject97","_templateObject98","_templateObject99","_templateObject100","_templateObject101","_templateObject102","_templateObject103","_templateObject104","_templateObject105","_templateObject106","_templateObject107","_templateObject108","_templateObject109","_templateObject110","_templateObject111","_templateObject112","_templateObject113","_templateObject114","_templateObject115","_templateObject116","_templateObject117","_templateObject118","_templateObject119","_templateObject120","_templateObject121","_templateObject122","_templateObject123","_templateObject124","_templateObject125","_templateObject126","fisica__ref","fisica__ref2","fisica__ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","_ref24","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","_ref39","_ref40","_ref41","_ref42","_ref43","_ref44","_ref45","_ref46","_ref47","_ref48","_ref49","_ref50","_ref51","_ref52","_ref53","_ref54","_ref55","_ref56","_ref57","_ref58","_ref59","_ref60","_ref61","_ref62","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_ref76","_ref77","_ref78","_ref79","_ref80","_ref81","_ref82","_ref83","_ref84","_ref85","_ref86","_ref87","_ref88","_ref89","_ref90","_ref91","_ref92","_ref93","_ref94","_ref95","_ref96","_ref97","_ref98","_ref99","_ref100","_ref101","_ref102","_ref103","_ref104","_ref105","_ref106","_ref107","_ref108","_ref109","_ref110","_ref111","_ref112","_ref113","_ref114","_ref115","_ref116","_ref117","_ref118","_ref119","_ref120","_ref121","_ref122","_ref123","_ref124","_ref125","_ref126","_ref127","_ref128","_ref129","_ref130","_ref131","_ref132","_ref133","_ref134","_ref135","_ref136","_ref137","_ref138","_ref139","_ref140","_ref141","_ref142","_ref143","_ref144","_ref145","_ref146","_ref147","_ref148","_ref149","_ref150","_ref151","_ref152","_ref153","_ref154","_ref155","_ref156","_ref157","_ref158","_ref159","_ref160","_ref161","_ref162","_ref163","_ref164","_ref165","_ref166","Fisica","vldigeometria","vldigeometria_default","markdown","markdown_default","showdown_default","Markdown","dangerouslySetInnerHTML","__html","vldigeometria__templateObject","vldigeometria__ref","VlDiGeometria","mingwinstall","mingwinstall_default","mingwinstall__ref","mingwinstall__ref2","MingwInstall","copyright","copyright_default","copyright__ref","copyright__ref2","Copyright","App","index__ref","KM04","W","P","pop","T","M","__d","V","debounceRendering","D","splitText","_componentConstructor","__n","u","defaultProps","createElementNS","cssText","E","_","removeEventListener","__l","removeAttribute","removeAttributeNS","setAttributeNS","event","A","afterMount","H","R","ownerSVGElement","B","appendChild","_component","createTextNode","replaceChild","v","N","nextSibling","y","w","C","k","__k","insertBefore","lastChild","previousSibling","F","U","__b","__x","__r","getDerivedStateFromProps","base","componentWillReceiveProps","context","__c","__p","syncComponentUpdates","__s","S","getChildContext","getSnapshotBeforeUpdate","L","__u","afterUpdate","__h","beforeUnmount","Promise","resolve","then","bind","setTimeout","j","createRef","rerender","MKE3","MeW5","P9k+","ZcXo","ddTt","jHTF","qMTX","tO1d","xHuH"],"mappings":"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","file":"bundle.4cb97.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"99bU\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"+uq9\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"latex\":\"latex__34DCT\"};\n\n/***/ }),\n\n/***/ \"0lnO\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ \"1EpE\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"split\":\"split__2Bl8C\",\"splitparent\":\"splitparent__nqY7W\",\"splitchild\":\"splitchild__3Ip86\"};\n\n/***/ }),\n\n/***/ \"36Ou\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ \"5m9J\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ \"6adR\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;; /*! showdown v 1.9.1 - 02-11-2019 */\n(function () {\n /**\n * Created by Tivie on 13-07-2015.\n */\n\n function getDefaultOpts(simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n description: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n description: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n description: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n description: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n description: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n description: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n description: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n description: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n }\n\n function allOptionsOn() {\n 'use strict';\n\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n }\n\n /**\n * Created by Tivie on 06-01-2015.\n */\n\n // Private properties\n var showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n /**\n * helper namespace\n * @type {{}}\n */\n showdown.helper = {};\n\n /**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\n showdown.extensions = {};\n\n /**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\n showdown.setOption = function (key, value) {\n 'use strict';\n\n globalOptions[key] = value;\n return this;\n };\n\n /**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\n showdown.getOption = function (key) {\n 'use strict';\n\n return globalOptions[key];\n };\n\n /**\n * Get the global options\n * @static\n * @returns {{}}\n */\n showdown.getOptions = function () {\n 'use strict';\n\n return globalOptions;\n };\n\n /**\n * Reset global options to the default values\n * @static\n */\n showdown.resetOptions = function () {\n 'use strict';\n\n globalOptions = getDefaultOpts(true);\n };\n\n /**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\n showdown.setFlavor = function (name) {\n 'use strict';\n\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor\n * @returns {string}\n */\n showdown.getFlavor = function () {\n 'use strict';\n\n return setFlavor;\n };\n\n /**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\n showdown.getFlavorOptions = function (name) {\n 'use strict';\n\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n };\n\n /**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\n showdown.getDefaultOptions = function (simple) {\n 'use strict';\n\n return getDefaultOpts(simple);\n };\n\n /**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\n showdown.subParser = function (name, func) {\n 'use strict';\n\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n };\n\n /**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\n showdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n };\n\n /**\n * Gets all extensions registered\n * @returns {{}}\n */\n showdown.getAllExtensions = function () {\n 'use strict';\n\n return extensions;\n };\n\n /**\n * Remove an extension\n * @param {string} name\n */\n showdown.removeExtension = function (name) {\n 'use strict';\n\n delete extensions[name];\n };\n\n /**\n * Removes all extensions\n */\n showdown.resetExtensions = function () {\n 'use strict';\n\n extensions = {};\n };\n\n /**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\n function validate(extension, name) {\n 'use strict';\n\n var errMsg = name ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln + ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n }\n\n /**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\n showdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n };\n\n /**\n * showdownjs helper functions\n */\n\n if (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n }\n\n /**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\n showdown.helper.isString = function (a) {\n 'use strict';\n\n return typeof a === 'string' || a instanceof String;\n };\n\n /**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\n showdown.helper.isFunction = function (a) {\n 'use strict';\n\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n };\n\n /**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\n showdown.helper.isArray = function (a) {\n 'use strict';\n\n return Array.isArray(a);\n };\n\n /**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\n showdown.helper.isUndefined = function (value) {\n 'use strict';\n\n return typeof value === 'undefined';\n };\n\n /**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\n showdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof obj === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n };\n\n /**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\n showdown.helper.stdExtName = function (s) {\n 'use strict';\n\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n };\n\n function escapeCharactersCallback(wholeMatch, m1) {\n 'use strict';\n\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n }\n\n /**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\n showdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n /**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\n showdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n };\n\n /**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\n showdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt.replace(/&quot;/g, '\"').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');\n };\n\n var rgxFindMatchPos = function rgxFindMatchPos(str, left, right, flags) {\n 'use strict';\n\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t,\n s,\n m,\n start,\n end;\n\n do {\n t = 0;\n while (m = x.exec(str)) {\n if (l.test(m[0])) {\n if (!t++) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (! --t) {\n end = m.index + m[0].length;\n var obj = {\n left: { start: start, end: s },\n match: { start: s, end: m.index },\n right: { start: m.index, end: end },\n wholeMatch: { start: start, end: end }\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n };\n\n /**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\n showdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), str.slice(matchPos[i].match.start, matchPos[i].match.end), str.slice(matchPos[i].left.start, matchPos[i].left.end), str.slice(matchPos[i].right.start, matchPos[i].right.end)]);\n }\n return results;\n };\n\n /**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\n showdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function replacement() {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(replacement(str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), str.slice(matchPos[i].match.start, matchPos[i].match.end), str.slice(matchPos[i].left.start, matchPos[i].left.end), str.slice(matchPos[i].right.start, matchPos[i].right.end)));\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n };\n\n /**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\n showdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return indexOf >= 0 ? indexOf + (fromIndex || 0) : indexOf;\n };\n\n /**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\n showdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n };\n\n /**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\n showdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n\n var encode = [function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n }, function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n }, function (ch) {\n return ch;\n }];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch);\n }\n return ch;\n });\n\n return mail;\n };\n\n /**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\n showdown.helper.padEnd = function padEnd(str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0, targetLength);\n }\n };\n\n /**\n * POLYFILLS\n */\n // use this instead of builtin is undefined for IE8 compatibility\n if (typeof console === 'undefined') {\n console = {\n warn: function warn(msg) {\n 'use strict';\n\n alert(msg);\n },\n log: function log(msg) {\n 'use strict';\n\n alert(msg);\n },\n error: function error(msg) {\n 'use strict';\n\n throw msg;\n }\n };\n }\n\n /**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\n showdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n };\n\n /**\n * EMOJIS LIST\n */\n showdown.helper.emojis = {\n '+1': '\\uD83D\\uDC4D',\n '-1': '\\uD83D\\uDC4E',\n '100': '\\uD83D\\uDCAF',\n '1234': '\\uD83D\\uDD22',\n '1st_place_medal': '\\uD83E\\uDD47',\n '2nd_place_medal': '\\uD83E\\uDD48',\n '3rd_place_medal': '\\uD83E\\uDD49',\n '8ball': '\\uD83C\\uDFB1',\n 'a': '\\uD83C\\uDD70\\uFE0F',\n 'ab': '\\uD83C\\uDD8E',\n 'abc': '\\uD83D\\uDD24',\n 'abcd': '\\uD83D\\uDD21',\n 'accept': '\\uD83C\\uDE51',\n 'aerial_tramway': '\\uD83D\\uDEA1',\n 'airplane': '\\u2708\\uFE0F',\n 'alarm_clock': '\\u23F0',\n 'alembic': '\\u2697\\uFE0F',\n 'alien': '\\uD83D\\uDC7D',\n 'ambulance': '\\uD83D\\uDE91',\n 'amphora': '\\uD83C\\uDFFA',\n 'anchor': '\\u2693\\uFE0F',\n 'angel': '\\uD83D\\uDC7C',\n 'anger': '\\uD83D\\uDCA2',\n 'angry': '\\uD83D\\uDE20',\n 'anguished': '\\uD83D\\uDE27',\n 'ant': '\\uD83D\\uDC1C',\n 'apple': '\\uD83C\\uDF4E',\n 'aquarius': '\\u2652\\uFE0F',\n 'aries': '\\u2648\\uFE0F',\n 'arrow_backward': '\\u25C0\\uFE0F',\n 'arrow_double_down': '\\u23EC',\n 'arrow_double_up': '\\u23EB',\n 'arrow_down': '\\u2B07\\uFE0F',\n 'arrow_down_small': '\\uD83D\\uDD3D',\n 'arrow_forward': '\\u25B6\\uFE0F',\n 'arrow_heading_down': '\\u2935\\uFE0F',\n 'arrow_heading_up': '\\u2934\\uFE0F',\n 'arrow_left': '\\u2B05\\uFE0F',\n 'arrow_lower_left': '\\u2199\\uFE0F',\n 'arrow_lower_right': '\\u2198\\uFE0F',\n 'arrow_right': '\\u27A1\\uFE0F',\n 'arrow_right_hook': '\\u21AA\\uFE0F',\n 'arrow_up': '\\u2B06\\uFE0F',\n 'arrow_up_down': '\\u2195\\uFE0F',\n 'arrow_up_small': '\\uD83D\\uDD3C',\n 'arrow_upper_left': '\\u2196\\uFE0F',\n 'arrow_upper_right': '\\u2197\\uFE0F',\n 'arrows_clockwise': '\\uD83D\\uDD03',\n 'arrows_counterclockwise': '\\uD83D\\uDD04',\n 'art': '\\uD83C\\uDFA8',\n 'articulated_lorry': '\\uD83D\\uDE9B',\n 'artificial_satellite': '\\uD83D\\uDEF0',\n 'astonished': '\\uD83D\\uDE32',\n 'athletic_shoe': '\\uD83D\\uDC5F',\n 'atm': '\\uD83C\\uDFE7',\n 'atom_symbol': '\\u269B\\uFE0F',\n 'avocado': '\\uD83E\\uDD51',\n 'b': '\\uD83C\\uDD71\\uFE0F',\n 'baby': '\\uD83D\\uDC76',\n 'baby_bottle': '\\uD83C\\uDF7C',\n 'baby_chick': '\\uD83D\\uDC24',\n 'baby_symbol': '\\uD83D\\uDEBC',\n 'back': '\\uD83D\\uDD19',\n 'bacon': '\\uD83E\\uDD53',\n 'badminton': '\\uD83C\\uDFF8',\n 'baggage_claim': '\\uD83D\\uDEC4',\n 'baguette_bread': '\\uD83E\\uDD56',\n 'balance_scale': '\\u2696\\uFE0F',\n 'balloon': '\\uD83C\\uDF88',\n 'ballot_box': '\\uD83D\\uDDF3',\n 'ballot_box_with_check': '\\u2611\\uFE0F',\n 'bamboo': '\\uD83C\\uDF8D',\n 'banana': '\\uD83C\\uDF4C',\n 'bangbang': '\\u203C\\uFE0F',\n 'bank': '\\uD83C\\uDFE6',\n 'bar_chart': '\\uD83D\\uDCCA',\n 'barber': '\\uD83D\\uDC88',\n 'baseball': '\\u26BE\\uFE0F',\n 'basketball': '\\uD83C\\uDFC0',\n 'basketball_man': '\\u26F9\\uFE0F',\n 'basketball_woman': '\\u26F9\\uFE0F&zwj;\\u2640\\uFE0F',\n 'bat': '\\uD83E\\uDD87',\n 'bath': '\\uD83D\\uDEC0',\n 'bathtub': '\\uD83D\\uDEC1',\n 'battery': '\\uD83D\\uDD0B',\n 'beach_umbrella': '\\uD83C\\uDFD6',\n 'bear': '\\uD83D\\uDC3B',\n 'bed': '\\uD83D\\uDECF',\n 'bee': '\\uD83D\\uDC1D',\n 'beer': '\\uD83C\\uDF7A',\n 'beers': '\\uD83C\\uDF7B',\n 'beetle': '\\uD83D\\uDC1E',\n 'beginner': '\\uD83D\\uDD30',\n 'bell': '\\uD83D\\uDD14',\n 'bellhop_bell': '\\uD83D\\uDECE',\n 'bento': '\\uD83C\\uDF71',\n 'biking_man': '\\uD83D\\uDEB4',\n 'bike': '\\uD83D\\uDEB2',\n 'biking_woman': '\\uD83D\\uDEB4&zwj;\\u2640\\uFE0F',\n 'bikini': '\\uD83D\\uDC59',\n 'biohazard': '\\u2623\\uFE0F',\n 'bird': '\\uD83D\\uDC26',\n 'birthday': '\\uD83C\\uDF82',\n 'black_circle': '\\u26AB\\uFE0F',\n 'black_flag': '\\uD83C\\uDFF4',\n 'black_heart': '\\uD83D\\uDDA4',\n 'black_joker': '\\uD83C\\uDCCF',\n 'black_large_square': '\\u2B1B\\uFE0F',\n 'black_medium_small_square': '\\u25FE\\uFE0F',\n 'black_medium_square': '\\u25FC\\uFE0F',\n 'black_nib': '\\u2712\\uFE0F',\n 'black_small_square': '\\u25AA\\uFE0F',\n 'black_square_button': '\\uD83D\\uDD32',\n 'blonde_man': '\\uD83D\\uDC71',\n 'blonde_woman': '\\uD83D\\uDC71&zwj;\\u2640\\uFE0F',\n 'blossom': '\\uD83C\\uDF3C',\n 'blowfish': '\\uD83D\\uDC21',\n 'blue_book': '\\uD83D\\uDCD8',\n 'blue_car': '\\uD83D\\uDE99',\n 'blue_heart': '\\uD83D\\uDC99',\n 'blush': '\\uD83D\\uDE0A',\n 'boar': '\\uD83D\\uDC17',\n 'boat': '\\u26F5\\uFE0F',\n 'bomb': '\\uD83D\\uDCA3',\n 'book': '\\uD83D\\uDCD6',\n 'bookmark': '\\uD83D\\uDD16',\n 'bookmark_tabs': '\\uD83D\\uDCD1',\n 'books': '\\uD83D\\uDCDA',\n 'boom': '\\uD83D\\uDCA5',\n 'boot': '\\uD83D\\uDC62',\n 'bouquet': '\\uD83D\\uDC90',\n 'bowing_man': '\\uD83D\\uDE47',\n 'bow_and_arrow': '\\uD83C\\uDFF9',\n 'bowing_woman': '\\uD83D\\uDE47&zwj;\\u2640\\uFE0F',\n 'bowling': '\\uD83C\\uDFB3',\n 'boxing_glove': '\\uD83E\\uDD4A',\n 'boy': '\\uD83D\\uDC66',\n 'bread': '\\uD83C\\uDF5E',\n 'bride_with_veil': '\\uD83D\\uDC70',\n 'bridge_at_night': '\\uD83C\\uDF09',\n 'briefcase': '\\uD83D\\uDCBC',\n 'broken_heart': '\\uD83D\\uDC94',\n 'bug': '\\uD83D\\uDC1B',\n 'building_construction': '\\uD83C\\uDFD7',\n 'bulb': '\\uD83D\\uDCA1',\n 'bullettrain_front': '\\uD83D\\uDE85',\n 'bullettrain_side': '\\uD83D\\uDE84',\n 'burrito': '\\uD83C\\uDF2F',\n 'bus': '\\uD83D\\uDE8C',\n 'business_suit_levitating': '\\uD83D\\uDD74',\n 'busstop': '\\uD83D\\uDE8F',\n 'bust_in_silhouette': '\\uD83D\\uDC64',\n 'busts_in_silhouette': '\\uD83D\\uDC65',\n 'butterfly': '\\uD83E\\uDD8B',\n 'cactus': '\\uD83C\\uDF35',\n 'cake': '\\uD83C\\uDF70',\n 'calendar': '\\uD83D\\uDCC6',\n 'call_me_hand': '\\uD83E\\uDD19',\n 'calling': '\\uD83D\\uDCF2',\n 'camel': '\\uD83D\\uDC2B',\n 'camera': '\\uD83D\\uDCF7',\n 'camera_flash': '\\uD83D\\uDCF8',\n 'camping': '\\uD83C\\uDFD5',\n 'cancer': '\\u264B\\uFE0F',\n 'candle': '\\uD83D\\uDD6F',\n 'candy': '\\uD83C\\uDF6C',\n 'canoe': '\\uD83D\\uDEF6',\n 'capital_abcd': '\\uD83D\\uDD20',\n 'capricorn': '\\u2651\\uFE0F',\n 'car': '\\uD83D\\uDE97',\n 'card_file_box': '\\uD83D\\uDDC3',\n 'card_index': '\\uD83D\\uDCC7',\n 'card_index_dividers': '\\uD83D\\uDDC2',\n 'carousel_horse': '\\uD83C\\uDFA0',\n 'carrot': '\\uD83E\\uDD55',\n 'cat': '\\uD83D\\uDC31',\n 'cat2': '\\uD83D\\uDC08',\n 'cd': '\\uD83D\\uDCBF',\n 'chains': '\\u26D3',\n 'champagne': '\\uD83C\\uDF7E',\n 'chart': '\\uD83D\\uDCB9',\n 'chart_with_downwards_trend': '\\uD83D\\uDCC9',\n 'chart_with_upwards_trend': '\\uD83D\\uDCC8',\n 'checkered_flag': '\\uD83C\\uDFC1',\n 'cheese': '\\uD83E\\uDDC0',\n 'cherries': '\\uD83C\\uDF52',\n 'cherry_blossom': '\\uD83C\\uDF38',\n 'chestnut': '\\uD83C\\uDF30',\n 'chicken': '\\uD83D\\uDC14',\n 'children_crossing': '\\uD83D\\uDEB8',\n 'chipmunk': '\\uD83D\\uDC3F',\n 'chocolate_bar': '\\uD83C\\uDF6B',\n 'christmas_tree': '\\uD83C\\uDF84',\n 'church': '\\u26EA\\uFE0F',\n 'cinema': '\\uD83C\\uDFA6',\n 'circus_tent': '\\uD83C\\uDFAA',\n 'city_sunrise': '\\uD83C\\uDF07',\n 'city_sunset': '\\uD83C\\uDF06',\n 'cityscape': '\\uD83C\\uDFD9',\n 'cl': '\\uD83C\\uDD91',\n 'clamp': '\\uD83D\\uDDDC',\n 'clap': '\\uD83D\\uDC4F',\n 'clapper': '\\uD83C\\uDFAC',\n 'classical_building': '\\uD83C\\uDFDB',\n 'clinking_glasses': '\\uD83E\\uDD42',\n 'clipboard': '\\uD83D\\uDCCB',\n 'clock1': '\\uD83D\\uDD50',\n 'clock10': '\\uD83D\\uDD59',\n 'clock1030': '\\uD83D\\uDD65',\n 'clock11': '\\uD83D\\uDD5A',\n 'clock1130': '\\uD83D\\uDD66',\n 'clock12': '\\uD83D\\uDD5B',\n 'clock1230': '\\uD83D\\uDD67',\n 'clock130': '\\uD83D\\uDD5C',\n 'clock2': '\\uD83D\\uDD51',\n 'clock230': '\\uD83D\\uDD5D',\n 'clock3': '\\uD83D\\uDD52',\n 'clock330': '\\uD83D\\uDD5E',\n 'clock4': '\\uD83D\\uDD53',\n 'clock430': '\\uD83D\\uDD5F',\n 'clock5': '\\uD83D\\uDD54',\n 'clock530': '\\uD83D\\uDD60',\n 'clock6': '\\uD83D\\uDD55',\n 'clock630': '\\uD83D\\uDD61',\n 'clock7': '\\uD83D\\uDD56',\n 'clock730': '\\uD83D\\uDD62',\n 'clock8': '\\uD83D\\uDD57',\n 'clock830': '\\uD83D\\uDD63',\n 'clock9': '\\uD83D\\uDD58',\n 'clock930': '\\uD83D\\uDD64',\n 'closed_book': '\\uD83D\\uDCD5',\n 'closed_lock_with_key': '\\uD83D\\uDD10',\n 'closed_umbrella': '\\uD83C\\uDF02',\n 'cloud': '\\u2601\\uFE0F',\n 'cloud_with_lightning': '\\uD83C\\uDF29',\n 'cloud_with_lightning_and_rain': '\\u26C8',\n 'cloud_with_rain': '\\uD83C\\uDF27',\n 'cloud_with_snow': '\\uD83C\\uDF28',\n 'clown_face': '\\uD83E\\uDD21',\n 'clubs': '\\u2663\\uFE0F',\n 'cocktail': '\\uD83C\\uDF78',\n 'coffee': '\\u2615\\uFE0F',\n 'coffin': '\\u26B0\\uFE0F',\n 'cold_sweat': '\\uD83D\\uDE30',\n 'comet': '\\u2604\\uFE0F',\n 'computer': '\\uD83D\\uDCBB',\n 'computer_mouse': '\\uD83D\\uDDB1',\n 'confetti_ball': '\\uD83C\\uDF8A',\n 'confounded': '\\uD83D\\uDE16',\n 'confused': '\\uD83D\\uDE15',\n 'congratulations': '\\u3297\\uFE0F',\n 'construction': '\\uD83D\\uDEA7',\n 'construction_worker_man': '\\uD83D\\uDC77',\n 'construction_worker_woman': '\\uD83D\\uDC77&zwj;\\u2640\\uFE0F',\n 'control_knobs': '\\uD83C\\uDF9B',\n 'convenience_store': '\\uD83C\\uDFEA',\n 'cookie': '\\uD83C\\uDF6A',\n 'cool': '\\uD83C\\uDD92',\n 'policeman': '\\uD83D\\uDC6E',\n 'copyright': '\\xA9\\uFE0F',\n 'corn': '\\uD83C\\uDF3D',\n 'couch_and_lamp': '\\uD83D\\uDECB',\n 'couple': '\\uD83D\\uDC6B',\n 'couple_with_heart_woman_man': '\\uD83D\\uDC91',\n 'couple_with_heart_man_man': '\\uD83D\\uDC68&zwj;\\u2764\\uFE0F&zwj;\\uD83D\\uDC68',\n 'couple_with_heart_woman_woman': '\\uD83D\\uDC69&zwj;\\u2764\\uFE0F&zwj;\\uD83D\\uDC69',\n 'couplekiss_man_man': '\\uD83D\\uDC68&zwj;\\u2764\\uFE0F&zwj;\\uD83D\\uDC8B&zwj;\\uD83D\\uDC68',\n 'couplekiss_man_woman': '\\uD83D\\uDC8F',\n 'couplekiss_woman_woman': '\\uD83D\\uDC69&zwj;\\u2764\\uFE0F&zwj;\\uD83D\\uDC8B&zwj;\\uD83D\\uDC69',\n 'cow': '\\uD83D\\uDC2E',\n 'cow2': '\\uD83D\\uDC04',\n 'cowboy_hat_face': '\\uD83E\\uDD20',\n 'crab': '\\uD83E\\uDD80',\n 'crayon': '\\uD83D\\uDD8D',\n 'credit_card': '\\uD83D\\uDCB3',\n 'crescent_moon': '\\uD83C\\uDF19',\n 'cricket': '\\uD83C\\uDFCF',\n 'crocodile': '\\uD83D\\uDC0A',\n 'croissant': '\\uD83E\\uDD50',\n 'crossed_fingers': '\\uD83E\\uDD1E',\n 'crossed_flags': '\\uD83C\\uDF8C',\n 'crossed_swords': '\\u2694\\uFE0F',\n 'crown': '\\uD83D\\uDC51',\n 'cry': '\\uD83D\\uDE22',\n 'crying_cat_face': '\\uD83D\\uDE3F',\n 'crystal_ball': '\\uD83D\\uDD2E',\n 'cucumber': '\\uD83E\\uDD52',\n 'cupid': '\\uD83D\\uDC98',\n 'curly_loop': '\\u27B0',\n 'currency_exchange': '\\uD83D\\uDCB1',\n 'curry': '\\uD83C\\uDF5B',\n 'custard': '\\uD83C\\uDF6E',\n 'customs': '\\uD83D\\uDEC3',\n 'cyclone': '\\uD83C\\uDF00',\n 'dagger': '\\uD83D\\uDDE1',\n 'dancer': '\\uD83D\\uDC83',\n 'dancing_women': '\\uD83D\\uDC6F',\n 'dancing_men': '\\uD83D\\uDC6F&zwj;\\u2642\\uFE0F',\n 'dango': '\\uD83C\\uDF61',\n 'dark_sunglasses': '\\uD83D\\uDD76',\n 'dart': '\\uD83C\\uDFAF',\n 'dash': '\\uD83D\\uDCA8',\n 'date': '\\uD83D\\uDCC5',\n 'deciduous_tree': '\\uD83C\\uDF33',\n 'deer': '\\uD83E\\uDD8C',\n 'department_store': '\\uD83C\\uDFEC',\n 'derelict_house': '\\uD83C\\uDFDA',\n 'desert': '\\uD83C\\uDFDC',\n 'desert_island': '\\uD83C\\uDFDD',\n 'desktop_computer': '\\uD83D\\uDDA5',\n 'male_detective': '\\uD83D\\uDD75\\uFE0F',\n 'diamond_shape_with_a_dot_inside': '\\uD83D\\uDCA0',\n 'diamonds': '\\u2666\\uFE0F',\n 'disappointed': '\\uD83D\\uDE1E',\n 'disappointed_relieved': '\\uD83D\\uDE25',\n 'dizzy': '\\uD83D\\uDCAB',\n 'dizzy_face': '\\uD83D\\uDE35',\n 'do_not_litter': '\\uD83D\\uDEAF',\n 'dog': '\\uD83D\\uDC36',\n 'dog2': '\\uD83D\\uDC15',\n 'dollar': '\\uD83D\\uDCB5',\n 'dolls': '\\uD83C\\uDF8E',\n 'dolphin': '\\uD83D\\uDC2C',\n 'door': '\\uD83D\\uDEAA',\n 'doughnut': '\\uD83C\\uDF69',\n 'dove': '\\uD83D\\uDD4A',\n 'dragon': '\\uD83D\\uDC09',\n 'dragon_face': '\\uD83D\\uDC32',\n 'dress': '\\uD83D\\uDC57',\n 'dromedary_camel': '\\uD83D\\uDC2A',\n 'drooling_face': '\\uD83E\\uDD24',\n 'droplet': '\\uD83D\\uDCA7',\n 'drum': '\\uD83E\\uDD41',\n 'duck': '\\uD83E\\uDD86',\n 'dvd': '\\uD83D\\uDCC0',\n 'e-mail': '\\uD83D\\uDCE7',\n 'eagle': '\\uD83E\\uDD85',\n 'ear': '\\uD83D\\uDC42',\n 'ear_of_rice': '\\uD83C\\uDF3E',\n 'earth_africa': '\\uD83C\\uDF0D',\n 'earth_americas': '\\uD83C\\uDF0E',\n 'earth_asia': '\\uD83C\\uDF0F',\n 'egg': '\\uD83E\\uDD5A',\n 'eggplant': '\\uD83C\\uDF46',\n 'eight_pointed_black_star': '\\u2734\\uFE0F',\n 'eight_spoked_asterisk': '\\u2733\\uFE0F',\n 'electric_plug': '\\uD83D\\uDD0C',\n 'elephant': '\\uD83D\\uDC18',\n 'email': '\\u2709\\uFE0F',\n 'end': '\\uD83D\\uDD1A',\n 'envelope_with_arrow': '\\uD83D\\uDCE9',\n 'euro': '\\uD83D\\uDCB6',\n 'european_castle': '\\uD83C\\uDFF0',\n 'european_post_office': '\\uD83C\\uDFE4',\n 'evergreen_tree': '\\uD83C\\uDF32',\n 'exclamation': '\\u2757\\uFE0F',\n 'expressionless': '\\uD83D\\uDE11',\n 'eye': '\\uD83D\\uDC41',\n 'eye_speech_bubble': '\\uD83D\\uDC41&zwj;\\uD83D\\uDDE8',\n 'eyeglasses': '\\uD83D\\uDC53',\n 'eyes': '\\uD83D\\uDC40',\n 'face_with_head_bandage': '\\uD83E\\uDD15',\n 'face_with_thermometer': '\\uD83E\\uDD12',\n 'fist_oncoming': '\\uD83D\\uDC4A',\n 'factory': '\\uD83C\\uDFED',\n 'fallen_leaf': '\\uD83C\\uDF42',\n 'family_man_woman_boy': '\\uD83D\\uDC6A',\n 'family_man_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC66',\n 'family_man_boy_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC66&zwj;\\uD83D\\uDC66',\n 'family_man_girl': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC67',\n 'family_man_girl_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC66',\n 'family_man_girl_girl': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC67',\n 'family_man_man_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC68&zwj;\\uD83D\\uDC66',\n 'family_man_man_boy_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC68&zwj;\\uD83D\\uDC66&zwj;\\uD83D\\uDC66',\n 'family_man_man_girl': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC68&zwj;\\uD83D\\uDC67',\n 'family_man_man_girl_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC68&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC66',\n 'family_man_man_girl_girl': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC68&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC67',\n 'family_man_woman_boy_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC66&zwj;\\uD83D\\uDC66',\n 'family_man_woman_girl': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC67',\n 'family_man_woman_girl_boy': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC66',\n 'family_man_woman_girl_girl': '\\uD83D\\uDC68&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC67',\n 'family_woman_boy': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC66',\n 'family_woman_boy_boy': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC66&zwj;\\uD83D\\uDC66',\n 'family_woman_girl': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC67',\n 'family_woman_girl_boy': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC66',\n 'family_woman_girl_girl': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC67',\n 'family_woman_woman_boy': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC66',\n 'family_woman_woman_boy_boy': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC66&zwj;\\uD83D\\uDC66',\n 'family_woman_woman_girl': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC67',\n 'family_woman_woman_girl_boy': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC66',\n 'family_woman_woman_girl_girl': '\\uD83D\\uDC69&zwj;\\uD83D\\uDC69&zwj;\\uD83D\\uDC67&zwj;\\uD83D\\uDC67',\n 'fast_forward': '\\u23E9',\n 'fax': '\\uD83D\\uDCE0',\n 'fearful': '\\uD83D\\uDE28',\n 'feet': '\\uD83D\\uDC3E',\n 'female_detective': '\\uD83D\\uDD75\\uFE0F&zwj;\\u2640\\uFE0F',\n 'ferris_wheel': '\\uD83C\\uDFA1',\n 'ferry': '\\u26F4',\n 'field_hockey': '\\uD83C\\uDFD1',\n 'file_cabinet': '\\uD83D\\uDDC4',\n 'file_folder': '\\uD83D\\uDCC1',\n 'film_projector': '\\uD83D\\uDCFD',\n 'film_strip': '\\uD83C\\uDF9E',\n 'fire': '\\uD83D\\uDD25',\n 'fire_engine': '\\uD83D\\uDE92',\n 'fireworks': '\\uD83C\\uDF86',\n 'first_quarter_moon': '\\uD83C\\uDF13',\n 'first_quarter_moon_with_face': '\\uD83C\\uDF1B',\n 'fish': '\\uD83D\\uDC1F',\n 'fish_cake': '\\uD83C\\uDF65',\n 'fishing_pole_and_fish': '\\uD83C\\uDFA3',\n 'fist_raised': '\\u270A',\n 'fist_left': '\\uD83E\\uDD1B',\n 'fist_right': '\\uD83E\\uDD1C',\n 'flags': '\\uD83C\\uDF8F',\n 'flashlight': '\\uD83D\\uDD26',\n 'fleur_de_lis': '\\u269C\\uFE0F',\n 'flight_arrival': '\\uD83D\\uDEEC',\n 'flight_departure': '\\uD83D\\uDEEB',\n 'floppy_disk': '\\uD83D\\uDCBE',\n 'flower_playing_cards': '\\uD83C\\uDFB4',\n 'flushed': '\\uD83D\\uDE33',\n 'fog': '\\uD83C\\uDF2B',\n 'foggy': '\\uD83C\\uDF01',\n 'football': '\\uD83C\\uDFC8',\n 'footprints': '\\uD83D\\uDC63',\n 'fork_and_knife': '\\uD83C\\uDF74',\n 'fountain': '\\u26F2\\uFE0F',\n 'fountain_pen': '\\uD83D\\uDD8B',\n 'four_leaf_clover': '\\uD83C\\uDF40',\n 'fox_face': '\\uD83E\\uDD8A',\n 'framed_picture': '\\uD83D\\uDDBC',\n 'free': '\\uD83C\\uDD93',\n 'fried_egg': '\\uD83C\\uDF73',\n 'fried_shrimp': '\\uD83C\\uDF64',\n 'fries': '\\uD83C\\uDF5F',\n 'frog': '\\uD83D\\uDC38',\n 'frowning': '\\uD83D\\uDE26',\n 'frowning_face': '\\u2639\\uFE0F',\n 'frowning_man': '\\uD83D\\uDE4D&zwj;\\u2642\\uFE0F',\n 'frowning_woman': '\\uD83D\\uDE4D',\n 'middle_finger': '\\uD83D\\uDD95',\n 'fuelpump': '\\u26FD\\uFE0F',\n 'full_moon': '\\uD83C\\uDF15',\n 'full_moon_with_face': '\\uD83C\\uDF1D',\n 'funeral_urn': '\\u26B1\\uFE0F',\n 'game_die': '\\uD83C\\uDFB2',\n 'gear': '\\u2699\\uFE0F',\n 'gem': '\\uD83D\\uDC8E',\n 'gemini': '\\u264A\\uFE0F',\n 'ghost': '\\uD83D\\uDC7B',\n 'gift': '\\uD83C\\uDF81',\n 'gift_heart': '\\uD83D\\uDC9D',\n 'girl': '\\uD83D\\uDC67',\n 'globe_with_meridians': '\\uD83C\\uDF10',\n 'goal_net': '\\uD83E\\uDD45',\n 'goat': '\\uD83D\\uDC10',\n 'golf': '\\u26F3\\uFE0F',\n 'golfing_man': '\\uD83C\\uDFCC\\uFE0F',\n 'golfing_woman': '\\uD83C\\uDFCC\\uFE0F&zwj;\\u2640\\uFE0F',\n 'gorilla': '\\uD83E\\uDD8D',\n 'grapes': '\\uD83C\\uDF47',\n 'green_apple': '\\uD83C\\uDF4F',\n 'green_book': '\\uD83D\\uDCD7',\n 'green_heart': '\\uD83D\\uDC9A',\n 'green_salad': '\\uD83E\\uDD57',\n 'grey_exclamation': '\\u2755',\n 'grey_question': '\\u2754',\n 'grimacing': '\\uD83D\\uDE2C',\n 'grin': '\\uD83D\\uDE01',\n 'grinning': '\\uD83D\\uDE00',\n 'guardsman': '\\uD83D\\uDC82',\n 'guardswoman': '\\uD83D\\uDC82&zwj;\\u2640\\uFE0F',\n 'guitar': '\\uD83C\\uDFB8',\n 'gun': '\\uD83D\\uDD2B',\n 'haircut_woman': '\\uD83D\\uDC87',\n 'haircut_man': '\\uD83D\\uDC87&zwj;\\u2642\\uFE0F',\n 'hamburger': '\\uD83C\\uDF54',\n 'hammer': '\\uD83D\\uDD28',\n 'hammer_and_pick': '\\u2692',\n 'hammer_and_wrench': '\\uD83D\\uDEE0',\n 'hamster': '\\uD83D\\uDC39',\n 'hand': '\\u270B',\n 'handbag': '\\uD83D\\uDC5C',\n 'handshake': '\\uD83E\\uDD1D',\n 'hankey': '\\uD83D\\uDCA9',\n 'hatched_chick': '\\uD83D\\uDC25',\n 'hatching_chick': '\\uD83D\\uDC23',\n 'headphones': '\\uD83C\\uDFA7',\n 'hear_no_evil': '\\uD83D\\uDE49',\n 'heart': '\\u2764\\uFE0F',\n 'heart_decoration': '\\uD83D\\uDC9F',\n 'heart_eyes': '\\uD83D\\uDE0D',\n 'heart_eyes_cat': '\\uD83D\\uDE3B',\n 'heartbeat': '\\uD83D\\uDC93',\n 'heartpulse': '\\uD83D\\uDC97',\n 'hearts': '\\u2665\\uFE0F',\n 'heavy_check_mark': '\\u2714\\uFE0F',\n 'heavy_division_sign': '\\u2797',\n 'heavy_dollar_sign': '\\uD83D\\uDCB2',\n 'heavy_heart_exclamation': '\\u2763\\uFE0F',\n 'heavy_minus_sign': '\\u2796',\n 'heavy_multiplication_x': '\\u2716\\uFE0F',\n 'heavy_plus_sign': '\\u2795',\n 'helicopter': '\\uD83D\\uDE81',\n 'herb': '\\uD83C\\uDF3F',\n 'hibiscus': '\\uD83C\\uDF3A',\n 'high_brightness': '\\uD83D\\uDD06',\n 'high_heel': '\\uD83D\\uDC60',\n 'hocho': '\\uD83D\\uDD2A',\n 'hole': '\\uD83D\\uDD73',\n 'honey_pot': '\\uD83C\\uDF6F',\n 'horse': '\\uD83D\\uDC34',\n 'horse_racing': '\\uD83C\\uDFC7',\n 'hospital': '\\uD83C\\uDFE5',\n 'hot_pepper': '\\uD83C\\uDF36',\n 'hotdog': '\\uD83C\\uDF2D',\n 'hotel': '\\uD83C\\uDFE8',\n 'hotsprings': '\\u2668\\uFE0F',\n 'hourglass': '\\u231B\\uFE0F',\n 'hourglass_flowing_sand': '\\u23F3',\n 'house': '\\uD83C\\uDFE0',\n 'house_with_garden': '\\uD83C\\uDFE1',\n 'houses': '\\uD83C\\uDFD8',\n 'hugs': '\\uD83E\\uDD17',\n 'hushed': '\\uD83D\\uDE2F',\n 'ice_cream': '\\uD83C\\uDF68',\n 'ice_hockey': '\\uD83C\\uDFD2',\n 'ice_skate': '\\u26F8',\n 'icecream': '\\uD83C\\uDF66',\n 'id': '\\uD83C\\uDD94',\n 'ideograph_advantage': '\\uD83C\\uDE50',\n 'imp': '\\uD83D\\uDC7F',\n 'inbox_tray': '\\uD83D\\uDCE5',\n 'incoming_envelope': '\\uD83D\\uDCE8',\n 'tipping_hand_woman': '\\uD83D\\uDC81',\n 'information_source': '\\u2139\\uFE0F',\n 'innocent': '\\uD83D\\uDE07',\n 'interrobang': '\\u2049\\uFE0F',\n 'iphone': '\\uD83D\\uDCF1',\n 'izakaya_lantern': '\\uD83C\\uDFEE',\n 'jack_o_lantern': '\\uD83C\\uDF83',\n 'japan': '\\uD83D\\uDDFE',\n 'japanese_castle': '\\uD83C\\uDFEF',\n 'japanese_goblin': '\\uD83D\\uDC7A',\n 'japanese_ogre': '\\uD83D\\uDC79',\n 'jeans': '\\uD83D\\uDC56',\n 'joy': '\\uD83D\\uDE02',\n 'joy_cat': '\\uD83D\\uDE39',\n 'joystick': '\\uD83D\\uDD79',\n 'kaaba': '\\uD83D\\uDD4B',\n 'key': '\\uD83D\\uDD11',\n 'keyboard': '\\u2328\\uFE0F',\n 'keycap_ten': '\\uD83D\\uDD1F',\n 'kick_scooter': '\\uD83D\\uDEF4',\n 'kimono': '\\uD83D\\uDC58',\n 'kiss': '\\uD83D\\uDC8B',\n 'kissing': '\\uD83D\\uDE17',\n 'kissing_cat': '\\uD83D\\uDE3D',\n 'kissing_closed_eyes': '\\uD83D\\uDE1A',\n 'kissing_heart': '\\uD83D\\uDE18',\n 'kissing_smiling_eyes': '\\uD83D\\uDE19',\n 'kiwi_fruit': '\\uD83E\\uDD5D',\n 'koala': '\\uD83D\\uDC28',\n 'koko': '\\uD83C\\uDE01',\n 'label': '\\uD83C\\uDFF7',\n 'large_blue_circle': '\\uD83D\\uDD35',\n 'large_blue_diamond': '\\uD83D\\uDD37',\n 'large_orange_diamond': '\\uD83D\\uDD36',\n 'last_quarter_moon': '\\uD83C\\uDF17',\n 'last_quarter_moon_with_face': '\\uD83C\\uDF1C',\n 'latin_cross': '\\u271D\\uFE0F',\n 'laughing': '\\uD83D\\uDE06',\n 'leaves': '\\uD83C\\uDF43',\n 'ledger': '\\uD83D\\uDCD2',\n 'left_luggage': '\\uD83D\\uDEC5',\n 'left_right_arrow': '\\u2194\\uFE0F',\n 'leftwards_arrow_with_hook': '\\u21A9\\uFE0F',\n 'lemon': '\\uD83C\\uDF4B',\n 'leo': '\\u264C\\uFE0F',\n 'leopard': '\\uD83D\\uDC06',\n 'level_slider': '\\uD83C\\uDF9A',\n 'libra': '\\u264E\\uFE0F',\n 'light_rail': '\\uD83D\\uDE88',\n 'link': '\\uD83D\\uDD17',\n 'lion': '\\uD83E\\uDD81',\n 'lips': '\\uD83D\\uDC44',\n 'lipstick': '\\uD83D\\uDC84',\n 'lizard': '\\uD83E\\uDD8E',\n 'lock': '\\uD83D\\uDD12',\n 'lock_with_ink_pen': '\\uD83D\\uDD0F',\n 'lollipop': '\\uD83C\\uDF6D',\n 'loop': '\\u27BF',\n 'loud_sound': '\\uD83D\\uDD0A',\n 'loudspeaker': '\\uD83D\\uDCE2',\n 'love_hotel': '\\uD83C\\uDFE9',\n 'love_letter': '\\uD83D\\uDC8C',\n 'low_brightness': '\\uD83D\\uDD05',\n 'lying_face': '\\uD83E\\uDD25',\n 'm': '\\u24C2\\uFE0F',\n 'mag': '\\uD83D\\uDD0D',\n 'mag_right': '\\uD83D\\uDD0E',\n 'mahjong': '\\uD83C\\uDC04\\uFE0F',\n 'mailbox': '\\uD83D\\uDCEB',\n 'mailbox_closed': '\\uD83D\\uDCEA',\n 'mailbox_with_mail': '\\uD83D\\uDCEC',\n 'mailbox_with_no_mail': '\\uD83D\\uDCED',\n 'man': '\\uD83D\\uDC68',\n 'man_artist': '\\uD83D\\uDC68&zwj;\\uD83C\\uDFA8',\n 'man_astronaut': '\\uD83D\\uDC68&zwj;\\uD83D\\uDE80',\n 'man_cartwheeling': '\\uD83E\\uDD38&zwj;\\u2642\\uFE0F',\n 'man_cook': '\\uD83D\\uDC68&zwj;\\uD83C\\uDF73',\n 'man_dancing': '\\uD83D\\uDD7A',\n 'man_facepalming': '\\uD83E\\uDD26&zwj;\\u2642\\uFE0F',\n 'man_factory_worker': '\\uD83D\\uDC68&zwj;\\uD83C\\uDFED',\n 'man_farmer': '\\uD83D\\uDC68&zwj;\\uD83C\\uDF3E',\n 'man_firefighter': '\\uD83D\\uDC68&zwj;\\uD83D\\uDE92',\n 'man_health_worker': '\\uD83D\\uDC68&zwj;\\u2695\\uFE0F',\n 'man_in_tuxedo': '\\uD83E\\uDD35',\n 'man_judge': '\\uD83D\\uDC68&zwj;\\u2696\\uFE0F',\n 'man_juggling': '\\uD83E\\uDD39&zwj;\\u2642\\uFE0F',\n 'man_mechanic': '\\uD83D\\uDC68&zwj;\\uD83D\\uDD27',\n 'man_office_worker': '\\uD83D\\uDC68&zwj;\\uD83D\\uDCBC',\n 'man_pilot': '\\uD83D\\uDC68&zwj;\\u2708\\uFE0F',\n 'man_playing_handball': '\\uD83E\\uDD3E&zwj;\\u2642\\uFE0F',\n 'man_playing_water_polo': '\\uD83E\\uDD3D&zwj;\\u2642\\uFE0F',\n 'man_scientist': '\\uD83D\\uDC68&zwj;\\uD83D\\uDD2C',\n 'man_shrugging': '\\uD83E\\uDD37&zwj;\\u2642\\uFE0F',\n 'man_singer': '\\uD83D\\uDC68&zwj;\\uD83C\\uDFA4',\n 'man_student': '\\uD83D\\uDC68&zwj;\\uD83C\\uDF93',\n 'man_teacher': '\\uD83D\\uDC68&zwj;\\uD83C\\uDFEB',\n 'man_technologist': '\\uD83D\\uDC68&zwj;\\uD83D\\uDCBB',\n 'man_with_gua_pi_mao': '\\uD83D\\uDC72',\n 'man_with_turban': '\\uD83D\\uDC73',\n 'tangerine': '\\uD83C\\uDF4A',\n 'mans_shoe': '\\uD83D\\uDC5E',\n 'mantelpiece_clock': '\\uD83D\\uDD70',\n 'maple_leaf': '\\uD83C\\uDF41',\n 'martial_arts_uniform': '\\uD83E\\uDD4B',\n 'mask': '\\uD83D\\uDE37',\n 'massage_woman': '\\uD83D\\uDC86',\n 'massage_man': '\\uD83D\\uDC86&zwj;\\u2642\\uFE0F',\n 'meat_on_bone': '\\uD83C\\uDF56',\n 'medal_military': '\\uD83C\\uDF96',\n 'medal_sports': '\\uD83C\\uDFC5',\n 'mega': '\\uD83D\\uDCE3',\n 'melon': '\\uD83C\\uDF48',\n 'memo': '\\uD83D\\uDCDD',\n 'men_wrestling': '\\uD83E\\uDD3C&zwj;\\u2642\\uFE0F',\n 'menorah': '\\uD83D\\uDD4E',\n 'mens': '\\uD83D\\uDEB9',\n 'metal': '\\uD83E\\uDD18',\n 'metro': '\\uD83D\\uDE87',\n 'microphone': '\\uD83C\\uDFA4',\n 'microscope': '\\uD83D\\uDD2C',\n 'milk_glass': '\\uD83E\\uDD5B',\n 'milky_way': '\\uD83C\\uDF0C',\n 'minibus': '\\uD83D\\uDE90',\n 'minidisc': '\\uD83D\\uDCBD',\n 'mobile_phone_off': '\\uD83D\\uDCF4',\n 'money_mouth_face': '\\uD83E\\uDD11',\n 'money_with_wings': '\\uD83D\\uDCB8',\n 'moneybag': '\\uD83D\\uDCB0',\n 'monkey': '\\uD83D\\uDC12',\n 'monkey_face': '\\uD83D\\uDC35',\n 'monorail': '\\uD83D\\uDE9D',\n 'moon': '\\uD83C\\uDF14',\n 'mortar_board': '\\uD83C\\uDF93',\n 'mosque': '\\uD83D\\uDD4C',\n 'motor_boat': '\\uD83D\\uDEE5',\n 'motor_scooter': '\\uD83D\\uDEF5',\n 'motorcycle': '\\uD83C\\uDFCD',\n 'motorway': '\\uD83D\\uDEE3',\n 'mount_fuji': '\\uD83D\\uDDFB',\n 'mountain': '\\u26F0',\n 'mountain_biking_man': '\\uD83D\\uDEB5',\n 'mountain_biking_woman': '\\uD83D\\uDEB5&zwj;\\u2640\\uFE0F',\n 'mountain_cableway': '\\uD83D\\uDEA0',\n 'mountain_railway': '\\uD83D\\uDE9E',\n 'mountain_snow': '\\uD83C\\uDFD4',\n 'mouse': '\\uD83D\\uDC2D',\n 'mouse2': '\\uD83D\\uDC01',\n 'movie_camera': '\\uD83C\\uDFA5',\n 'moyai': '\\uD83D\\uDDFF',\n 'mrs_claus': '\\uD83E\\uDD36',\n 'muscle': '\\uD83D\\uDCAA',\n 'mushroom': '\\uD83C\\uDF44',\n 'musical_keyboard': '\\uD83C\\uDFB9',\n 'musical_note': '\\uD83C\\uDFB5',\n 'musical_score': '\\uD83C\\uDFBC',\n 'mute': '\\uD83D\\uDD07',\n 'nail_care': '\\uD83D\\uDC85',\n 'name_badge': '\\uD83D\\uDCDB',\n 'national_park': '\\uD83C\\uDFDE',\n 'nauseated_face': '\\uD83E\\uDD22',\n 'necktie': '\\uD83D\\uDC54',\n 'negative_squared_cross_mark': '\\u274E',\n 'nerd_face': '\\uD83E\\uDD13',\n 'neutral_face': '\\uD83D\\uDE10',\n 'new': '\\uD83C\\uDD95',\n 'new_moon': '\\uD83C\\uDF11',\n 'new_moon_with_face': '\\uD83C\\uDF1A',\n 'newspaper': '\\uD83D\\uDCF0',\n 'newspaper_roll': '\\uD83D\\uDDDE',\n 'next_track_button': '\\u23ED',\n 'ng': '\\uD83C\\uDD96',\n 'no_good_man': '\\uD83D\\uDE45&zwj;\\u2642\\uFE0F',\n 'no_good_woman': '\\uD83D\\uDE45',\n 'night_with_stars': '\\uD83C\\uDF03',\n 'no_bell': '\\uD83D\\uDD15',\n 'no_bicycles': '\\uD83D\\uDEB3',\n 'no_entry': '\\u26D4\\uFE0F',\n 'no_entry_sign': '\\uD83D\\uDEAB',\n 'no_mobile_phones': '\\uD83D\\uDCF5',\n 'no_mouth': '\\uD83D\\uDE36',\n 'no_pedestrians': '\\uD83D\\uDEB7',\n 'no_smoking': '\\uD83D\\uDEAD',\n 'non-potable_water': '\\uD83D\\uDEB1',\n 'nose': '\\uD83D\\uDC43',\n 'notebook': '\\uD83D\\uDCD3',\n 'notebook_with_decorative_cover': '\\uD83D\\uDCD4',\n 'notes': '\\uD83C\\uDFB6',\n 'nut_and_bolt': '\\uD83D\\uDD29',\n 'o': '\\u2B55\\uFE0F',\n 'o2': '\\uD83C\\uDD7E\\uFE0F',\n 'ocean': '\\uD83C\\uDF0A',\n 'octopus': '\\uD83D\\uDC19',\n 'oden': '\\uD83C\\uDF62',\n 'office': '\\uD83C\\uDFE2',\n 'oil_drum': '\\uD83D\\uDEE2',\n 'ok': '\\uD83C\\uDD97',\n 'ok_hand': '\\uD83D\\uDC4C',\n 'ok_man': '\\uD83D\\uDE46&zwj;\\u2642\\uFE0F',\n 'ok_woman': '\\uD83D\\uDE46',\n 'old_key': '\\uD83D\\uDDDD',\n 'older_man': '\\uD83D\\uDC74',\n 'older_woman': '\\uD83D\\uDC75',\n 'om': '\\uD83D\\uDD49',\n 'on': '\\uD83D\\uDD1B',\n 'oncoming_automobile': '\\uD83D\\uDE98',\n 'oncoming_bus': '\\uD83D\\uDE8D',\n 'oncoming_police_car': '\\uD83D\\uDE94',\n 'oncoming_taxi': '\\uD83D\\uDE96',\n 'open_file_folder': '\\uD83D\\uDCC2',\n 'open_hands': '\\uD83D\\uDC50',\n 'open_mouth': '\\uD83D\\uDE2E',\n 'open_umbrella': '\\u2602\\uFE0F',\n 'ophiuchus': '\\u26CE',\n 'orange_book': '\\uD83D\\uDCD9',\n 'orthodox_cross': '\\u2626\\uFE0F',\n 'outbox_tray': '\\uD83D\\uDCE4',\n 'owl': '\\uD83E\\uDD89',\n 'ox': '\\uD83D\\uDC02',\n 'package': '\\uD83D\\uDCE6',\n 'page_facing_up': '\\uD83D\\uDCC4',\n 'page_with_curl': '\\uD83D\\uDCC3',\n 'pager': '\\uD83D\\uDCDF',\n 'paintbrush': '\\uD83D\\uDD8C',\n 'palm_tree': '\\uD83C\\uDF34',\n 'pancakes': '\\uD83E\\uDD5E',\n 'panda_face': '\\uD83D\\uDC3C',\n 'paperclip': '\\uD83D\\uDCCE',\n 'paperclips': '\\uD83D\\uDD87',\n 'parasol_on_ground': '\\u26F1',\n 'parking': '\\uD83C\\uDD7F\\uFE0F',\n 'part_alternation_mark': '\\u303D\\uFE0F',\n 'partly_sunny': '\\u26C5\\uFE0F',\n 'passenger_ship': '\\uD83D\\uDEF3',\n 'passport_control': '\\uD83D\\uDEC2',\n 'pause_button': '\\u23F8',\n 'peace_symbol': '\\u262E\\uFE0F',\n 'peach': '\\uD83C\\uDF51',\n 'peanuts': '\\uD83E\\uDD5C',\n 'pear': '\\uD83C\\uDF50',\n 'pen': '\\uD83D\\uDD8A',\n 'pencil2': '\\u270F\\uFE0F',\n 'penguin': '\\uD83D\\uDC27',\n 'pensive': '\\uD83D\\uDE14',\n 'performing_arts': '\\uD83C\\uDFAD',\n 'persevere': '\\uD83D\\uDE23',\n 'person_fencing': '\\uD83E\\uDD3A',\n 'pouting_woman': '\\uD83D\\uDE4E',\n 'phone': '\\u260E\\uFE0F',\n 'pick': '\\u26CF',\n 'pig': '\\uD83D\\uDC37',\n 'pig2': '\\uD83D\\uDC16',\n 'pig_nose': '\\uD83D\\uDC3D',\n 'pill': '\\uD83D\\uDC8A',\n 'pineapple': '\\uD83C\\uDF4D',\n 'ping_pong': '\\uD83C\\uDFD3',\n 'pisces': '\\u2653\\uFE0F',\n 'pizza': '\\uD83C\\uDF55',\n 'place_of_worship': '\\uD83D\\uDED0',\n 'plate_with_cutlery': '\\uD83C\\uDF7D',\n 'play_or_pause_button': '\\u23EF',\n 'point_down': '\\uD83D\\uDC47',\n 'point_left': '\\uD83D\\uDC48',\n 'point_right': '\\uD83D\\uDC49',\n 'point_up': '\\u261D\\uFE0F',\n 'point_up_2': '\\uD83D\\uDC46',\n 'police_car': '\\uD83D\\uDE93',\n 'policewoman': '\\uD83D\\uDC6E&zwj;\\u2640\\uFE0F',\n 'poodle': '\\uD83D\\uDC29',\n 'popcorn': '\\uD83C\\uDF7F',\n 'post_office': '\\uD83C\\uDFE3',\n 'postal_horn': '\\uD83D\\uDCEF',\n 'postbox': '\\uD83D\\uDCEE',\n 'potable_water': '\\uD83D\\uDEB0',\n 'potato': '\\uD83E\\uDD54',\n 'pouch': '\\uD83D\\uDC5D',\n 'poultry_leg': '\\uD83C\\uDF57',\n 'pound': '\\uD83D\\uDCB7',\n 'rage': '\\uD83D\\uDE21',\n 'pouting_cat': '\\uD83D\\uDE3E',\n 'pouting_man': '\\uD83D\\uDE4E&zwj;\\u2642\\uFE0F',\n 'pray': '\\uD83D\\uDE4F',\n 'prayer_beads': '\\uD83D\\uDCFF',\n 'pregnant_woman': '\\uD83E\\uDD30',\n 'previous_track_button': '\\u23EE',\n 'prince': '\\uD83E\\uDD34',\n 'princess': '\\uD83D\\uDC78',\n 'printer': '\\uD83D\\uDDA8',\n 'purple_heart': '\\uD83D\\uDC9C',\n 'purse': '\\uD83D\\uDC5B',\n 'pushpin': '\\uD83D\\uDCCC',\n 'put_litter_in_its_place': '\\uD83D\\uDEAE',\n 'question': '\\u2753',\n 'rabbit': '\\uD83D\\uDC30',\n 'rabbit2': '\\uD83D\\uDC07',\n 'racehorse': '\\uD83D\\uDC0E',\n 'racing_car': '\\uD83C\\uDFCE',\n 'radio': '\\uD83D\\uDCFB',\n 'radio_button': '\\uD83D\\uDD18',\n 'radioactive': '\\u2622\\uFE0F',\n 'railway_car': '\\uD83D\\uDE83',\n 'railway_track': '\\uD83D\\uDEE4',\n 'rainbow': '\\uD83C\\uDF08',\n 'rainbow_flag': '\\uD83C\\uDFF3\\uFE0F&zwj;\\uD83C\\uDF08',\n 'raised_back_of_hand': '\\uD83E\\uDD1A',\n 'raised_hand_with_fingers_splayed': '\\uD83D\\uDD90',\n 'raised_hands': '\\uD83D\\uDE4C',\n 'raising_hand_woman': '\\uD83D\\uDE4B',\n 'raising_hand_man': '\\uD83D\\uDE4B&zwj;\\u2642\\uFE0F',\n 'ram': '\\uD83D\\uDC0F',\n 'ramen': '\\uD83C\\uDF5C',\n 'rat': '\\uD83D\\uDC00',\n 'record_button': '\\u23FA',\n 'recycle': '\\u267B\\uFE0F',\n 'red_circle': '\\uD83D\\uDD34',\n 'registered': '\\xAE\\uFE0F',\n 'relaxed': '\\u263A\\uFE0F',\n 'relieved': '\\uD83D\\uDE0C',\n 'reminder_ribbon': '\\uD83C\\uDF97',\n 'repeat': '\\uD83D\\uDD01',\n 'repeat_one': '\\uD83D\\uDD02',\n 'rescue_worker_helmet': '\\u26D1',\n 'restroom': '\\uD83D\\uDEBB',\n 'revolving_hearts': '\\uD83D\\uDC9E',\n 'rewind': '\\u23EA',\n 'rhinoceros': '\\uD83E\\uDD8F',\n 'ribbon': '\\uD83C\\uDF80',\n 'rice': '\\uD83C\\uDF5A',\n 'rice_ball': '\\uD83C\\uDF59',\n 'rice_cracker': '\\uD83C\\uDF58',\n 'rice_scene': '\\uD83C\\uDF91',\n 'right_anger_bubble': '\\uD83D\\uDDEF',\n 'ring': '\\uD83D\\uDC8D',\n 'robot': '\\uD83E\\uDD16',\n 'rocket': '\\uD83D\\uDE80',\n 'rofl': '\\uD83E\\uDD23',\n 'roll_eyes': '\\uD83D\\uDE44',\n 'roller_coaster': '\\uD83C\\uDFA2',\n 'rooster': '\\uD83D\\uDC13',\n 'rose': '\\uD83C\\uDF39',\n 'rosette': '\\uD83C\\uDFF5',\n 'rotating_light': '\\uD83D\\uDEA8',\n 'round_pushpin': '\\uD83D\\uDCCD',\n 'rowing_man': '\\uD83D\\uDEA3',\n 'rowing_woman': '\\uD83D\\uDEA3&zwj;\\u2640\\uFE0F',\n 'rugby_football': '\\uD83C\\uDFC9',\n 'running_man': '\\uD83C\\uDFC3',\n 'running_shirt_with_sash': '\\uD83C\\uDFBD',\n 'running_woman': '\\uD83C\\uDFC3&zwj;\\u2640\\uFE0F',\n 'sa': '\\uD83C\\uDE02\\uFE0F',\n 'sagittarius': '\\u2650\\uFE0F',\n 'sake': '\\uD83C\\uDF76',\n 'sandal': '\\uD83D\\uDC61',\n 'santa': '\\uD83C\\uDF85',\n 'satellite': '\\uD83D\\uDCE1',\n 'saxophone': '\\uD83C\\uDFB7',\n 'school': '\\uD83C\\uDFEB',\n 'school_satchel': '\\uD83C\\uDF92',\n 'scissors': '\\u2702\\uFE0F',\n 'scorpion': '\\uD83E\\uDD82',\n 'scorpius': '\\u264F\\uFE0F',\n 'scream': '\\uD83D\\uDE31',\n 'scream_cat': '\\uD83D\\uDE40',\n 'scroll': '\\uD83D\\uDCDC',\n 'seat': '\\uD83D\\uDCBA',\n 'secret': '\\u3299\\uFE0F',\n 'see_no_evil': '\\uD83D\\uDE48',\n 'seedling': '\\uD83C\\uDF31',\n 'selfie': '\\uD83E\\uDD33',\n 'shallow_pan_of_food': '\\uD83E\\uDD58',\n 'shamrock': '\\u2618\\uFE0F',\n 'shark': '\\uD83E\\uDD88',\n 'shaved_ice': '\\uD83C\\uDF67',\n 'sheep': '\\uD83D\\uDC11',\n 'shell': '\\uD83D\\uDC1A',\n 'shield': '\\uD83D\\uDEE1',\n 'shinto_shrine': '\\u26E9',\n 'ship': '\\uD83D\\uDEA2',\n 'shirt': '\\uD83D\\uDC55',\n 'shopping': '\\uD83D\\uDECD',\n 'shopping_cart': '\\uD83D\\uDED2',\n 'shower': '\\uD83D\\uDEBF',\n 'shrimp': '\\uD83E\\uDD90',\n 'signal_strength': '\\uD83D\\uDCF6',\n 'six_pointed_star': '\\uD83D\\uDD2F',\n 'ski': '\\uD83C\\uDFBF',\n 'skier': '\\u26F7',\n 'skull': '\\uD83D\\uDC80',\n 'skull_and_crossbones': '\\u2620\\uFE0F',\n 'sleeping': '\\uD83D\\uDE34',\n 'sleeping_bed': '\\uD83D\\uDECC',\n 'sleepy': '\\uD83D\\uDE2A',\n 'slightly_frowning_face': '\\uD83D\\uDE41',\n 'slightly_smiling_face': '\\uD83D\\uDE42',\n 'slot_machine': '\\uD83C\\uDFB0',\n 'small_airplane': '\\uD83D\\uDEE9',\n 'small_blue_diamond': '\\uD83D\\uDD39',\n 'small_orange_diamond': '\\uD83D\\uDD38',\n 'small_red_triangle': '\\uD83D\\uDD3A',\n 'small_red_triangle_down': '\\uD83D\\uDD3B',\n 'smile': '\\uD83D\\uDE04',\n 'smile_cat': '\\uD83D\\uDE38',\n 'smiley': '\\uD83D\\uDE03',\n 'smiley_cat': '\\uD83D\\uDE3A',\n 'smiling_imp': '\\uD83D\\uDE08',\n 'smirk': '\\uD83D\\uDE0F',\n 'smirk_cat': '\\uD83D\\uDE3C',\n 'smoking': '\\uD83D\\uDEAC',\n 'snail': '\\uD83D\\uDC0C',\n 'snake': '\\uD83D\\uDC0D',\n 'sneezing_face': '\\uD83E\\uDD27',\n 'snowboarder': '\\uD83C\\uDFC2',\n 'snowflake': '\\u2744\\uFE0F',\n 'snowman': '\\u26C4\\uFE0F',\n 'snowman_with_snow': '\\u2603\\uFE0F',\n 'sob': '\\uD83D\\uDE2D',\n 'soccer': '\\u26BD\\uFE0F',\n 'soon': '\\uD83D\\uDD1C',\n 'sos': '\\uD83C\\uDD98',\n 'sound': '\\uD83D\\uDD09',\n 'space_invader': '\\uD83D\\uDC7E',\n 'spades': '\\u2660\\uFE0F',\n 'spaghetti': '\\uD83C\\uDF5D',\n 'sparkle': '\\u2747\\uFE0F',\n 'sparkler': '\\uD83C\\uDF87',\n 'sparkles': '\\u2728',\n 'sparkling_heart': '\\uD83D\\uDC96',\n 'speak_no_evil': '\\uD83D\\uDE4A',\n 'speaker': '\\uD83D\\uDD08',\n 'speaking_head': '\\uD83D\\uDDE3',\n 'speech_balloon': '\\uD83D\\uDCAC',\n 'speedboat': '\\uD83D\\uDEA4',\n 'spider': '\\uD83D\\uDD77',\n 'spider_web': '\\uD83D\\uDD78',\n 'spiral_calendar': '\\uD83D\\uDDD3',\n 'spiral_notepad': '\\uD83D\\uDDD2',\n 'spoon': '\\uD83E\\uDD44',\n 'squid': '\\uD83E\\uDD91',\n 'stadium': '\\uD83C\\uDFDF',\n 'star': '\\u2B50\\uFE0F',\n 'star2': '\\uD83C\\uDF1F',\n 'star_and_crescent': '\\u262A\\uFE0F',\n 'star_of_david': '\\u2721\\uFE0F',\n 'stars': '\\uD83C\\uDF20',\n 'station': '\\uD83D\\uDE89',\n 'statue_of_liberty': '\\uD83D\\uDDFD',\n 'steam_locomotive': '\\uD83D\\uDE82',\n 'stew': '\\uD83C\\uDF72',\n 'stop_button': '\\u23F9',\n 'stop_sign': '\\uD83D\\uDED1',\n 'stopwatch': '\\u23F1',\n 'straight_ruler': '\\uD83D\\uDCCF',\n 'strawberry': '\\uD83C\\uDF53',\n 'stuck_out_tongue': '\\uD83D\\uDE1B',\n 'stuck_out_tongue_closed_eyes': '\\uD83D\\uDE1D',\n 'stuck_out_tongue_winking_eye': '\\uD83D\\uDE1C',\n 'studio_microphone': '\\uD83C\\uDF99',\n 'stuffed_flatbread': '\\uD83E\\uDD59',\n 'sun_behind_large_cloud': '\\uD83C\\uDF25',\n 'sun_behind_rain_cloud': '\\uD83C\\uDF26',\n 'sun_behind_small_cloud': '\\uD83C\\uDF24',\n 'sun_with_face': '\\uD83C\\uDF1E',\n 'sunflower': '\\uD83C\\uDF3B',\n 'sunglasses': '\\uD83D\\uDE0E',\n 'sunny': '\\u2600\\uFE0F',\n 'sunrise': '\\uD83C\\uDF05',\n 'sunrise_over_mountains': '\\uD83C\\uDF04',\n 'surfing_man': '\\uD83C\\uDFC4',\n 'surfing_woman': '\\uD83C\\uDFC4&zwj;\\u2640\\uFE0F',\n 'sushi': '\\uD83C\\uDF63',\n 'suspension_railway': '\\uD83D\\uDE9F',\n 'sweat': '\\uD83D\\uDE13',\n 'sweat_drops': '\\uD83D\\uDCA6',\n 'sweat_smile': '\\uD83D\\uDE05',\n 'sweet_potato': '\\uD83C\\uDF60',\n 'swimming_man': '\\uD83C\\uDFCA',\n 'swimming_woman': '\\uD83C\\uDFCA&zwj;\\u2640\\uFE0F',\n 'symbols': '\\uD83D\\uDD23',\n 'synagogue': '\\uD83D\\uDD4D',\n 'syringe': '\\uD83D\\uDC89',\n 'taco': '\\uD83C\\uDF2E',\n 'tada': '\\uD83C\\uDF89',\n 'tanabata_tree': '\\uD83C\\uDF8B',\n 'taurus': '\\u2649\\uFE0F',\n 'taxi': '\\uD83D\\uDE95',\n 'tea': '\\uD83C\\uDF75',\n 'telephone_receiver': '\\uD83D\\uDCDE',\n 'telescope': '\\uD83D\\uDD2D',\n 'tennis': '\\uD83C\\uDFBE',\n 'tent': '\\u26FA\\uFE0F',\n 'thermometer': '\\uD83C\\uDF21',\n 'thinking': '\\uD83E\\uDD14',\n 'thought_balloon': '\\uD83D\\uDCAD',\n 'ticket': '\\uD83C\\uDFAB',\n 'tickets': '\\uD83C\\uDF9F',\n 'tiger': '\\uD83D\\uDC2F',\n 'tiger2': '\\uD83D\\uDC05',\n 'timer_clock': '\\u23F2',\n 'tipping_hand_man': '\\uD83D\\uDC81&zwj;\\u2642\\uFE0F',\n 'tired_face': '\\uD83D\\uDE2B',\n 'tm': '\\u2122\\uFE0F',\n 'toilet': '\\uD83D\\uDEBD',\n 'tokyo_tower': '\\uD83D\\uDDFC',\n 'tomato': '\\uD83C\\uDF45',\n 'tongue': '\\uD83D\\uDC45',\n 'top': '\\uD83D\\uDD1D',\n 'tophat': '\\uD83C\\uDFA9',\n 'tornado': '\\uD83C\\uDF2A',\n 'trackball': '\\uD83D\\uDDB2',\n 'tractor': '\\uD83D\\uDE9C',\n 'traffic_light': '\\uD83D\\uDEA5',\n 'train': '\\uD83D\\uDE8B',\n 'train2': '\\uD83D\\uDE86',\n 'tram': '\\uD83D\\uDE8A',\n 'triangular_flag_on_post': '\\uD83D\\uDEA9',\n 'triangular_ruler': '\\uD83D\\uDCD0',\n 'trident': '\\uD83D\\uDD31',\n 'triumph': '\\uD83D\\uDE24',\n 'trolleybus': '\\uD83D\\uDE8E',\n 'trophy': '\\uD83C\\uDFC6',\n 'tropical_drink': '\\uD83C\\uDF79',\n 'tropical_fish': '\\uD83D\\uDC20',\n 'truck': '\\uD83D\\uDE9A',\n 'trumpet': '\\uD83C\\uDFBA',\n 'tulip': '\\uD83C\\uDF37',\n 'tumbler_glass': '\\uD83E\\uDD43',\n 'turkey': '\\uD83E\\uDD83',\n 'turtle': '\\uD83D\\uDC22',\n 'tv': '\\uD83D\\uDCFA',\n 'twisted_rightwards_arrows': '\\uD83D\\uDD00',\n 'two_hearts': '\\uD83D\\uDC95',\n 'two_men_holding_hands': '\\uD83D\\uDC6C',\n 'two_women_holding_hands': '\\uD83D\\uDC6D',\n 'u5272': '\\uD83C\\uDE39',\n 'u5408': '\\uD83C\\uDE34',\n 'u55b6': '\\uD83C\\uDE3A',\n 'u6307': '\\uD83C\\uDE2F\\uFE0F',\n 'u6708': '\\uD83C\\uDE37\\uFE0F',\n 'u6709': '\\uD83C\\uDE36',\n 'u6e80': '\\uD83C\\uDE35',\n 'u7121': '\\uD83C\\uDE1A\\uFE0F',\n 'u7533': '\\uD83C\\uDE38',\n 'u7981': '\\uD83C\\uDE32',\n 'u7a7a': '\\uD83C\\uDE33',\n 'umbrella': '\\u2614\\uFE0F',\n 'unamused': '\\uD83D\\uDE12',\n 'underage': '\\uD83D\\uDD1E',\n 'unicorn': '\\uD83E\\uDD84',\n 'unlock': '\\uD83D\\uDD13',\n 'up': '\\uD83C\\uDD99',\n 'upside_down_face': '\\uD83D\\uDE43',\n 'v': '\\u270C\\uFE0F',\n 'vertical_traffic_light': '\\uD83D\\uDEA6',\n 'vhs': '\\uD83D\\uDCFC',\n 'vibration_mode': '\\uD83D\\uDCF3',\n 'video_camera': '\\uD83D\\uDCF9',\n 'video_game': '\\uD83C\\uDFAE',\n 'violin': '\\uD83C\\uDFBB',\n 'virgo': '\\u264D\\uFE0F',\n 'volcano': '\\uD83C\\uDF0B',\n 'volleyball': '\\uD83C\\uDFD0',\n 'vs': '\\uD83C\\uDD9A',\n 'vulcan_salute': '\\uD83D\\uDD96',\n 'walking_man': '\\uD83D\\uDEB6',\n 'walking_woman': '\\uD83D\\uDEB6&zwj;\\u2640\\uFE0F',\n 'waning_crescent_moon': '\\uD83C\\uDF18',\n 'waning_gibbous_moon': '\\uD83C\\uDF16',\n 'warning': '\\u26A0\\uFE0F',\n 'wastebasket': '\\uD83D\\uDDD1',\n 'watch': '\\u231A\\uFE0F',\n 'water_buffalo': '\\uD83D\\uDC03',\n 'watermelon': '\\uD83C\\uDF49',\n 'wave': '\\uD83D\\uDC4B',\n 'wavy_dash': '\\u3030\\uFE0F',\n 'waxing_crescent_moon': '\\uD83C\\uDF12',\n 'wc': '\\uD83D\\uDEBE',\n 'weary': '\\uD83D\\uDE29',\n 'wedding': '\\uD83D\\uDC92',\n 'weight_lifting_man': '\\uD83C\\uDFCB\\uFE0F',\n 'weight_lifting_woman': '\\uD83C\\uDFCB\\uFE0F&zwj;\\u2640\\uFE0F',\n 'whale': '\\uD83D\\uDC33',\n 'whale2': '\\uD83D\\uDC0B',\n 'wheel_of_dharma': '\\u2638\\uFE0F',\n 'wheelchair': '\\u267F\\uFE0F',\n 'white_check_mark': '\\u2705',\n 'white_circle': '\\u26AA\\uFE0F',\n 'white_flag': '\\uD83C\\uDFF3\\uFE0F',\n 'white_flower': '\\uD83D\\uDCAE',\n 'white_large_square': '\\u2B1C\\uFE0F',\n 'white_medium_small_square': '\\u25FD\\uFE0F',\n 'white_medium_square': '\\u25FB\\uFE0F',\n 'white_small_square': '\\u25AB\\uFE0F',\n 'white_square_button': '\\uD83D\\uDD33',\n 'wilted_flower': '\\uD83E\\uDD40',\n 'wind_chime': '\\uD83C\\uDF90',\n 'wind_face': '\\uD83C\\uDF2C',\n 'wine_glass': '\\uD83C\\uDF77',\n 'wink': '\\uD83D\\uDE09',\n 'wolf': '\\uD83D\\uDC3A',\n 'woman': '\\uD83D\\uDC69',\n 'woman_artist': '\\uD83D\\uDC69&zwj;\\uD83C\\uDFA8',\n 'woman_astronaut': '\\uD83D\\uDC69&zwj;\\uD83D\\uDE80',\n 'woman_cartwheeling': '\\uD83E\\uDD38&zwj;\\u2640\\uFE0F',\n 'woman_cook': '\\uD83D\\uDC69&zwj;\\uD83C\\uDF73',\n 'woman_facepalming': '\\uD83E\\uDD26&zwj;\\u2640\\uFE0F',\n 'woman_factory_worker': '\\uD83D\\uDC69&zwj;\\uD83C\\uDFED',\n 'woman_farmer': '\\uD83D\\uDC69&zwj;\\uD83C\\uDF3E',\n 'woman_firefighter': '\\uD83D\\uDC69&zwj;\\uD83D\\uDE92',\n 'woman_health_worker': '\\uD83D\\uDC69&zwj;\\u2695\\uFE0F',\n 'woman_judge': '\\uD83D\\uDC69&zwj;\\u2696\\uFE0F',\n 'woman_juggling': '\\uD83E\\uDD39&zwj;\\u2640\\uFE0F',\n 'woman_mechanic': '\\uD83D\\uDC69&zwj;\\uD83D\\uDD27',\n 'woman_office_worker': '\\uD83D\\uDC69&zwj;\\uD83D\\uDCBC',\n 'woman_pilot': '\\uD83D\\uDC69&zwj;\\u2708\\uFE0F',\n 'woman_playing_handball': '\\uD83E\\uDD3E&zwj;\\u2640\\uFE0F',\n 'woman_playing_water_polo': '\\uD83E\\uDD3D&zwj;\\u2640\\uFE0F',\n 'woman_scientist': '\\uD83D\\uDC69&zwj;\\uD83D\\uDD2C',\n 'woman_shrugging': '\\uD83E\\uDD37&zwj;\\u2640\\uFE0F',\n 'woman_singer': '\\uD83D\\uDC69&zwj;\\uD83C\\uDFA4',\n 'woman_student': '\\uD83D\\uDC69&zwj;\\uD83C\\uDF93',\n 'woman_teacher': '\\uD83D\\uDC69&zwj;\\uD83C\\uDFEB',\n 'woman_technologist': '\\uD83D\\uDC69&zwj;\\uD83D\\uDCBB',\n 'woman_with_turban': '\\uD83D\\uDC73&zwj;\\u2640\\uFE0F',\n 'womans_clothes': '\\uD83D\\uDC5A',\n 'womans_hat': '\\uD83D\\uDC52',\n 'women_wrestling': '\\uD83E\\uDD3C&zwj;\\u2640\\uFE0F',\n 'womens': '\\uD83D\\uDEBA',\n 'world_map': '\\uD83D\\uDDFA',\n 'worried': '\\uD83D\\uDE1F',\n 'wrench': '\\uD83D\\uDD27',\n 'writing_hand': '\\u270D\\uFE0F',\n 'x': '\\u274C',\n 'yellow_heart': '\\uD83D\\uDC9B',\n 'yen': '\\uD83D\\uDCB4',\n 'yin_yang': '\\u262F\\uFE0F',\n 'yum': '\\uD83D\\uDE0B',\n 'zap': '\\u26A1\\uFE0F',\n 'zipper_mouth_face': '\\uD83E\\uDD10',\n 'zzz': '\\uD83D\\uDCA4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n };\n\n /**\n * Created by Estevao on 31-05-2015.\n */\n\n /**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\n showdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor() {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions + ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension(ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' + 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading(ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:\n // should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen(name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText(text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch(evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, '&nbsp;');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean(node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags(doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n };\n\n /**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\n showdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function writeAnchorTag(wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '&quot;');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g, writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g, writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n });\n\n // url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\n var simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n replaceLink = function replaceLink(options) {\n 'use strict';\n\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n replaceMail = function replaceMail(options, globals) {\n 'use strict';\n\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\n showdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n });\n\n showdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n });\n\n /**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\n showdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n });\n\n showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n });\n\n /**\n * Process Markdown `<pre><code>` blocks.\n */\n showdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n });\n\n /**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\n showdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof text === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm, function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, ''); // leading whitespace\n c = c.replace(/[ \\t]*$/g, ''); // trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n });\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n });\n\n /**\n * Create a full HTML document from the processed markdown\n */\n showdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n });\n\n /**\n * Convert all tabs to spaces\n */\n showdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n });\n\n showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n });\n\n /**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\n showdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n });\n\n /**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\n showdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '&lt;');\n\n // Encode <\n text = text.replace(/</g, '&lt;');\n\n // Encode >\n text = text.replace(/>/g, '&gt;');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n });\n\n /**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\n showdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n });\n\n /**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\n showdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text.replace(/&/g, '&amp;')\n // Do the angle bracket song and dance:\n .replace(/</g, '&lt;').replace(/>/g, '&gt;')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n });\n\n /**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\n showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch.replace(/(.)<\\/?code>(?=.)/g, '$1`').replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch.replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n });\n\n /**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\n showdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = options.omitExtraWLInCodeBlocks ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({ text: wholeMatch, codeblock: codeblock }) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n });\n\n showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n });\n\n /**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\n showdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function repFunc(wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n });\n\n showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n });\n\n showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = ['pre', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'table', 'dl', 'ol', 'ul', 'script', 'noscript', 'form', 'fieldset', 'iframe', 'math', 'style', 'section', 'header', 'footer', 'nav', 'article', 'aside', 'address', 'audio', 'canvas', 'figure', 'hgroup', 'output', 'video', 'p'],\n repFunc = function repFunc(wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '&lt;' + inside + '&gt;';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n });\n\n /**\n * Hash span elements that should not be parsed as markdown\n */\n showdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan(html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n });\n\n /**\n * Unhash HTML spans\n */\n showdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n });\n\n /**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\n showdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function repFunc(wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({ text: wholeMatch, codeblock: codeblock }) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n });\n\n showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = isNaN(parseInt(options.headerLevelStart)) ? 1 : parseInt(options.headerLevelStart),\n\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = options.smoothLivePreview ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = options.smoothLivePreview ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = options.noHeaderId ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = options.noHeaderId ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = options.requireSpaceBeforeHeadingText ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = options.noHeaderId ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId(m) {\n var title, prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title.replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '').replace(/¨T/g, '').replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '').toLowerCase();\n } else if (options.rawHeaderId) {\n title = title.replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '&').replace(/¨T/g, '¨').replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-').toLowerCase();\n } else {\n title = title.replace(/[^\\w]/g, '').toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + globals.hashLinkCounts[title]++;\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n });\n\n /**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\n showdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n });\n\n /**\n * Turn Markdown image shortcuts into <img> tags.\n */\n showdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64(wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag(wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag(wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText.replace(/\"/g, '&quot;')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title.replace(/\"/g, '&quot;')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = width === '*' ? 'auto' : width;\n height = height === '*' ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n });\n\n showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside(txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside(txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside(txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside(txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m) ? parseInside(m, '<strong><em>', '</em></strong>') : wm\n );\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m) ? parseInside(m, '<strong>', '</strong>') : wm\n );\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m) ? parseInside(m, '<em>', '</em>') : wm\n );\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside(txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside(txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside(txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m) ? parseInside(m, '<strong><em>', '</em></strong>') : wm\n );\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m) ? parseInside(m, '<strong>', '</strong>') : wm\n );\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m) ? parseInside(m, '<em>', '</em>') : wm\n );\n });\n }\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n });\n\n /**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\n showdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n\n function processListItems(listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = /\\n[ \\t]*\\n(?!¨0)/.test(listStr);\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = checked && checked.trim() !== '';\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || item.search(/\\n{2,}/) > -1) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber(list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists(list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = options.disableForced4SpacesIndentedSublists ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = options.disableForced4SpacesIndentedSublists ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = listType === 'ul' ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL(txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = listType === 'ul' ? 'ol' : 'ul';\n counterRxg = listType === 'ul' ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm, function (wholeMatch, list, m2) {\n var listType = m2.search(/[*+-]/g) > -1 ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n });\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm, function (wholeMatch, m1, list, m3) {\n var listType = m3.search(/[*+-]/g) > -1 ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n });\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n });\n\n /**\n * Parse metadata at the top of the document\n */\n showdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents(content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&amp;')\n // double quotes\n .replace(/\"/g, '&quot;');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n });\n\n /**\n * Remove one level of line-leading tabs or spaces\n */\n showdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n });\n\n /**\n *\n */\n showdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n });\n\n /**\n * Run extension\n */\n showdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n });\n\n /**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\n showdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n });\n\n showdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside(txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) {\n return parseInside(txt);\n });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n });\n\n /**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\n showdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function replaceFunc(wholeMatch, linkId, url, width, height, blankLines, title) {\n linkId = linkId.toLowerCase();\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n });\n\n showdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles(sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders(header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells(cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable(headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable(rawTable) {\n var i,\n tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) {\n return s.trim();\n }),\n rawStyles = tableLines[1].split('|').map(function (s) {\n return s.trim();\n }),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(tableLines[i].split('|').map(function (s) {\n return s.trim();\n }));\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {}\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n });\n\n showdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m) ? '<u>' + m + '</u>' : wm\n );\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m) ? '<u>' + m + '</u>' : wm\n );\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n });\n\n /**\n * Swap back in all the special characters we've hidden.\n */\n showdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n });\n\n showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n });\n\n showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n });\n\n showdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n });\n\n showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n });\n\n showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n });\n\n showdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n });\n\n showdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n });\n\n showdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n });\n\n showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n });\n\n showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt.split('\\n').join('\\n ').replace(/^ {4}$/gm, '').replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n });\n\n showdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n';\n }\n break;\n case 'h2':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n';\n }\n break;\n case 'h3':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n';\n }\n break;\n case 'h4':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n';\n }\n break;\n case 'h5':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n';\n }\n break;\n case 'h6':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n';\n }\n break;\n\n case 'p':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n';\n }\n break;\n\n case 'blockquote':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n';\n }\n break;\n\n case 'hr':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n';\n }\n break;\n\n case 'ol':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n';\n }\n break;\n\n case 'ul':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n';\n }\n break;\n\n case 'precode':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n';\n }\n break;\n\n case 'pre':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n';\n }\n break;\n\n case 'table':\n if (!spansOnly) {\n txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n';\n }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n });\n\n showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n });\n\n showdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n });\n\n showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n });\n\n showdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n });\n\n showdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i,\n ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n });\n\n showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n });\n\n showdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n });\n\n var root = this;\n\n // AMD Loader\n if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n 'use strict';\n\n return showdown;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n // CommonJS/nodeJS Loader\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n // Regular Browser loader\n } else {\n root.showdown = showdown;\n }\n}).call(this);\n\n//# sourceMappingURL=showdown.js.map\n\n/***/ }),\n\n/***/ \"99bU\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _preact = __webpack_require__(\"KM04\");\n\nif (false) {\n\trequire('preact/devtools');\n} else if (true && 'serviceWorker' in navigator && location.protocol === 'https:') {\n\tnavigator.serviceWorker.register(__webpack_require__.p + 'sw.js');\n}\n\nvar interopDefault = function interopDefault(m) {\n\treturn m && m.default ? m.default : m;\n};\n\nvar app = interopDefault(__webpack_require__(\"JkW7\"));\n\nif (typeof app === 'function') {\n\tvar root = document.body.firstElementChild;\n\n\tvar init = function init() {\n\t\tvar app = interopDefault(__webpack_require__(\"JkW7\"));\n\t\troot = (0, _preact.render)((0, _preact.h)(app), document.body, root);\n\t};\n\n\tif (false) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n\n/***/ }),\n\n/***/ \"JkW7\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../node_modules/preact/dist/preact.min.js\nvar preact_min = __webpack_require__(\"KM04\");\nvar preact_min_default = /*#__PURE__*/__webpack_require__.n(preact_min);\n\n// EXTERNAL MODULE: ./index.css\nvar index = __webpack_require__(\"xHuH\");\nvar index_default = /*#__PURE__*/__webpack_require__.n(index);\n\n// EXTERNAL MODULE: ./manifest.json\nvar manifest = __webpack_require__(\"ZcXo\");\nvar manifest_default = /*#__PURE__*/__webpack_require__.n(manifest);\n\n// CONCATENATED MODULE: ../node_modules/preact-router/dist/preact-router.es.js\n\n\nvar EMPTY$1 = {};\n\nfunction preact_router_es_assign(obj, props) {\n\t// eslint-disable-next-line guard-for-in\n\tfor (var i in props) {\n\t\tobj[i] = props[i];\n\t}\n\treturn obj;\n}\n\nfunction exec(url, route, opts) {\n\tvar reg = /(?:\\?([^#]*))?(#.*)?$/,\n\t c = url.match(reg),\n\t matches = {},\n\t ret;\n\tif (c && c[1]) {\n\t\tvar p = c[1].split('&');\n\t\tfor (var i = 0; i < p.length; i++) {\n\t\t\tvar r = p[i].split('=');\n\t\t\tmatches[decodeURIComponent(r[0])] = decodeURIComponent(r.slice(1).join('='));\n\t\t}\n\t}\n\turl = segmentize(url.replace(reg, ''));\n\troute = segmentize(route || '');\n\tvar max = Math.max(url.length, route.length);\n\tfor (var i$1 = 0; i$1 < max; i$1++) {\n\t\tif (route[i$1] && route[i$1].charAt(0) === ':') {\n\t\t\tvar param = route[i$1].replace(/(^\\:|[+*?]+$)/g, ''),\n\t\t\t flags = (route[i$1].match(/[+*?]+$/) || EMPTY$1)[0] || '',\n\t\t\t plus = ~flags.indexOf('+'),\n\t\t\t star = ~flags.indexOf('*'),\n\t\t\t val = url[i$1] || '';\n\t\t\tif (!val && !star && (flags.indexOf('?') < 0 || plus)) {\n\t\t\t\tret = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatches[param] = decodeURIComponent(val);\n\t\t\tif (plus || star) {\n\t\t\t\tmatches[param] = url.slice(i$1).map(decodeURIComponent).join('/');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (route[i$1] !== url[i$1]) {\n\t\t\tret = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (opts.default !== true && ret === false) {\n\t\treturn false;\n\t}\n\treturn matches;\n}\n\nfunction pathRankSort(a, b) {\n\treturn a.rank < b.rank ? 1 : a.rank > b.rank ? -1 : a.index - b.index;\n}\n\n// filter out VNodes without attributes (which are unrankeable), and add `index`/`rank` properties to be used in sorting.\nfunction prepareVNodeForRanking(vnode, index) {\n\tvnode.index = index;\n\tvnode.rank = rankChild(vnode);\n\treturn vnode.attributes;\n}\n\nfunction segmentize(url) {\n\treturn url.replace(/(^\\/+|\\/+$)/g, '').split('/');\n}\n\nfunction rankSegment(segment) {\n\treturn segment.charAt(0) == ':' ? 1 + '*+?'.indexOf(segment.charAt(segment.length - 1)) || 4 : 5;\n}\n\nfunction rank(path) {\n\treturn segmentize(path).map(rankSegment).join('');\n}\n\nfunction rankChild(vnode) {\n\treturn vnode.attributes.default ? 0 : rank(vnode.attributes.path);\n}\n\nvar customHistory = null;\n\nvar ROUTERS = [];\n\nvar subscribers = [];\n\nvar EMPTY = {};\n\nfunction isPreactElement(node) {\n\treturn node.__preactattr_ != null || typeof Symbol !== 'undefined' && node[Symbol.for('preactattr')] != null;\n}\n\nfunction setUrl(url, type) {\n\tif (type === void 0) type = 'push';\n\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t} else if (typeof history !== 'undefined' && history[type + 'State']) {\n\t\thistory[type + 'State'](null, null, url);\n\t}\n}\n\nfunction getCurrentUrl() {\n\tvar url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t} else if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t} else {\n\t\turl = typeof location !== 'undefined' ? location : EMPTY;\n\t}\n\treturn \"\" + (url.pathname || '') + (url.search || '');\n}\n\nfunction route(url, replace) {\n\tif (replace === void 0) replace = false;\n\n\tif (typeof url !== 'string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (var i = ROUTERS.length; i--;) {\n\t\tif (ROUTERS[i].canRoute(url)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tvar didRoute = false;\n\tfor (var i = 0; i < ROUTERS.length; i++) {\n\t\tif (ROUTERS[i].routeTo(url) === true) {\n\t\t\tdidRoute = true;\n\t\t}\n\t}\n\tfor (var i$1 = subscribers.length; i$1--;) {\n\t\tsubscribers[i$1](url);\n\t}\n\treturn didRoute;\n}\n\nfunction routeFromLink(node) {\n\t// only valid elements\n\tif (!node || !node.getAttribute) {\n\t\treturn;\n\t}\n\n\tvar href = node.getAttribute('href'),\n\t target = node.getAttribute('target');\n\n\t// ignore links with targets and non-path URLs\n\tif (!href || !href.match(/^\\//g) || target && !target.match(/^_?self$/i)) {\n\t\treturn;\n\t}\n\n\t// attempt to route, if no match simply cede control to browser\n\treturn route(href);\n}\n\nfunction handleLinkClick(e) {\n\tif (e.button == 0) {\n\t\trouteFromLink(e.currentTarget || e.target || this);\n\t\treturn prevent(e);\n\t}\n}\n\nfunction prevent(e) {\n\tif (e) {\n\t\tif (e.stopImmediatePropagation) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t\tif (e.stopPropagation) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\te.preventDefault();\n\t}\n\treturn false;\n}\n\nfunction delegateLinkHandler(e) {\n\t// ignore events the browser takes care of already:\n\tif (e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button !== 0) {\n\t\treturn;\n\t}\n\n\tvar t = e.target;\n\tdo {\n\t\tif (String(t.nodeName).toUpperCase() === 'A' && t.getAttribute('href') && isPreactElement(t)) {\n\t\t\tif (t.hasAttribute('native')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if link is handled by the router, prevent browser defaults\n\t\t\tif (routeFromLink(t)) {\n\t\t\t\treturn prevent(e);\n\t\t\t}\n\t\t}\n\t} while (t = t.parentNode);\n}\n\nvar eventListenersInitialized = false;\n\nfunction initEventListeners() {\n\tif (eventListenersInitialized) {\n\t\treturn;\n\t}\n\n\tif (typeof addEventListener === 'function') {\n\t\tif (!customHistory) {\n\t\t\taddEventListener('popstate', function () {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\nvar preact_router_es_Router = function (Component$$1) {\n\tfunction Router(props) {\n\t\tComponent$$1.call(this, props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tif (Component$$1) Router.__proto__ = Component$$1;\n\tRouter.prototype = Object.create(Component$$1 && Component$$1.prototype);\n\tRouter.prototype.constructor = Router;\n\n\tRouter.prototype.shouldComponentUpdate = function shouldComponentUpdate(props) {\n\t\tif (props.static !== true) {\n\t\t\treturn true;\n\t\t}\n\t\treturn props.url !== this.props.url || props.onChange !== this.props.onChange;\n\t};\n\n\t/** Check if the given URL can be matched against any children */\n\tRouter.prototype.canRoute = function canRoute(url) {\n\t\treturn this.getMatchingChildren(this.props.children, url, false).length > 0;\n\t};\n\n\t/** Re-render children with a new URL to match against. */\n\tRouter.prototype.routeTo = function routeTo(url) {\n\t\tthis._didRoute = false;\n\t\tthis.setState({ url: url });\n\n\t\t// if we're in the middle of an update, don't synchronously re-route.\n\t\tif (this.updating) {\n\t\t\treturn this.canRoute(url);\n\t\t}\n\n\t\tthis.forceUpdate();\n\t\treturn this._didRoute;\n\t};\n\n\tRouter.prototype.componentWillMount = function componentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidMount = function componentDidMount() {\n\t\tvar this$1 = this;\n\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen(function (location) {\n\t\t\t\tthis$1.routeTo(\"\" + (location.pathname || '') + (location.search || ''));\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.componentWillUnmount = function componentWillUnmount() {\n\t\tif (typeof this.unlisten === 'function') {\n\t\t\tthis.unlisten();\n\t\t}\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t};\n\n\tRouter.prototype.componentWillUpdate = function componentWillUpdate() {\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidUpdate = function componentDidUpdate() {\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.getMatchingChildren = function getMatchingChildren(children, url, invoke) {\n\t\treturn children.filter(prepareVNodeForRanking).sort(pathRankSort).map(function (vnode) {\n\t\t\tvar matches = exec(url, vnode.attributes.path, vnode.attributes);\n\t\t\tif (matches) {\n\t\t\t\tif (invoke !== false) {\n\t\t\t\t\tvar newProps = { url: url, matches: matches };\n\t\t\t\t\tpreact_router_es_assign(newProps, matches);\n\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\treturn Object(preact_min[\"cloneElement\"])(vnode, newProps);\n\t\t\t\t}\n\t\t\t\treturn vnode;\n\t\t\t}\n\t\t}).filter(Boolean);\n\t};\n\n\tRouter.prototype.render = function render(ref, ref$1) {\n\t\tvar children = ref.children;\n\t\tvar onChange = ref.onChange;\n\t\tvar url = ref$1.url;\n\n\t\tvar active = this.getMatchingChildren(children, url, true);\n\n\t\tvar current = active[0] || null;\n\t\tthis._didRoute = !!current;\n\n\t\tvar previous = this.previousUrl;\n\t\tif (url !== previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange === 'function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl: url,\n\t\t\t\t\tprevious: previous,\n\t\t\t\t\tactive: active,\n\t\t\t\t\tcurrent: current\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t};\n\n\treturn Router;\n}(preact_min[\"Component\"]);\n\nvar preact_router_es_Link = function Link(props) {\n\treturn Object(preact_min[\"h\"])('a', preact_router_es_assign({ onClick: handleLinkClick }, props));\n};\n\nvar preact_router_es_Route = function Route(props) {\n\treturn Object(preact_min[\"h\"])(props.component, props);\n};\n\npreact_router_es_Router.subscribers = subscribers;\npreact_router_es_Router.getCurrentUrl = getCurrentUrl;\npreact_router_es_Router.route = route;\npreact_router_es_Router.Router = preact_router_es_Router;\npreact_router_es_Router.Route = preact_router_es_Route;\npreact_router_es_Router.Link = preact_router_es_Link;\n\n/* harmony default export */ var preact_router_es = (preact_router_es_Router);\n//# sourceMappingURL=preact-router.es.js.map\n// EXTERNAL MODULE: ./pages/home.css\nvar home = __webpack_require__(\"36Ou\");\nvar home_default = /*#__PURE__*/__webpack_require__.n(home);\n\n// EXTERNAL MODULE: ./components/panel.css\nvar panel = __webpack_require__(\"P9k+\");\nvar panel_default = /*#__PURE__*/__webpack_require__.n(panel);\n\n// CONCATENATED MODULE: ./components/panel.js\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\n\n\n\nvar panel_Panel = function (_Component) {\n\t_inherits(Panel, _Component);\n\n\tfunction Panel() {\n\t\t_classCallCheck(this, Panel);\n\n\t\treturn _possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tPanel.prototype.render = function render() {\n\t\tvar title = null;\n\t\tif (this.props.title !== undefined) {\n\t\t\ttitle = Object(preact_min[\"h\"])(\n\t\t\t\t\"h3\",\n\t\t\t\tnull,\n\t\t\t\tthis.props.title\n\t\t\t);\n\t\t}\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t\"div\",\n\t\t\t{ \"class\": panel_default.a.panel },\n\t\t\ttitle,\n\t\t\tthis.props.children\n\t\t);\n\t};\n\n\treturn Panel;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./components/split.css\nvar split = __webpack_require__(\"1EpE\");\nvar split_default = /*#__PURE__*/__webpack_require__.n(split);\n\n// CONCATENATED MODULE: ./components/split.js\n\n\nfunction split__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction split__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; }\n\nfunction split__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; }\n\n\n\n\nvar split_Split = function (_Component) {\n split__inherits(Split, _Component);\n\n function Split() {\n split__classCallCheck(this, Split);\n\n return split__possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Split.prototype.render = function render() {\n var title = null;\n if (this.props.title !== undefined) {\n title = Object(preact_min[\"h\"])(\n \"h2\",\n null,\n this.props.title\n );\n }\n\n var children = void 0;\n if (Array.isArray(this.props.children)) {\n children = this.props.children.map(function (element) {\n return Object(preact_min[\"h\"])(\n \"div\",\n { \"class\": split_default.a.splitchild },\n element\n );\n });\n } else {\n children = Object(preact_min[\"h\"])(\n \"div\",\n { \"class\": split_default.a.splitchild },\n this.props.children\n );\n }\n return Object(preact_min[\"h\"])(\n \"div\",\n { \"class\": split_default.a.split },\n title,\n Object(preact_min[\"h\"])(\n \"div\",\n { \"class\": split_default.a.splitparent },\n children\n )\n );\n };\n\n return Split;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./components/todo.css\nvar todo = __webpack_require__(\"tO1d\");\nvar todo_default = /*#__PURE__*/__webpack_require__.n(todo);\n\n// CONCATENATED MODULE: ./components/todo.js\n\n\nfunction todo__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction todo__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; }\n\nfunction todo__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; }\n\n\n\n\nvar todo_Todo = function (_Component) {\n\ttodo__inherits(Todo, _Component);\n\n\tfunction Todo() {\n\t\ttodo__classCallCheck(this, Todo);\n\n\t\treturn todo__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tTodo.prototype.render = function render() {\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t\"span\",\n\t\t\t{ \"class\": todo_default.a.todo },\n\t\t\tthis.props.children\n\t\t);\n\t};\n\n\treturn Todo;\n}(preact_min[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./pages/home.js\n\n\nfunction home__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction home__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; }\n\nfunction home__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; }\n\n\n\n\n\n\n\nvar _ref = Object(preact_min[\"h\"])(\n 'h1',\n null,\n 'Indice'\n);\n\nvar _ref2 = Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Argomenti' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: '/fisica' },\n 'Fisica'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Appunti delle ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'http://personale.unimore.it/rubrica/contenutiad/brunetti/2019/58025/N0/N0/9999' },\n 'lezioni di Fisica'\n ),\n ' del ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/didattica/mlaurea.html?ID=54' },\n 'corso triennale di Informatica'\n ),\n ' all\\'',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/' },\n 'Unimore'\n ),\n ', tenute dalla ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://personale.unimore.it/rubrica/dettaglio/brunetti' },\n 'Prof.ssa Rossella Brunetti'\n ),\n ' nel primo semestre dell\\'Anno Accademico 2019/2020.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n todo_Todo,\n null,\n 'Work in progress'\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://github.com/Steffo99/appunti-universitari/tree/master/2019_SistemiOperativi/Arzigogoli' },\n 'Sistemi Operativi'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Soluzioni agli ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://weblab.ing.unimore.it/people/andreolini/didattica/sistemi-operativi/index.html#arzigogoli' },\n 'Arzigogoli'\n ),\n ' proposti dal ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://personale.unimore.it/rubrica/dettaglio/andreolini' },\n 'Prof. Mauro Andreolini'\n ),\n ' durante le ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://personale.unimore.it/rubrica/contenutiad/andreolini/2019/58027/N0/N0/9999' },\n 'lezioni di Sistemi Operativi'\n ),\n ' del ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/didattica/mlaurea.html?ID=54' },\n 'corso triennale di Informatica'\n ),\n ' all\\'',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/' },\n 'Unimore'\n ),\n ' tenutesi nel primo semestre dell\\'Anno Accademico 2019/2020.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://github.com/Steffo99/appunti-universitari/tree/master/2018_AlgoritmiEStruttureDati' },\n 'Algoritmi e Strutture Dati'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Appunti delle ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://personale.unimore.it/rubrica/contenutiad/mmontangero/2018/58133/N0/N0/9999' },\n 'lezioni di Algoritmi e Strutture Dati'\n ),\n ' del ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/didattica/mlaurea.html?ID=54' },\n 'corso triennale di Informatica'\n ),\n ' all\\'',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/' },\n 'Unimore'\n ),\n ', tenute dalla ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://personale.unimore.it/rubrica/dettaglio/mmontangero' },\n 'Prof.ssa Manuela Montangero'\n ),\n ' nel secondo semestre dell\\'Anno Accademico 2018/2019.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: '/vldigeometria' },\n 'Videolezioni di Geometria'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Ottime videolezioni di Geometria con licenza ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://creativecommons.org/licenses/by-nc-sa/4.0/' },\n 'CC BY-NC-SA 4.0'\n ),\n ' che ho trovato sul ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://dolly.fim.unimore.it/2018/course/view.php?id=14#section-0' },\n 'portale Dolly 2018'\n ),\n ' dell\\'',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/' },\n 'Unimore'\n ),\n '.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: '/mingwinstall' },\n 'Come installare MinGW'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un breve tutorial con immagini su come installare e configurare ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.wikipedia.org/wiki/MinGW' },\n 'MinGW'\n ),\n ' per compilare programmi C e C++ su Windows.'\n )\n )\n);\n\nvar _ref3 = Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Altri collegamenti utili' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://t.me/unimoreinfo' },\n '@unimoreinfo'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il gruppo ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://telegram.org/' },\n 'Telegram'\n ),\n ' del corso di Informatica dell\\'Unimore!'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://calendar.google.com/calendar?cid=MmYza2o2M3VuZWQ1cmZqaGpmOGY0MWFrNmdAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ' },\n 'Calendario Lezioni'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Calendario Google ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n 'quasi'\n ),\n ' sempre aggiornato delle lezioni e degli esami del secondo anno dell\\'',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://www.unimore.it/' },\n 'Unimore'\n ),\n ' durante l\\'Anno Accademico 2019/2020.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: 'http://erre2.fermitech.info/dashboard' },\n 'Erre2'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Portale contenente appunti e riassunti mantenuto da ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://github.com/LBindustries' },\n 'Lorenzo Balugani'\n ),\n '.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://github.com/vezzalinistefano/Appunti-Algoritmi' },\n 'vezzalinistefano/Appunti-Algoritmi'\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Appunti di Algoritmi e Strutture Dati mantenuti da ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://github.com/vezzalinistefano/' },\n 'Vezzalini Stefano'\n ),\n '.'\n )\n )\n);\n\nvar home_Home = function (_Component) {\n home__inherits(Home, _Component);\n\n function Home() {\n home__classCallCheck(this, Home);\n\n return home__possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Home.prototype.render = function render() {\n return Object(preact_min[\"h\"])(\n 'div',\n { style: home_default.a.home },\n _ref,\n _ref2,\n _ref3\n );\n };\n\n return Home;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./pages/fisica.css\nvar fisica = __webpack_require__(\"0lnO\");\nvar fisica_default = /*#__PURE__*/__webpack_require__.n(fisica);\n\n// EXTERNAL MODULE: ./components/latex.css\nvar latex = __webpack_require__(\"+uq9\");\nvar latex_default = /*#__PURE__*/__webpack_require__.n(latex);\n\n// CONCATENATED MODULE: ./components/latex.js\n\n\nfunction latex__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction latex__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; }\n\nfunction latex__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; }\n\n\n\n\nvar latex_Latex = function (_Component) {\n\tlatex__inherits(Latex, _Component);\n\n\tfunction Latex() {\n\t\tlatex__classCallCheck(this, Latex);\n\n\t\treturn latex__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tLatex.prototype.render = function render() {\n\t\tvar equation = '{\\\\color{White} ' + this.props.children + ' }';\n\t\treturn Object(preact_min[\"h\"])('img', { src: 'https://latex.codecogs.com/png.latex?' + equation,\n\t\t\talt: this.props.children,\n\t\t\ttitle: this.props.children,\n\t\t\t'class': latex_default.a.latex\n\t\t});\n\t};\n\n\treturn Latex;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./components/plus.css\nvar plus = __webpack_require__(\"ddTt\");\nvar plus_default = /*#__PURE__*/__webpack_require__.n(plus);\n\n// CONCATENATED MODULE: ./components/plus.js\n\n\nfunction plus__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction plus__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; }\n\nfunction plus__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; }\n\n\n\n\nvar plus_Plus = function (_Component) {\n\tplus__inherits(Plus, _Component);\n\n\tfunction Plus() {\n\t\tplus__classCallCheck(this, Plus);\n\n\t\treturn plus__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tPlus.prototype.render = function render() {\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t\"span\",\n\t\t\t{ \"class\": plus_default.a.plus },\n\t\t\tthis.props.children\n\t\t);\n\t};\n\n\treturn Plus;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./components/minus.css\nvar minus = __webpack_require__(\"MeW5\");\nvar minus_default = /*#__PURE__*/__webpack_require__.n(minus);\n\n// CONCATENATED MODULE: ./components/minus.js\n\n\nfunction minus__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction minus__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; }\n\nfunction minus__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; }\n\n\n\n\nvar minus_Minus = function (_Component) {\n\tminus__inherits(Minus, _Component);\n\n\tfunction Minus() {\n\t\tminus__classCallCheck(this, Minus);\n\n\t\treturn minus__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tMinus.prototype.render = function render() {\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t\"span\",\n\t\t\t{ \"class\": minus_default.a.minus },\n\t\t\tthis.props.children\n\t\t);\n\t};\n\n\treturn Minus;\n}(preact_min[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./pages/fisica.js\nvar _templateObject = _taggedTemplateLiteralLoose(['\\x0Bec{v} = \\x0Bec{v}_x + \\x0Bec{v}_y'], ['\\\\vec{v} = \\\\vec{v}_x + \\\\vec{v}_y']),\n _templateObject2 = _taggedTemplateLiteralLoose(['left | \\x0Bec{v}_x \\right | = left | \\x0Bec{v} \\right | sin alpha'], ['\\\\left | \\\\vec{v}_x \\\\right | = \\\\left | \\\\vec{v} \\\\right | \\\\sin \\\\alpha']),\n _templateObject3 = _taggedTemplateLiteralLoose(['left | \\x0Bec{v}_y \\right | = left | \\x0Bec{v} \\right | cos alpha'], ['\\\\left | \\\\vec{v}_y \\\\right | = \\\\left | \\\\vec{v} \\\\right | \\\\cos \\\\alpha']),\n _templateObject4 = _taggedTemplateLiteralLoose(['\\x0Bec{v} + \\x0Bec{w} = (\\x0Bec{v}_x + \\x0Bec{w}_x) + (\\x0Bec{v}_y + \\x0Bec{w}_y)'], ['\\\\vec{v} + \\\\vec{w} = (\\\\vec{v}_x + \\\\vec{w}_x) + (\\\\vec{v}_y + \\\\vec{w}_y)']),\n _templateObject5 = _taggedTemplateLiteralLoose(['\\x0Bec{v} - \\x0Bec{w} = (\\x0Bec{v}_x - \\x0Bec{w}_x) + (\\x0Bec{v}_y - \\x0Bec{w}_y)'], ['\\\\vec{v} - \\\\vec{w} = (\\\\vec{v}_x - \\\\vec{w}_x) + (\\\\vec{v}_y - \\\\vec{w}_y)']),\n _templateObject6 = _taggedTemplateLiteralLoose(['\\x0Bec{v} cdot \\x0Bec{w} = left | \\x0Bec{v} \\right | left | \\x0Bec{w} \\right | cos alpha'], ['\\\\vec{v} \\\\cdot \\\\vec{w} = \\\\left | \\\\vec{v} \\\\right | \\\\left | \\\\vec{w} \\\\right | \\\\cos \\\\alpha']),\n _templateObject7 = _taggedTemplateLiteralLoose(['\\x0Bec{a}'], ['\\\\vec{a}']),\n _templateObject8 = _taggedTemplateLiteralLoose(['\\x0Bec{b}'], ['\\\\vec{b}']),\n _templateObject9 = _taggedTemplateLiteralLoose(['\\x0Bec{c} = \\x0Bec{a} \\times \\x0Bec{b}'], ['\\\\vec{c} = \\\\vec{a} \\\\times \\\\vec{b}']),\n _templateObject10 = _taggedTemplateLiteralLoose(['left | \\x0Bec{c} \\right | = left | \\x0Bec{a} \\right | cdot left | \\x0Bec{b} \\right | cdot sin(alpha)'], ['\\\\left | \\\\vec{c} \\\\right | = \\\\left | \\\\vec{a} \\\\right | \\\\cdot \\\\left | \\\\vec{b} \\\\right | \\\\cdot \\\\sin(\\\\alpha)']),\n _templateObject11 = _taggedTemplateLiteralLoose(['Sigma \\x0Bec{F} = 0 Longleftrightarrow Delta v = 0'], ['\\\\Sigma \\\\vec{F} = 0 \\\\Longleftrightarrow \\\\Delta v = 0']),\n _templateObject12 = _taggedTemplateLiteralLoose(['Sigma \\x0Bec{F} = m \\x0Bec{a}'], ['\\\\Sigma \\\\vec{F} = m \\\\vec{a}']),\n _templateObject13 = _taggedTemplateLiteralLoose(['\\x0Bec{F}_{21} = -\\x0Bec{F}_{12}'], ['\\\\vec{F}_{21} = -\\\\vec{F}_{12}']),\n _templateObject14 = _taggedTemplateLiteralLoose(['left | \\x0Bec{F} \\right | = G \\frac{m_1 m_2}{s^2}'], ['\\\\left | \\\\vec{F} \\\\right | = G \\\\frac{m_1 m_2}{s^2}']),\n _templateObject15 = _taggedTemplateLiteralLoose(['G = 6.67 cdot 10^{-11} \\frac{N m^2}{{kg}^2}'], ['G = 6.67 \\\\cdot 10^{-11} \\\\frac{N m^2}{{kg}^2}']),\n _templateObject16 = _taggedTemplateLiteralLoose(['left | \\x0Bec{F} \\right | = g m'], ['\\\\left | \\\\vec{F} \\\\right | = g m']),\n _templateObject17 = _taggedTemplateLiteralLoose(['g = 9.81 \\frac{m}{s^2}'], ['g = 9.81 \\\\frac{m}{s^2}']),\n _templateObject18 = _taggedTemplateLiteralLoose(['g_{luna} = 1.62 \\frac{m}{s^2}'], ['g_{luna} = 1.62 \\\\frac{m}{s^2}']),\n _templateObject19 = _taggedTemplateLiteralLoose(['g_{marte} = 3.71 \\frac{m}{s^2}'], ['g_{marte} = 3.71 \\\\frac{m}{s^2}']),\n _templateObject20 = _taggedTemplateLiteralLoose(['left | \\x0Bec{F} \\right | leq mu_{s} left | \\x0Bec{F}_{normale} \\right |'], ['\\\\left | \\\\vec{F} \\\\right | \\\\leq \\\\mu_{s} \\\\left | \\\\vec{F}_{normale} \\\\right |']),\n _templateObject21 = _taggedTemplateLiteralLoose(['left | \\x0Bec{F} \\right | leq mu_{d} left | \\x0Bec{F}_{normale} \\right |'], ['\\\\left | \\\\vec{F} \\\\right | \\\\leq \\\\mu_{d} \\\\left | \\\\vec{F}_{normale} \\\\right |']),\n _templateObject22 = _taggedTemplateLiteralLoose(['F = -k x'], ['F = -k x']),\n _templateObject23 = _taggedTemplateLiteralLoose(['Delta \\x0Bec{s} = \\x0Bec{s}(fine) - \\x0Bec{s}(inizio)'], ['\\\\Delta \\\\vec{s} = \\\\vec{s}(fine) - \\\\vec{s}(inizio)']),\n _templateObject24 = _taggedTemplateLiteralLoose(['\\x0Bec{v} = \\frac{Delta \\x0Bec{s}}{Delta t}'], ['\\\\vec{v} = \\\\frac{\\\\Delta \\\\vec{s}}{\\\\Delta t}']),\n _templateObject25 = _taggedTemplateLiteralLoose(['\\x0Bec{v} = lim_{Delta t \\to 0} \\frac{Delta \\x0Bec{s}}{Delta t} = \\frac{d \\x0Bec{s}}{dt}'], ['\\\\vec{v} = \\\\lim_{\\\\Delta t \\\\to 0} \\\\frac{\\\\Delta \\\\vec{s}}{\\\\Delta t} = \\\\frac{d \\\\vec{s}}{dt}']),\n _templateObject26 = _taggedTemplateLiteralLoose(['\\x0Bec{a} = \\frac{Delta \\x0Bec{v}}{Delta t}'], ['\\\\vec{a} = \\\\frac{\\\\Delta \\\\vec{v}}{\\\\Delta t}']),\n _templateObject27 = _taggedTemplateLiteralLoose(['\\x0Bec{a} = lim_{Delta v \\to 0} \\frac{Delta \\x0Bec{v}}{Delta t} = \\frac{d \\x0Bec{v}}{d t} = \\frac{d^2 \\x0Bec{s}}{d t^2}'], ['\\\\vec{a} = \\\\lim_{\\\\Delta v \\\\to 0} \\\\frac{\\\\Delta \\\\vec{v}}{\\\\Delta t} = \\\\frac{d \\\\vec{v}}{d t} = \\\\frac{d^2 \\\\vec{s}}{d t^2}']),\n _templateObject28 = _taggedTemplateLiteralLoose(['\\x0Bec{p} = m \\x0Bec{v}'], ['\\\\vec{p} = m \\\\vec{v}']),\n _templateObject29 = _taggedTemplateLiteralLoose(['Sigma \\x0Bec{F} = 0 Longleftrightarrow Delta \\x0Bec{p} = 0'], ['\\\\Sigma \\\\vec{F} = 0 \\\\Longleftrightarrow \\\\Delta \\\\vec{p} = 0']),\n _templateObject30 = _taggedTemplateLiteralLoose(['s(t) = v cdot Delta t + s(0)'], ['s(t) = v \\\\cdot \\\\Delta t + s(0)']),\n _templateObject31 = _taggedTemplateLiteralLoose(['v(t) = k'], ['v(t) = k']),\n _templateObject32 = _taggedTemplateLiteralLoose(['a(t) = 0'], ['a(t) = 0']),\n _templateObject33 = _taggedTemplateLiteralLoose(['s(t) = \\frac{1}{2} a cdot (Delta t)^2 + v(0) cdot (Delta t) + s(0)'], ['s(t) = \\\\frac{1}{2} a \\\\cdot (\\\\Delta t)^2 + v(0) \\\\cdot (\\\\Delta t) + s(0)']),\n _templateObject34 = _taggedTemplateLiteralLoose(['v(t) = a Delta t + v(0)'], ['v(t) = a \\\\Delta t + v(0)']),\n _templateObject35 = _taggedTemplateLiteralLoose(['a(t) = k'], ['a(t) = k']),\n _templateObject36 = _taggedTemplateLiteralLoose(['omega = \\frac{2 pi}{T}'], ['\\\\omega = \\\\frac{2 \\\\pi}{T}']),\n _templateObject37 = _taggedTemplateLiteralLoose(['s(t) = A sin (omega cdot t + phi)'], ['s(t) = A \\\\sin (\\\\omega \\\\cdot t + \\\\phi)']),\n _templateObject38 = _taggedTemplateLiteralLoose(['\\frac{pi}{2}'], ['\\\\frac{\\\\pi}{2}']),\n _templateObject39 = _taggedTemplateLiteralLoose(['v(t) = A sin (omega cdot t + phi + \\frac{pi}{2})'], ['v(t) = A \\\\sin (\\\\omega \\\\cdot t + \\\\phi + \\\\frac{\\\\pi}{2})']),\n _templateObject40 = _taggedTemplateLiteralLoose(['pi'], ['\\\\pi']),\n _templateObject41 = _taggedTemplateLiteralLoose(['a(t) = A sin (omega cdot t + phi + pi)'], ['a(t) = A \\\\sin (\\\\omega \\\\cdot t + \\\\phi + \\\\pi)']),\n _templateObject42 = _taggedTemplateLiteralLoose(['phi'], ['\\\\phi']),\n _templateObject43 = _taggedTemplateLiteralLoose(['v = \\frac{Delta s}{t} = \\frac{2 pi cdot r}{T} = omega r'], ['v = \\\\frac{\\\\Delta s}{t} = \\\\frac{2 \\\\pi \\\\cdot r}{T} = \\\\omega r']),\n _templateObject44 = _taggedTemplateLiteralLoose(['a = \\frac{v^2}{r} = r cdot omega^2 = v cdot omega'], ['a = \\\\frac{v^2}{r} = r \\\\cdot \\\\omega^2 = v \\\\cdot \\\\omega']),\n _templateObject45 = _taggedTemplateLiteralLoose(['F = m cdot a'], ['F = m \\\\cdot a']),\n _templateObject46 = _taggedTemplateLiteralLoose(['W = \\x0Bec{F} cdot \\x0Bec{s} = F cdot Delta s cdot cos(alpha )'], ['W = \\\\vec{F} \\\\cdot \\\\vec{s} = F \\\\cdot \\\\Delta s \\\\cdot cos(\\\\alpha )']),\n _templateObject47 = _taggedTemplateLiteralLoose(['E_c = \\frac{1}{2} m v^2'], ['E_c = \\\\frac{1}{2} m v^2']),\n _templateObject48 = _taggedTemplateLiteralLoose(['Delta E_c = W'], ['\\\\Delta E_c = W']),\n _templateObject49 = _taggedTemplateLiteralLoose(['E_{p_g} = m cdot g cdot h'], ['E_{p_g} = m \\\\cdot g \\\\cdot h']),\n _templateObject50 = _taggedTemplateLiteralLoose(['E_{p_e} = \\frac{1}{2} k x^2'], ['E_{p_e} = \\\\frac{1}{2} k x^2']),\n _templateObject51 = _taggedTemplateLiteralLoose(['E = E_k + E_p'], ['E = E_k + E_p']),\n _templateObject52 = _taggedTemplateLiteralLoose(['P = \\frac{Delta E}{Delta t}'], ['P = \\\\frac{\\\\Delta E}{\\\\Delta t}']),\n _templateObject53 = _taggedTemplateLiteralLoose(['C_{elettrone} = 1.602 cdot 10^{-19}'], ['C_{elettrone} = 1.602 \\\\cdot 10^{-19}']),\n _templateObject54 = _taggedTemplateLiteralLoose(['left | \\x0Bec{F}_{elettrica} \\right | = \\frac{-k cdot q_1 cdot q_2}{s^2}'], ['\\\\left | \\\\vec{F}_{elettrica} \\\\right | = \\\\frac{-k \\\\cdot q_1 \\\\cdot q_2}{s^2}']),\n _templateObject55 = _taggedTemplateLiteralLoose(['k'], ['k']),\n _templateObject56 = _taggedTemplateLiteralLoose(['k = 8.99 cdot 10^9 \\frac{N cdot m^2}{C^2}'], ['k = 8.99 \\\\cdot 10^9 \\\\frac{N \\\\cdot m^2}{C^2}']),\n _templateObject57 = _taggedTemplateLiteralLoose(['epsilon_0'], ['\\\\epsilon_0']),\n _templateObject58 = _taggedTemplateLiteralLoose(['k = \\frac{1}{4 pi cdot epsilon_0}'], ['k = \\\\frac{1}{4 \\\\pi \\\\cdot \\\\epsilon_0}']),\n _templateObject59 = _taggedTemplateLiteralLoose(['left | \\x0Bec{F}_{elettrica} \\right | = \\frac{q_1 cdot q_2}{4 pi cdot epsilon_0 cdot s^2}'], ['\\\\left | \\\\vec{F}_{elettrica} \\\\right | = \\\\frac{q_1 \\\\cdot q_2}{4 \\\\pi \\\\cdot \\\\epsilon_0 \\\\cdot s^2}']),\n _templateObject60 = _taggedTemplateLiteralLoose(['\\x0Bec{E} = \\frac{\\x0Bec{F}_{elettrica}}{q} = \\frac{-k cdot q}{s^2}'], ['\\\\vec{E} = \\\\frac{\\\\vec{F}_{elettrica}}{q} = \\\\frac{-k \\\\cdot q}{s^2}']),\n _templateObject61 = _taggedTemplateLiteralLoose(['Phi_E = \\x0Bec{E} cdot \\x0Bec{A}'], ['\\\\Phi_E = \\\\vec{E} \\\\cdot \\\\vec{A}']),\n _templateObject62 = _taggedTemplateLiteralLoose(['Phi_E = \\x0Bec{E} cdot \\x0Bec{A} = E_perp cdot A cdot cos(alpha)'], ['\\\\Phi_E = \\\\vec{E} \\\\cdot \\\\vec{A} = E_\\\\perp \\\\cdot A \\\\cdot \\\\cos(\\\\alpha)']),\n _templateObject63 = _taggedTemplateLiteralLoose(['Phi_E = 4 pi cdot k cdot q = \\frac{q}{epsilon_0}'], ['\\\\Phi_E = 4 \\\\pi \\\\cdot k \\\\cdot q = \\\\frac{q}{\\\\epsilon_0}']),\n _templateObject64 = _taggedTemplateLiteralLoose(['U_e'], ['U_e']),\n _templateObject65 = _taggedTemplateLiteralLoose(['V = \\frac{U_e}{q}'], ['V = \\\\frac{U_e}{q}']),\n _templateObject66 = _taggedTemplateLiteralLoose(['V'], ['V']),\n _templateObject67 = _taggedTemplateLiteralLoose(['I = \\frac{Delta q}{Delta t}'], ['I = \\\\frac{\\\\Delta q}{\\\\Delta t}']),\n _templateObject68 = _taggedTemplateLiteralLoose(['A'], ['A']),\n _templateObject69 = _taggedTemplateLiteralLoose(['P = \\frac{Delta U_e}{Delta t} = I cdot Delta V = I^2 cdot R = \\frac{(Delta V)^2}{R}'], ['P = \\\\frac{\\\\Delta U_e}{\\\\Delta t} = I \\\\cdot \\\\Delta V = I^2 \\\\cdot R = \\\\frac{(\\\\Delta V)^2}{R}']),\n _templateObject70 = _taggedTemplateLiteralLoose(['V = R cdot I'], ['V = R \\\\cdot I']),\n _templateObject71 = _taggedTemplateLiteralLoose(['R'], ['R']),\n _templateObject72 = _taggedTemplateLiteralLoose(['Omega'], ['\\\\Omega']),\n _templateObject73 = _taggedTemplateLiteralLoose(['R = \\rho \\frac{L_{unghezza}}{A_{rea}}'], ['R = \\\\rho \\\\frac{L_{unghezza}}{A_{rea}}']),\n _templateObject74 = _taggedTemplateLiteralLoose(['\\rho'], ['\\\\rho']),\n _templateObject75 = _taggedTemplateLiteralLoose(['\\rho = \\rho_0 (1 + alpha(T - T_0))'], ['\\\\rho = \\\\rho_0 (1 + \\\\alpha(T - T_0))']),\n _templateObject76 = _taggedTemplateLiteralLoose(['C = \\frac{q_{massima}}{Delta V}'], ['C = \\\\frac{q_{massima}}{\\\\Delta V}']),\n _templateObject77 = _taggedTemplateLiteralLoose(['C_{nuova} = kappa cdot \\frac{epsilon_0 cdot A}{s}'], ['C_{nuova} = \\\\kappa \\\\cdot \\\\frac{\\\\epsilon_0 \\\\cdot A}{s}']),\n _templateObject78 = _taggedTemplateLiteralLoose(['kappa'], ['\\\\kappa']),\n _templateObject79 = _taggedTemplateLiteralLoose(['d'], ['d']),\n _templateObject80 = _taggedTemplateLiteralLoose(['Fa'], ['Fa']),\n _templateObject81 = _taggedTemplateLiteralLoose(['R_{serie} = sum_{i=1}^{n} R_i'], ['R_{serie} = \\\\sum_{i=1}^{n} R_i']),\n _templateObject82 = _taggedTemplateLiteralLoose(['R_{parallelo} = \\frac{1}{sum_{i=1}^{n} \\frac{1}{R_i}}'], ['R_{parallelo} = \\\\frac{1}{\\\\sum_{i=1}^{n} \\\\frac{1}{R_i}}']),\n _templateObject83 = _taggedTemplateLiteralLoose(['C_{serie} = \\frac{1}{sum_{i=1}^{n} \\frac{1}{C_i}}'], ['C_{serie} = \\\\frac{1}{\\\\sum_{i=1}^{n} \\\\frac{1}{C_i}}']),\n _templateObject84 = _taggedTemplateLiteralLoose(['C_{parallelo} = sum_{i=1}^{n} C_n'], ['C_{parallelo} = \\\\sum_{i=1}^{n} C_n']),\n _templateObject85 = _taggedTemplateLiteralLoose(['mu_0 = 4 pi cdot 10^{-7} \\frac{H}{m}'], ['\\\\mu_0 = 4 \\\\pi \\\\cdot 10^{-7} \\\\frac{H}{m}']),\n _templateObject86 = _taggedTemplateLiteralLoose(['\\frac{N}{A^2}'], ['\\\\frac{N}{A^2}']),\n _templateObject87 = _taggedTemplateLiteralLoose(['B'], ['B']),\n _templateObject88 = _taggedTemplateLiteralLoose(['Phi_{B_{i}} = \\x0Bec{B} cdot \\x0Bec{L}_n = B cdot L_i cdot sin(alpha) = B_parallel cdot L_i'], ['\\\\Phi_{B_{i}} = \\\\vec{B} \\\\cdot \\\\vec{L}_n = B \\\\cdot L_i \\\\cdot \\\\sin(\\\\alpha) = B_\\\\parallel \\\\cdot L_i']),\n _templateObject89 = _taggedTemplateLiteralLoose(['Phi_{B} = sum_{i=0}^{n_{lati}} Phi_{Bn}'], ['\\\\Phi_{B} = \\\\sum_{i=0}^{n_{lati}} \\\\Phi_{Bn}']),\n _templateObject90 = _taggedTemplateLiteralLoose(['Wb = T cdot m^2'], ['Wb = T \\\\cdot m^2']),\n _templateObject91 = _taggedTemplateLiteralLoose(['Phi_B = mu_0 cdot I'], ['\\\\Phi_B = \\\\mu_0 \\\\cdot I']),\n _templateObject92 = _taggedTemplateLiteralLoose(['\\x0Bec{F}_{B} = q cdot (\\x0Bec{v} \\times \\x0Bec{B})'], ['\\\\vec{F}_{B} = q \\\\cdot (\\\\vec{v} \\\\times \\\\vec{B})']),\n _templateObject93 = _taggedTemplateLiteralLoose(['\\x0Bec{B}'], ['\\\\vec{B}']),\n _templateObject94 = _taggedTemplateLiteralLoose(['\\x0Bec{v}'], ['\\\\vec{v}']),\n _templateObject95 = _taggedTemplateLiteralLoose(['\\x0Bec{F}_{magnetica} = I cdot (\\x0Bec{L} \\times \\x0Bec{B})'], ['\\\\vec{F}_{magnetica} = I \\\\cdot (\\\\vec{L} \\\\times \\\\vec{B})']),\n _templateObject96 = _taggedTemplateLiteralLoose(['I'], ['I']),\n _templateObject97 = _taggedTemplateLiteralLoose(['\\x0Bec{L}'], ['\\\\vec{L}']),\n _templateObject98 = _taggedTemplateLiteralLoose(['left | \\x0Bec{B} \\right | = mu_0 cdot I cdot \\frac{A_{vvolgimenti}}{L_{unghezzafilo}}'], ['\\\\left | \\\\vec{B} \\\\right | = \\\\mu_0 \\\\cdot I \\\\cdot \\\\frac{A_{vvolgimenti}}{L_{unghezzafilo}}']),\n _templateObject99 = _taggedTemplateLiteralLoose(['left | \\x0Bec{B} \\right | = \\frac{mu cdot I}{2 pi r}'], ['\\\\left | \\\\vec{B} \\\\right | = \\\\frac{\\\\mu \\\\cdot I}{2 \\\\pi r}']),\n _templateObject100 = _taggedTemplateLiteralLoose(['Delta V_{indotta} = v cdot B cdot L'], ['\\\\Delta V_{indotta} = v \\\\cdot B \\\\cdot L']),\n _templateObject101 = _taggedTemplateLiteralLoose(['Phi_B = \\x0Bec{B} cdot \\x0Bec{A} = B cdot A cdot cos(alpha)'], ['\\\\Phi_B = \\\\vec{B} \\\\cdot \\\\vec{A} = B \\\\cdot A \\\\cdot \\\\cos(\\\\alpha)']),\n _templateObject102 = _taggedTemplateLiteralLoose(['Delta V_{indotta} = - \\frac{Delta Phi_B}{Delta t}'], ['\\\\Delta V_{indotta} = - \\\\frac{\\\\Delta \\\\Phi_B}{\\\\Delta t}']),\n _templateObject103 = _taggedTemplateLiteralLoose(['Delta V_{indotta} = - \\frac{N cdot Delta Phi_{B_{spira}}}{Delta t} = - \\frac{N cdot B cdot A cdot cos(alpha)}{Delta t}'], ['\\\\Delta V_{indotta} = - \\\\frac{N \\\\cdot \\\\Delta \\\\Phi_{B_{spira}}}{\\\\Delta t} = - \\\\frac{N \\\\cdot B \\\\cdot A \\\\cdot cos(\\\\alpha)}{\\\\Delta t}']),\n _templateObject104 = _taggedTemplateLiteralLoose(['N'], ['N']),\n _templateObject105 = _taggedTemplateLiteralLoose(['E'], ['E']),\n _templateObject106 = _taggedTemplateLiteralLoose(['E = c cdot B'], ['E = c \\\\cdot B']),\n _templateObject107 = _taggedTemplateLiteralLoose(['c'], ['c']),\n _templateObject108 = _taggedTemplateLiteralLoose(['c = \\frac{1}{sqrt{epsilon_0 cdot mu_0}} = 3.00 cdot 10^8 \\frac{m}{s}'], ['c = \\\\frac{1}{\\\\sqrt{\\\\epsilon_0 \\\\cdot \\\\mu_0}} = 3.00 \\\\cdot 10^8 \\\\frac{m}{s}']),\n _templateObject109 = _taggedTemplateLiteralLoose(['A(t) = A_{max} cdot sin left ( \\frac{2 pi}{lambda} - omega t + phi \\right )'], ['A(t) = A_{max} \\\\cdot \\\\sin \\\\left ( \\\\frac{2 \\\\pi}{\\\\lambda} - \\\\omega t + \\\\phi \\\\right )']),\n _templateObject110 = _taggedTemplateLiteralLoose(['A_{max}'], ['A_{max}']),\n _templateObject111 = _taggedTemplateLiteralLoose(['\\frac{2 pi}{lambda} = left | \\x0Bec{k} \\right |'], ['\\\\frac{2 \\\\pi}{\\\\lambda} = \\\\left | \\\\vec{k} \\\\right |']),\n _templateObject112 = _taggedTemplateLiteralLoose(['omega'], ['\\\\omega']),\n _templateObject113 = _taggedTemplateLiteralLoose(['\\frac{1}{lambda} = R left ( \\frac{1}{4} - \\frac{1}{n^2} \\right )'], ['\\\\frac{1}{\\\\lambda} = R \\\\left ( \\\\frac{1}{4} - \\\\frac{1}{n^2} \\\\right )']),\n _templateObject114 = _taggedTemplateLiteralLoose(['R = 1.097 cdot 10^7 \\frac{1}{m}'], ['R = 1.097 \\\\cdot 10^7 \\\\frac{1}{m}']),\n _templateObject115 = _taggedTemplateLiteralLoose(['n'], ['n']),\n _templateObject116 = _taggedTemplateLiteralLoose(['h'], ['h']),\n _templateObject117 = _taggedTemplateLiteralLoose(['hbar = left ( \\frac{h}{2 pi} \\right )'], ['\\\\hbar = \\\\left ( \\\\frac{h}{2 \\\\pi} \\\\right )']),\n _templateObject118 = _taggedTemplateLiteralLoose(['m cdot v_n cdot 2 pi cdot r = n cdot h'], ['m \\\\cdot v_n \\\\cdot 2 \\\\pi \\\\cdot r = n \\\\cdot h']),\n _templateObject119 = _taggedTemplateLiteralLoose(['r_n = n^2 cdot a_0 = n^2 cdot \\frac{hbar}{m_{elettrone} cdot k cdot e^2} '], ['r_n = n^2 \\\\cdot a_0 = n^2 \\\\cdot \\\\frac{\\\\hbar}{m_{elettrone} \\\\cdot k \\\\cdot e^2} ']),\n _templateObject120 = _taggedTemplateLiteralLoose(['a_0 = left ( \\frac{h}{2 pi} \\right )^2 cdot \\frac{1}{m_{elettrone} cdot k cdot e^2} = 5.29 cdot 10^{-11} m'], ['a_0 = \\\\left ( \\\\frac{h}{2 \\\\pi} \\\\right )^2 \\\\cdot \\\\frac{1}{m_{elettrone} \\\\cdot k \\\\cdot e^2} = 5.29 \\\\cdot 10^{-11} m']),\n _templateObject121 = _taggedTemplateLiteralLoose(['E_n = \\frac{1}{n^2} cdot E_1 = - \\frac{1}{n^2} cdot \\frac{a_0^2}{2 cdot m cdot hbar^4} = - \\frac{1}{n^2} cdot \\frac{m_{elettrone} cdot k^2 cdot e^4}{2 cdot hbar^2}'], ['E_n = \\\\frac{1}{n^2} \\\\cdot E_1 = - \\\\frac{1}{n^2} \\\\cdot \\\\frac{a_0^2}{2 \\\\cdot m \\\\cdot \\\\hbar^4} = - \\\\frac{1}{n^2} \\\\cdot \\\\frac{m_{elettrone} \\\\cdot k^2 \\\\cdot e^4}{2 \\\\cdot \\\\hbar^2}']),\n _templateObject122 = _taggedTemplateLiteralLoose(['10^1 eV'], ['10^1 eV']),\n _templateObject123 = _taggedTemplateLiteralLoose(['1 eV'], ['1 eV']),\n _templateObject124 = _taggedTemplateLiteralLoose(['lambda'], ['\\\\lambda']),\n _templateObject125 = _taggedTemplateLiteralLoose(['lambda_{max} cdot T'], ['\\\\lambda_{max} \\\\cdot T']),\n _templateObject126 = _taggedTemplateLiteralLoose(['E_{fotone} = h cdot f'], ['E_{fotone} = h \\\\cdot f']);\n\n\n\nfunction _taggedTemplateLiteralLoose(strings, raw) { strings.raw = raw; return strings; }\n\nfunction fisica__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fisica__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; }\n\nfunction fisica__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; }\n\n\n\n\n\n\n\n\n\n\nvar r = String.raw;\n\nvar fisica__ref = Object(preact_min[\"h\"])(\n 'h1',\n null,\n 'Fisica'\n);\n\nvar fisica__ref2 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Usa le regole base della trigonometria:'\n);\n\nvar fisica__ref3 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Scomponi in componenti, poi sommali:'\n);\n\nvar _ref4 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Produce il vettore risultante dall\\'applicazione della regola del parallelogramma.'\n);\n\nvar _ref5 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Alla fine \\xE8 sempre una somma:'\n);\n\nvar _ref6 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Produce il vettore che parte da ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'w'\n ),\n ' e arriva a ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'v'\n ),\n '.'\n);\n\nvar _ref7 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si chiama scalare perch\\xE8 il risultato \\xE8 uno scalare, non un vettore.'\n);\n\nvar _ref8 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si chiama vettoriale perch\\xE8 il risultato \\xE8 un altro vettore.'\n);\n\nvar _ref9 = Object(preact_min[\"h\"])(\n 'li',\n null,\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.wikipedia.org/wiki/Regola_della_mano_destra' },\n 'Regola della mano destra'\n )\n);\n\nvar _ref10 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Non \\xE8 commutativo!'\n);\n\nvar _ref11 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se un corpo puntiforme ha forza risultante nulla, allora la sua velocit\\xE0 non cambia.'\n);\n\nvar _ref12 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La forza risultante di un corpo \\xE8 direttamente proporzionale alla sua accelerazione, e la costante di proporzionalit\\xE0 \\xE8 la ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'massa'\n ),\n '.'\n);\n\nvar _ref13 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Due corpi esercitano forze uguali e opposte uno sull\\'altro.'\n);\n\nvar _ref14 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Due corpi puntiformi si attirano uno verso l\\'altro con forza:'\n);\n\nvar _ref15 = Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'G'\n ),\n ' \\xE8 la ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'costante di gravitazione universale'\n ),\n ' e vale:'\n);\n\nvar _ref16 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se nel sistema di riferimento consideriamo la Terra ferma, allora un corpo \\xE8 attratto verso la Terra con forza ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'peso'\n ),\n ' uguale a:'\n);\n\nvar _ref17 = Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'g'\n ),\n ' \\xE8 la ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'costante di gravit\\xE0'\n ),\n ' della Terra, e vale:'\n);\n\nvar _ref18 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Per pianeti diversi dalla Terra vale la stessa regola:'\n);\n\nvar _ref19 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'L\\'unica differenza \\xE8 che cambia la ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'costante di gravit\\xE0'\n ),\n ':'\n);\n\nvar _ref20 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Normale' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si oppone alle forze applicate alla superficie di contatto.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un libro appoggiato su un tavolo ha la ',\n Object(preact_min[\"h\"])(\n 'b',\n null,\n 'forza di gravit\\xE0'\n ),\n ' che lo attira verso il terreno e la ',\n Object(preact_min[\"h\"])(\n 'b',\n null,\n 'forza normale'\n ),\n ' che lo trattiene dal cadere.'\n )\n);\n\nvar _ref21 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Impedisce a un corpo di muoversi se non viene spinto da una forza che supera una certa soglia:'\n);\n\nvar _ref22 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Rallenta i corpi che si stanno muovendo finch\\xE8 essi non si fermano:'\n);\n\nvar _ref23 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Tensione' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' forza trasmessa tra due estremi di una fune.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Pu\\xF2 essere redirezionata per mezzo di carrucole.'\n )\n);\n\nvar _ref24 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Una molla cerca sempre di tornare alla sua posizione indeformata con forza:'\n);\n\nvar _ref25 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '(E\\' negativa perch\\xE8 la forza \\xE8 opposta a quella applicata per deformarla.)'\n);\n\nvar _ref26 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 un vettore che indica la posizione di un corpo rispetto a un\\'origine.'\n);\n\nvar _ref27 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 un vettore che misura la variazione di posizione nel tempo.'\n);\n\nvar _ref28 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se si considera un intervallo di tempo infinitesimale si dice ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'velocit\\xE0 istantanea'\n ),\n ':'\n);\n\nvar _ref29 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 un vettore che misura la variazione di velocit\\xE0 nel tempo.'\n);\n\nvar _ref30 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se si considera un intervallo di tempo infinitesimale si dice ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'accelerazione istantanea'\n ),\n ':'\n);\n\nvar _ref31 = Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Quantit\\xE0 di moto ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(momento lineare)'\n )\n);\n\nvar _ref32 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La quantit\\xE0 di moto \\xE8 una propriet\\xE0 vettoriale dei corpi:'\n);\n\nvar _ref33 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se la forza risultante \\xE8 nulla, la quantit\\xE0 di moto non cambia.'\n);\n\nvar _ref34 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'legge oraria'\n ),\n ' \\xE8:'\n);\n\nvar _ref35 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 costante:'\n);\n\nvar _ref36 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La velocit\\xE0 non varia:'\n);\n\nvar _ref37 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forze' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si applica la prima legge di Newton:'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'f(t) = 0'\n )\n )\n);\n\nvar _ref38 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'legge oraria'\n ),\n ' \\xE8:'\n);\n\nvar _ref39 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 una retta:'\n);\n\nvar _ref40 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 costante:'\n);\n\nvar _ref41 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forze' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si applica la prima legge di Newton:'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'f(t) = m a'\n )\n )\n);\n\nvar _ref42 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Ampiezza' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' la distanza dal centro massima che raggiunge il corpo.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n '(L\\'ampiezza di una sinusoide.)'\n )\n);\n\nvar _ref43 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Indica quanto in fretta cambia la posizione del corpo.'\n);\n\nvar _ref44 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dipende dal periodo:'\n);\n\nvar _ref45 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' una sinusoide:'\n);\n\nvar _ref46 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forze' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si applica la prima legge di Newton:'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'f(t) = m a'\n )\n )\n);\n\nvar _ref47 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Moto parabolico' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il moto parabolico \\xE8 dato sommando un moto rettilineo uniforme sull\\'asse orizzontale e un moto rettilineo uniformemente accelerato sull\\'asse verticale.'\n )\n);\n\nvar _ref48 = Object(preact_min[\"h\"])(\n 'h3',\n null,\n 'Velocit\\xE0 angolare'\n);\n\nvar _ref49 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Quanto cambia la fase nel tempo.'\n);\n\nvar _ref50 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' l\\'angolo percorso dal corpo rispetto alla posizione iniziale.'\n);\n\nvar _ref51 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si applicano le formule per la circonferenza:'\n);\n\nvar _ref52 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il corpo ha sempre un accelerazione verso il centro che gli impedisce di abbandonare il moto:'\n);\n\nvar _ref53 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 verso il centro e si calcola con:'\n);\n\nvar _ref54 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' compiuto da una forza che sposta un corpo.'\n);\n\nvar _ref55 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '(Se la forza non \\xE8 parallela allo spostamento, il prodotto scalare ci fa considerare solo la componente parallela.)'\n);\n\nvar _ref56 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un corpo ha energia cinetica in ogni momento uguale a:'\n);\n\nvar _ref57 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se una forza effettua lavoro su un corpo, cambia la sua energia cinetica pari al lavoro effettuato:'\n);\n\nvar _ref58 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un corpo ha energia potenziale in ogni momento pari a:'\n);\n\nvar _ref59 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '(Con ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'h'\n ),\n ' uguale a un altezza scelta come punto di riferimento.)'\n);\n\nvar _ref60 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Una molla ha sempre energia potenziale elastica pari a:'\n);\n\nvar _ref61 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Sono conservative le forze per le quali il lavoro compiuto non dipende dal percorso seguito per andare dalla partenza all\\'arrivo.'\n);\n\nvar _ref62 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Ad esempio, \\xE8 conservativa la ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'forza di gravit\\xE0'\n ),\n ', ma ',\n Object(preact_min[\"h\"])(\n 'b',\n null,\n 'non'\n ),\n ' \\xE8 conservativa la forza di attrito.'\n);\n\nvar _ref63 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se in un sistema ci sono solo forze conservative, allora l\\'energia meccanica totale si conserva:'\n);\n\nvar _ref64 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 la velocit\\xE0 di trasferimento di energia:'\n);\n\nvar _ref65 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 una propriet\\xE0 dei corpi che pu\\xF2 essere ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'positiva'\n ),\n ' o ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'negativa'\n ),\n '.'\n);\n\nvar _ref66 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si conserva: in un sistema chiuso la carica totale \\xE8 costante.'\n);\n\nvar _ref67 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Cariche ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'opp'\n ),\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'oste'\n ),\n ' si attraggono; cariche ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'uguali'\n ),\n ' si respingono.'\n);\n\nvar _ref68 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Conduttori e isolanti' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Pi\\xF9 ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.wikipedia.org/wiki/Ione' },\n 'ioni'\n ),\n ' ha un corpo, meglio la carica si muove attraverso di esso.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'I corpi in cui la carica si muove bene sono ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'conduttori'\n ),\n ', mentre quelli in cui si muove difficilmente sono ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'isolanti'\n ),\n '.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'Il corpo umano \\xE8 un buon conduttore.'\n )\n )\n);\n\nvar _ref69 = Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Polarizzazione' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Polarizzazione' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' possibile polarizzare un corpo per accumulare la carica di un segno in una certa zona.'\n )\n )\n);\n\nvar _ref70 = Object(preact_min[\"h\"])(\n split_Split,\n null,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Messa a terra' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se un corpo conduttore \\xE8 in contatto con la Terra, le cariche su di esso saranno ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'equilibrate'\n ),\n ' e il corpo diventer\\xE0 elettricamente neutro (con stesso numero di ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'cariche positive'\n ),\n ' e ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'negative'\n ),\n ' all\\'interno).'\n )\n )\n);\n\nvar _ref71 = Object(preact_min[\"h\"])(\n split_Split,\n null,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Polarizzazione per strofinio' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Strofinando tra loro due corpi isolanti, essi si ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'polarizzeranno per strofinio'\n ),\n '.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Polarizzazione per contatto' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Toccando un conduttore con un corpo carico, il conduttore potr\\xE0 ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'polarizzarsi per contatto'\n ),\n '.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Polarizzazione per induzione' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se un corpo conduttore ha cariche \"esterne\" di un ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'certo segno'\n ),\n ' vicino, esso avr\\xE0 tutte le cariche del ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'segno opposto'\n ),\n ' in equilibrio vicino alle cariche esterne, e tutte le cariche dello ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'stesso segno'\n ),\n ' pi\\xF9 lontano possibile da esse.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Mettendo a terra il conduttore, nuove cariche del ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'segno opposto'\n ),\n ' saranno attratte all\\'interno del corpo per equilibrare le cariche che si sono allontanate.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Staccando il conduttore da terra e rimuovendo le cariche esterne, esso si ritrover\\xE0 ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'caricato del segno opposto'\n ),\n ' rispetto alle cariche esterne.'\n )\n )\n);\n\nvar _ref72 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Due corpi carichi si attraggono tra loro con forza:'\n);\n\nvar _ref73 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'costante di Coulomb'\n);\n\nvar _ref74 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'permeabilit\\xE0 del vuoto'\n);\n\nvar _ref75 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Misura che forza viene applicata in ogni punto su una carica unitaria:'\n);\n\nvar _ref76 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 la differenza tra \"quanto\" campo elettrico ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'entra'\n ),\n ' e quanto campo elettrico ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'esce'\n ),\n ' da una certa area.'\n);\n\nvar _ref77 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In qualsiasi superficie chiusa, il flusso elettrico \\xE8 uguale alla componente perpendicolare del campo elettrico moltiplicato per l\\'area.'\n);\n\nvar _ref78 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se il campo elettrico \\xE8 uniforme, se ne pu\\xF2 calcolare facilmente il valore:'\n);\n\nvar _ref79 = Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n todo_Todo,\n null,\n 'Circa. E\\' una specie di integrale...'\n )\n);\n\nvar _ref80 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il flusso elettrico \\xE8 direttamente proporzionale alla carica presente all\\'interno della superficie.'\n);\n\nvar _ref81 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Ovvero, i campi elettrostatici sono generati dalle cariche elettriche.'\n);\n\nvar _ref82 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'energia potenziale elettrica'\n);\n\nvar _ref83 = Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Potenziale elettrico ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(tensione)'\n )\n);\n\nvar _ref84 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 il valore dell\\'energia potenziale elettrica per una carica unitaria.'\n);\n\nvar _ref85 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In una batteria \\xE8 detto ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'forza elettromotrice'\n ),\n ', e corrisponde al lavoro compiuto da una batteria ideale per spostare una carica unitaria tra i due poli.'\n);\n\nvar _ref86 = Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Corrente elettrica ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(intensit\\xE0)'\n )\n);\n\nvar _ref87 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Quanta carica passa attraverso un\\'area (perpendicolare al flusso) nel tempo.'\n);\n\nvar _ref88 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Fintanto che c\\'\\xE8 differenza di potenziale, ci sar\\xE0 anche intensit\\xE0 non nulla.'\n);\n\nvar _ref89 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Corrente continua ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(',\n Object(preact_min[\"h\"])(\n 'abbr',\n { title: 'Direct Current' },\n 'DC'\n ),\n ')'\n )\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Quando in un circuito la direzione della corrente \\xE8 costante.'\n )\n);\n\nvar _ref90 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Corrente alternata ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(',\n Object(preact_min[\"h\"])(\n 'abbr',\n { title: 'Alternate Current' },\n 'AC'\n ),\n ')'\n )\n ) },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Quando in un circuito la direzione della corrente si alterna periodicamente.'\n )\n);\n\nvar _ref91 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Possiamo calcolare la potenza di un circuito:'\n);\n\nvar _ref92 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Riduce l\\'intensit\\xE0 di corrente, e converte parte del potenziale in calore.'\n);\n\nvar _ref93 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il potenziale utilizzato \\xE8 pari a:'\n);\n\nvar _ref94 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'resistenza'\n);\n\nvar _ref95 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La resistenza di un conduttore vale:'\n);\n\nvar _ref96 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'resistivit\\xE0'\n);\n\nvar _ref97 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Immagazzina potenziale elettrico, permettendo di riutilizzarla in seguito.'\n);\n\nvar _ref98 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Per farlo, cattura cariche ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'positive'\n ),\n ' e ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'negative'\n ),\n ' sulle sue due armature; perch\\xE8 questo avvenga, deve essere compiuto lavoro.'\n);\n\nvar _ref99 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Ha una ',\n Object(preact_min[\"h\"])(\n 'b',\n null,\n 'capacit\\xE0'\n ),\n ' caratteristica, che in un condensatore a facce piane parallele \\xE8:'\n);\n\nvar _ref100 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Condensatori di capacit\\xE0 maggiore immagazzinano pi\\xF9 potenziale con meno carica.'\n);\n\nvar _ref101 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La capacit\\xE0 aumenta se viene messo qualcosa tra le armature:'\n);\n\nvar _ref102 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'costante dielettrica relativa'\n);\n\nvar _ref103 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se il campo elettrico creatosi tra le due armature supera la ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'rigidit\\xE0 dielettrica'\n ),\n ' del condensatore, la carica immagazzinata viene persa e ha luogo un ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'breakdown'\n ),\n '.'\n);\n\nvar _ref104 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Amperometro' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Misura la corrente elettrica se messo in serie.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n '(Funzionamento: ha una resistenza interna bassisima in modo da non influire significativamente sulla corrente.)'\n )\n);\n\nvar _ref105 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Voltmetro' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Misura la differenza di potenziale se messo in parallelo.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n '(Funzionamento: ha una resistenza altissima in modo da non influire significativamente sulla tensione.)'\n )\n);\n\nvar _ref106 = Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Principi di Kirchhoff' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge dei nodi' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Per nodo si intende un qualsiasi punto del circuito.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Da un nodo entra ed esce la stessa corrente.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge delle maglie' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Per maglia si intende un qualsiasi percorso chiuso all\\'interno del circuito.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In una maglia chiusa, la somma delle differenze di potenziale \\xE8 0.'\n )\n )\n);\n\nvar _ref107 = Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Serie e Parallelo' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Circuito in serie' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Pi\\xF9 parti di circuito sono ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'in serie'\n ),\n ' se sono consecutive e senza biforcazioni.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Parti di circuito in serie sono attraversate dalla stessa corrente.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Circuito in parallelo' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Pi\\xF9 parti di circuito sono ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'in parallelo'\n ),\n ' tra loro se hanno lo stesso punto di partenza e lo stesso punto di arrivo.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Parti di circuito in parallelo hanno la stessa differenza di potenziale.'\n )\n )\n);\n\nvar _ref108 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nei circuiti in serie, tutte le resistenze possono essere sostituite con una equivalente dal valore della somma di tutte le quelle sostituite:'\n);\n\nvar _ref109 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nei circuiti in parallelo, tutte le resistenze possono essere sostituite con una equivalente dal valore di:'\n);\n\nvar _ref110 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nei circuiti in serie, tutte i condensatori possono essere sostituiti con uno equivalente dal valore di:'\n);\n\nvar _ref111 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nei circuiti in parallelo, tutte i condensatori possono essere sostituite con uno equivalente dal valore della somma della capacit\\xE0 di tutti quelli sostituiti:'\n);\n\nvar _ref112 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' una costante fisica fondamentale che rappresenta quanto un materiale si magnetizza facilmente.'\n);\n\nvar _ref113 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Come un campo elettrico, ma per i magneti.'\n);\n\nvar _ref114 = Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'T'\n);\n\nvar _ref115 = Object(preact_min[\"h\"])(\n 'p',\n null,\n '\\xC8 \"quanto\" campo magnetico ',\n Object(preact_min[\"h\"])(\n 'b',\n null,\n 'attraversa'\n ),\n ' un percorso chiuso.'\n);\n\nvar _ref116 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Per qualsiasi percorso chiuso, il flusso magnetico \\xE8 uguale alla somma di tutti i \"sottoflussi\" magnetici calcolati sui suoi lati.'\n);\n\nvar _ref117 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Gauss per i campi magnetici' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il flusso magnetico attraverso qualsiasi superficie chiusa \\xE8 sempre nullo.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Ovvero, non esistono monopoli magnetici.'\n )\n);\n\nvar _ref118 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'L\\'intensit\\xE0 di corrente che attraversa un percorso chiuso \\xE8 direttamente proporzionale al flusso magnetico dello stesso percorso.'\n);\n\nvar _ref119 = Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Forza magnetica su carica puntiforme ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(Forza di Lorentz)'\n )\n);\n\nvar _ref120 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'I campi magnetici applicano una forza sulle cariche vicine:'\n);\n\nvar _ref121 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si ha una forza massima se la velocit\\xE0 \\xE8 perpendicolare al campo magnetico.'\n);\n\nvar _ref122 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In un campo magnetico uniforme, una velocit\\xE0 perpendicolare al campo porta alla creazione di un moto circolare uniforme.'\n);\n\nvar _ref123 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'I campi magnetici influenzano ovviamente anche le cariche presenti in un conduttore:'\n);\n\nvar _ref124 = Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.openprof.com/wb/forza_di_lorentz_su_un_filo_percorso_da_corrente?ch=360' },\n '[1]'\n);\n\nvar _ref125 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Campo magnetico in una spira' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Una spira in cui passa corrente produce un campo magnetico perpendicolare al piano creato dalla spira.'\n )\n);\n\nvar _ref126 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un solenoide sono tante spire avvolte in modo da formare una specie di cilindro.'\n);\n\nvar _ref127 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'All\\'interno del solenoide si crea un campo (quasi) uniforme:'\n);\n\nvar _ref128 = Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'Caso particolare della ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.wikipedia.org/wiki/Legge_di_Amp%C3%A8re' },\n 'Legge di Amp\\xE8re'\n ),\n '.'\n )\n);\n\nvar _ref129 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il modulo del campo magnetico ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'B'\n ),\n ' prodotto da un filo in cui passa una corrente continua ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'I'\n ),\n ' alla distanza ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 's'\n ),\n ' \\xE8:'\n);\n\nvar _ref130 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il campo magnetico cos\\xEC creato gira attorno al filo in senso antiorario.'\n);\n\nvar _ref131 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Due fili attraversati dalla ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'stessa corrente'\n ),\n ' si attraggono, due fili attraversati da ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'corr'\n ),\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'enti'\n ),\n ' ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'opp'\n ),\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'oste'\n ),\n ' si respingono.'\n);\n\nvar _ref132 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un conduttore perpendicolare ad un campo magnetico pu\\xF2 ottenere una differenza di potenziale se messo in movimento in un direzione perpendicolare alla direzione del conduttore e del campo.'\n);\n\nvar _ref133 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La differenza di potenziale si crea a causa della forza magnetica, che fa spostare tutti gli elettroni verso un capo del conduttore.'\n);\n\nvar _ref134 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Essa vale:'\n);\n\nvar _ref135 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'v'\n ),\n ' \\xE8 la velocit\\xE0 del conduttore, ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'B'\n ),\n ' \\xE8 l\\'intensit\\xE0 del campo magnetico ed ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n 'L'\n ),\n ' \\xE8 la lunghezza del conduttore.'\n);\n\nvar _ref136 = Object(preact_min[\"h\"])(\n 'i',\n null,\n 'Legge di Faraday-Neumann-Lenz'\n);\n\nvar _ref137 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dice che la forza elettromotrice media indotta in un percorso dipende dalla variazione nel tempo del flusso magnetico nello stesso percorso.'\n);\n\nvar _ref138 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il meno \\xE8 dovuto alla ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.wikipedia.org/wiki/Legge_di_Lenz' },\n 'Legge di Lenz'\n ),\n ', che specifica qualitativamente il verso della forza elettromotrice indotta.'\n);\n\nvar _ref139 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In un solenoide, la forza elettromotrice indotta \\xE8 uguale a:'\n);\n\nvar _ref140 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Amp\\xE8re-Maxwell' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Correnti o campi elettrici variabili creano un campo magnetico.'\n )\n);\n\nvar _ref141 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si dice quindi che sono ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'onde elettromagnetiche'\n ),\n '.'\n);\n\nvar _ref142 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Esse sono legate dalla relazione:'\n);\n\nvar _ref143 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'I solidi, se portati ad alta temperatura, emettono luce con uno ',\n Object(preact_min[\"h\"])(\n 'a',\n { href: 'https://it.wikipedia.org/wiki/Spettro_continuo' },\n 'spettro continuo'\n ),\n '.'\n);\n\nvar _ref144 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'I gas, invece, ad alta temperatura emettono luce solo con particolari lunghezze d\\'onda.'\n);\n\nvar _ref145 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In un gas di idrogeno, le lunghezze d\\'onda emesse sono ricavabili con:'\n);\n\nvar _ref146 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Una grandezza si dice quantizzata (o discreta) se pu\\xF2 assumere solo determinati valori.'\n);\n\nvar _ref147 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Una grandezza si dice continua se pu\\xF2 assumere qualsiasi valore e quindi se non \\xE8 quantizzata.'\n);\n\nvar _ref148 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Energia, momento angolare e raggio sono quantizzati.'\n);\n\nvar _ref149 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'L\\'energia degli elettroni \\xE8 quantizzata.'\n);\n\nvar _ref150 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Inoltre, per essi \\xE8 valido che:'\n);\n\nvar _ref151 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Ancora, il raggio delle orbite \\xE8 uguale a:'\n);\n\nvar _ref152 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Infine, in ogni stato, l\\'energia \\xE8 pari a:'\n);\n\nvar _ref153 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Due elettroni non possono occupare lo stesso stato.'\n);\n\nvar _ref154 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Questo modello funziona solo per atomi con numero atomico basso. Atomi con molti elettroni hanno comportamenti diversi, descritti dal modello di'\n);\n\nvar _ref155 = Object(preact_min[\"h\"])(\n split_Split,\n null,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Nei solidi' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nei solidi, le lunghezze d\\'onda sono talmente tanto vicine da poter essere considerate una banda.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Possono per\\xF2 comunque avere dei gap dovuti agli intervalli di energia non ammessi.'\n )\n )\n);\n\nvar _ref156 = Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n todo_Todo,\n null,\n 'Refactor this'\n )\n);\n\nvar _ref157 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se invece la banda di emissione si sovrappone a un altra, allora il corpo \\xE8 un conduttore.'\n);\n\nvar _ref158 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Lacune' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Legami in cui ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'mancano elettroni'\n ),\n '.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'Elettroni'\n ),\n ' di altri legami possono spostarsi per colmare le ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'lacune'\n ),\n ', creandone altre, e spostandole in direzione opposta a quella della corrente.'\n )\n);\n\nvar _ref159 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Accettori e donori' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se si inserisce in un cristallo semiconduttore si inserisce un atomo con numero atomico diverso, si otterr\\xE0:'\n ),\n Object(preact_min[\"h\"])(\n 'ul',\n null,\n Object(preact_min[\"h\"])(\n 'li',\n null,\n 'Con numero atomico maggiore, un semiconduttore di ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'tipo N'\n ),\n ' con ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'elettroni in eccesso'\n ),\n ' liberi di scorrere.'\n ),\n Object(preact_min[\"h\"])(\n 'li',\n null,\n 'Con numero atomico minore, un semiconduttore di ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'tipo P'\n ),\n ' con ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'lacune in eccesso'\n ),\n ' libere di catturare elettroni da altri legami.'\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Maggiore impurezza porta a maggiore conduttivit\\xE0.'\n )\n);\n\nvar _ref160 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Temperatura' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Aumentando la temperatura di un semiconduttore si aumenta la conduttivit\\xE0, perch\\xE8 eccita le particelle e favorisce il movimento di ',\n Object(preact_min[\"h\"])(\n minus_Minus,\n null,\n 'elettroni'\n ),\n ' e ',\n Object(preact_min[\"h\"])(\n plus_Plus,\n null,\n 'lacune'\n ),\n '.'\n )\n);\n\nvar _ref161 = Object(preact_min[\"h\"])(\n 'span',\n null,\n 'Ottica ',\n Object(preact_min[\"h\"])(\n 'small',\n null,\n '(non l\\'abbiamo fatta)'\n )\n);\n\nvar _ref162 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Assorbimento e riflessione' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'I corpi possono assorbire o riflettere le onde elettromagnetiche che li colpiscono.'\n )\n);\n\nvar _ref163 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un corpo nero \\xE8 un corpo che assorbe tutte le onde elettromagnetiche che riceve senza rifletterne nessuna.'\n);\n\nvar _ref164 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Teoria di Planck per il corpo nero' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'L\\'energia assorbita e emessa dai corpi neri \\xE8 quantizzata.'\n )\n);\n\nvar _ref165 = Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un onda magnetica con un quanto di energia \\xE8 detta ',\n Object(preact_min[\"h\"])(\n 'i',\n null,\n 'fotone'\n ),\n ':'\n);\n\nvar _ref166 = Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Effetto fotoelettrico' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'A volte, i fotoni che colpiscono un metallo possono estrarvi degli elettroni e creare una differenza di potenziale.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Perch\\xE8 avvenga, la frequenza deve essere maggiore di una certa soglia.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il numero di elettroni estratti dipende dall\\'intensit\\xE0 dell\\'onda, mentre l\\'energia cinetica degli elettroni dipende dalla frequenza.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Non c\\'\\xE8 nessun ritardo tra l\\'assorbimento del fotone e l\\'estrazione di elettroni.'\n )\n);\n\nvar fisica_Fisica = function (_Component) {\n fisica__inherits(Fisica, _Component);\n\n function Fisica() {\n fisica__classCallCheck(this, Fisica);\n\n return fisica__possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Fisica.prototype.render = function render() {\n return Object(preact_min[\"h\"])(\n 'div',\n { style: fisica_default.a.fisica },\n fisica__ref,\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Vettori' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Componenti cartesiane' },\n fisica__ref2,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject2)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject3)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Somma' },\n fisica__ref3,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject4)\n )\n ),\n _ref4\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Differenza' },\n _ref5,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject5)\n )\n ),\n _ref6\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Prodotto scalare' },\n _ref7,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject6)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Produce il modulo della proiezione di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject7)\n ),\n ' su ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject8)\n ),\n '.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Prodotto vettoriale' },\n _ref8,\n Object(preact_min[\"h\"])(\n 'ul',\n null,\n Object(preact_min[\"h\"])(\n 'li',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject9)\n )\n ),\n Object(preact_min[\"h\"])(\n 'li',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject10)\n )\n ),\n _ref9\n ),\n _ref10\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Leggi di Newton' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: '1\\u1D43: Inerzia' },\n _ref11,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject11)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: '2\\u1D43: Proporzionalit\\xE0' },\n _ref12,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject12)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: '3\\u1D43: Azione e reazione' },\n _ref13,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject13)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Forza di gravit\\xE0' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Tra due corpi' },\n _ref14,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject14)\n )\n ),\n _ref15,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject15)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Verso la Terra' },\n _ref16,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject16)\n )\n ),\n _ref17,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject17)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Su pianeti diversi' },\n _ref18,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject16)\n )\n ),\n _ref19,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject18)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject19)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Forze di contatto' },\n _ref20,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Attrito statico' },\n _ref21,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject20)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Attrito dinamico' },\n _ref22,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject21)\n )\n )\n ),\n _ref23,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Elastica' },\n _ref24,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject22)\n )\n ),\n _ref25\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Cinematica' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Spostamento' },\n _ref26,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject23)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Velocit\\xE0' },\n _ref27,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject24)\n )\n ),\n _ref28,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject25)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Accelerazione' },\n _ref29,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject26)\n )\n ),\n _ref30,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject27)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: _ref31 },\n _ref32,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject28)\n )\n ),\n _ref33,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject29)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Moto rettilineo uniforme' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Spostamento' },\n _ref34,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject30)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Velocit\\xE0' },\n _ref35,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject31)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Accelerazione' },\n _ref36,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject32)\n )\n )\n ),\n _ref37\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Moto rettilineo uniformemente accelerato' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Spostamento' },\n _ref38,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject33)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Velocit\\xE0' },\n _ref39,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject34)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Accelerazione' },\n _ref40,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject35)\n )\n )\n ),\n _ref41\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Moto armonico semplice' },\n _ref42,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Velocit\\xE0 angolare' },\n _ref43,\n _ref44,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject36)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Spostamento' },\n _ref45,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject37)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Velocit\\xE0' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' la sinusoide dello spostamento, sfasata di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject38)\n ),\n ':'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject39)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Accelerazione' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'E\\' la sinusoide della velocit\\xE0, sfasata di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject40)\n ),\n ':'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject41)\n )\n )\n ),\n _ref46\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Moti composti' },\n _ref47,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Moto circolare uniforme' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il moto parabolico \\xE8 dato sommando due moti armonici semplici: uno sull\\'asse X, e l\\'altro, sfasato di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject38)\n ),\n ', sull\\'asse Y.'\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Moto circolare uniforme' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n null,\n _ref48,\n _ref49,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject36)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Fase' },\n _ref50,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Si indica con ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject42)\n ),\n ', e generalmente si usa in radianti.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Velocit\\xE0' },\n _ref51,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject43)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Accelerazione' },\n _ref52,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject44)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forza centripeta' },\n _ref53,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject45)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Lavoro ed energia' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Lavoro' },\n _ref54,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject46)\n )\n ),\n _ref55\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Energia cinetica' },\n _ref56,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject47)\n )\n ),\n _ref57,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject48)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Energia potenziale gravitazionale' },\n _ref58,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject49)\n )\n ),\n _ref59\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Energia potenziale elastica' },\n _ref60,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject50)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forze conservative' },\n _ref61,\n _ref62,\n _ref63,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject51)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Potenza' },\n _ref64,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject52)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Elettrostatica' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Carica elettrica' },\n _ref65,\n _ref66,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Esiste un\\'unit\\xE0 elementare: ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject53)\n ),\n '.'\n ),\n _ref67\n ),\n _ref68\n ),\n _ref69,\n _ref70,\n _ref71,\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Forza elettrica' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Coulomb' },\n _ref72,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject54)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject55)\n ),\n ' \\xE8 la ',\n _ref73,\n ', e vale ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject56)\n ),\n '.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Permeabilit\\xE0 dello spazio vuoto' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La costante ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject55)\n ),\n ' \\xE8 in realt\\xE0 dipendente da un altra costante, ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject57)\n ),\n ', la ',\n _ref74,\n '.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject58)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject59)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Campo elettrico' },\n _ref75,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject60)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Flusso elettrico' },\n _ref76,\n _ref77,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject61)\n )\n ),\n _ref78,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject62)\n )\n ),\n _ref79\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Gauss per i campi elettrostatici' },\n _ref80,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject63)\n )\n ),\n _ref81\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Energia elettrica' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Energia potenziale elettrica' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Un corpo carico vicino ad altre cariche possiede un\\'',\n _ref82,\n ' ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject64)\n ),\n '.'\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Circuiti elettrici' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: _ref83 },\n _ref84,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject65)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La sua unit\\xE0 di misura \\xE8 il Volt (',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject66)\n ),\n ').'\n ),\n _ref85\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: _ref86 },\n _ref87,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject67)\n )\n ),\n _ref88,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La sua unit\\xE0 di misura \\xE8 l\\'Ampere (',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject68)\n ),\n ').'\n )\n ),\n _ref89,\n _ref90,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Potenza elettrica' },\n _ref91,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject69)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Elementi di un circuito' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Resistore' },\n _ref92,\n _ref93,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject70)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject71)\n ),\n ' \\xE8 una costante detta ',\n _ref94,\n ' con unit\\xE0 di misura Ohm (',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject72)\n ),\n ').'\n ),\n _ref95,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject73)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject74)\n ),\n ' \\xE8 la ',\n _ref96,\n ' del materiale, e varia in base alla temperatura:'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject75)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Condensatore' },\n _ref97,\n _ref98,\n _ref99,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject76)\n )\n ),\n _ref100,\n _ref101,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject77)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject78)\n ),\n ' \\xE8 la ',\n _ref102,\n ' del materiale inserito, ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject68)\n ),\n ' l\\'area di una armatura e ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject79)\n ),\n ' la distanza tra le due armature.'\n ),\n _ref103,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La sua unit\\xE0 di misura \\xE8 il Farad (',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject80)\n ),\n ')'\n )\n ),\n _ref104,\n _ref105\n ),\n _ref106,\n _ref107,\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Resistenze equivalenti' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Circuiti in serie' },\n _ref108,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject81)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Circuiti in parallelo' },\n _ref109,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject82)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Condensatori equivalenti' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Circuiti in serie' },\n _ref110,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject83)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Circuiti in parallelo' },\n _ref111,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject84)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Magnetismo' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Permeabilit\\xE0 magnetica dello spazio vuoto' },\n _ref112,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject85)\n ),\n ' (',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject86)\n ),\n ')'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Campo magnetico' },\n _ref113,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Il suo simbolo \\xE8 ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject87)\n ),\n ', e la sua unit\\xE0 di misura \\xE8 il Tesla (',\n _ref114,\n ').'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Flusso magnetico' },\n _ref115,\n _ref116,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject88)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject89)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'La sua unit\\xE0 di misura \\xE8 il Weber (',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject90)\n ),\n ').'\n )\n ),\n _ref117,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Amp\\xE8re' },\n _ref118,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject91)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Forze magnetiche' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: _ref119 },\n _ref120,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject92)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject93)\n ),\n ' \\xE8 l\\'intensit\\xE0 del campo magnetico e ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject94)\n ),\n ' la velocit\\xE0 della carica considerata.'\n ),\n _ref121,\n _ref122\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forza magnetica in un filo' },\n _ref123,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject95)\n ),\n ' ',\n _ref124\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject96)\n ),\n ' \\xE8 la corrente elettrica, ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject97)\n ),\n ' \\xE8 un vettore che punta nella direzione di scorrimento della corrente e ha come modulo la lunghezza del conduttore.'\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Campi magnetici' },\n _ref125,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Campo magnetico di un solenoide' },\n _ref126,\n _ref127,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject98)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Oersted' },\n _ref128,\n _ref129,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject99)\n )\n ),\n _ref130,\n _ref131\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Induzione elettromagnetica' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Forza elettromotrice indotta' },\n _ref132,\n _ref133,\n _ref134,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject100)\n )\n ),\n _ref135\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Flusso magnetico in una spira' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'In un campo magnetico ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject87)\n ),\n ' uniforme e perpendicolare al piano di una spira di area ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject68)\n ),\n ', il flusso magnetico si pu\\xF2 determinare con la ',\n _ref136,\n ':'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject101)\n )\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n null,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Legge di Faraday-Neumann-Lenz' },\n _ref137,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject102)\n )\n ),\n _ref138\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Faraday in un solenoide' },\n _ref139,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject103)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject104)\n ),\n ' \\xE8 il numero delle spire del solenoide.'\n )\n ),\n _ref140\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Elettromagnetismo' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Onde elettromagnetiche' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nel vuoto, il campo elettrico ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject105)\n ),\n ' e il campo magnetico ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject87)\n ),\n ' sono perpendicolari tra loro e la direzione di propagazione, e sono entrambe funzioni del tempo.'\n ),\n _ref141,\n _ref142,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject106)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject107)\n ),\n ' \\xE8 la velocit\\xE0 delle onde (luce) nel vuoto, e a sua volta \\xE8 uguale a:'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject108)\n )\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Formula delle onde' },\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject109)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Dove ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject110)\n ),\n ' \\xE8 l\\'ampiezza massima che pu\\xF2 avere l\\'onda, ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject111)\n ),\n ' \\xE8 il vettore d\\'onda, ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject112)\n ),\n ' la frequenza angolare e ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject42)\n ),\n ' la fase.'\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Spettroscopia' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Emissione' },\n _ref143,\n _ref144,\n _ref145,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject113)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Con ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject114)\n ),\n ', detta costante di Rydberg, e ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject115)\n ),\n ' un numero intero.'\n )\n ),\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Grandezza quantizzata' },\n _ref146,\n _ref147,\n _ref148,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Nota costante quantica \\xE8 ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject116)\n ),\n ', la costante di Planck, ovvero il valore minimo possibile per la carica (talvolta espressa come ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject117)\n ),\n '.'\n )\n )\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n null,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Modello di Bohr' },\n _ref149,\n _ref150,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject118)\n )\n ),\n _ref151,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject119)\n )\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Con ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject120)\n ),\n '.'\n ),\n _ref152,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject121)\n )\n ),\n _ref153,\n _ref154\n )\n ),\n _ref155,\n Object(preact_min[\"h\"])(\n split_Split,\n { title: 'Semiconduttori' },\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Semiconduttori' },\n _ref156,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se la banda di emissione con energia pi\\xF9 alta di un corpo \\xE8 assente o \\xE8 separata da un gap dell\\'ordine di grandezza maggiore di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject122)\n ),\n ', allora il corpo \\xE8 un isolante.'\n ),\n _ref157,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Se il gap \\xE8 invece dell\\'ordine di grandezza di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject123)\n ),\n ', allora il corpo \\xE8 un semiconduttore.'\n )\n ),\n _ref158,\n _ref159,\n _ref160\n ),\n Object(preact_min[\"h\"])(\n split_Split,\n { title: _ref161 },\n _ref162,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Corpo nero' },\n _ref163,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n 'Le onde assorbite vengono poi riemesse sotto forma di un onda di ',\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject124)\n ),\n ' variabile in base alla temperatura.'\n ),\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject125)\n ),\n ' \\xE8 costante.'\n )\n ),\n _ref164,\n Object(preact_min[\"h\"])(\n panel_Panel,\n { title: 'Fotone' },\n _ref165,\n Object(preact_min[\"h\"])(\n 'p',\n null,\n Object(preact_min[\"h\"])(\n latex_Latex,\n null,\n r(_templateObject126)\n )\n )\n ),\n _ref166\n )\n );\n };\n\n return Fisica;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./pages/vldigeometria.css\nvar vldigeometria = __webpack_require__(\"jHTF\");\nvar vldigeometria_default = /*#__PURE__*/__webpack_require__.n(vldigeometria);\n\n// EXTERNAL MODULE: ./components/markdown.css\nvar markdown = __webpack_require__(\"MKE3\");\nvar markdown_default = /*#__PURE__*/__webpack_require__.n(markdown);\n\n// EXTERNAL MODULE: ../node_modules/showdown/dist/showdown.js\nvar showdown = __webpack_require__(\"6adR\");\nvar showdown_default = /*#__PURE__*/__webpack_require__.n(showdown);\n\n// CONCATENATED MODULE: ./components/markdown.js\n\n\nfunction markdown__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction markdown__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; }\n\nfunction markdown__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; }\n\n\n\n\n\nvar markdown_Markdown = function (_Component) {\n markdown__inherits(Markdown, _Component);\n\n function Markdown() {\n markdown__classCallCheck(this, Markdown);\n\n return markdown__possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Markdown.prototype.render = function render() {\n var converter = new showdown_default.a.Converter();\n converter.setFlavor(\"github\");\n var html = converter.makeHtml(\"\" + this.props.children);\n // noinspection CheckTagEmptyBody\n return Object(preact_min[\"h\"])(\"div\", { style: markdown_default.a.markdown, dangerouslySetInnerHTML: { __html: html } });\n };\n\n return Markdown;\n}(preact_min[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./pages/vldigeometria.js\nvar vldigeometria__templateObject = vldigeometria__taggedTemplateLiteralLoose(['\\nTutte le videolezioni sono state pubblicate sotto licenza [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) dalla Prof.ssa Beatrice Ruini nell\\'anno accademico 2018/2019 sul [portale Dolly 2018](https://dolly.fim.unimore.it/2018/course/view.php?id=14#section-0) (Moodle).\\n\\nPer comodit\\xE0, ho estratto l\\'url sorgente del video dall\\'embed presente nella rispettiva pagina.\\n\\n1. [Definizione di Spazio Vettoriale](https://www.youtube.com/watch?v=7eHEzf4403c) (1:17:29)\\n2. [Sottospazi vettoriali I](https://www.youtube.com/watch?v=FPqrULk5HBU) (37:15)\\n3. [Sottospazi vettoriali II](https://www.youtube.com/watch?v=ubDWUw9hk0k) (43:26)\\n4. [Sottospazi vettoriali III](https://www.youtube.com/watch?v=381n4NPb6Oc) (40:29)\\n5. [Lineare dipendenza e indipendenza](https://www.youtube.com/watch?v=9YVQ5olYrh0) (56:12)\\n6. [Basi di uno spazio vettoriale I](https://www.youtube.com/watch?v=mEF_lcTzEoE) (25:52)\\n7. [Basi di uno spazio vettoriale II](https://www.youtube.com/watch?v=k1r9JfXY53k) (48:24)\\n8. [Teorema di Grassmann](https://www.youtube.com/watch?v=3sqB-MMyCWM) (32:36)\\n9. [Basi e Matrici](https://www.youtube.com/watch?v=Rd6AB_jE7YI) (27:06)\\n10. [Definizione di Applicazioni Lineari](https://www.youtube.com/watch?v=rmd7ffZeVYk) (16:23)\\n11. [Propriet\\xE0 delle Applicazioni Lineari](https://www.youtube.com/watch?v=MH7ztQGkqmw) (31:58)\\n12. [Definizione di determinante](https://www.youtube.com/watch?v=EwubcLwBdzk) (36:43)\\n13. [Propriet\\xE0 e metodo di triangolazione](https://www.youtube.com/watch?v=SFusGarV6HI) (22:36)\\n14. [Teorema di Laplace](https://www.youtube.com/watch?v=BqZDWnKl2nQ) (29:03)\\n15. [4 applicazioni del Teorema di Laplace](https://www.youtube.com/watch?v=2tr3y725GY0) (47:53)\\n16. [Spazi vettoriali euclidei reali - Parte 1](https://www.youtube.com/watch?v=W7Z1hm-jwMM) (28:46)\\n17. [Spazi vettoriali euclidei reali - Parte 2](https://www.youtube.com/watch?v=zjmKE9TMGm8) (27:17)\\n18. [Autovalori e autovettori](https://www.youtube.com/watch?v=XlrlcnvcTtQ) (33:00)\\n19. [Polinomio caratteristico](https://www.youtube.com/watch?v=61icRbgWTdI) (31:31)\\n20. [Teorema diagonalizzabilit\\xE0](https://www.youtube.com/watch?v=wm5V6en9OFo) (18:49)\\n21. [Spazi affini](https://player.vimeo.com/video/291457587) (20:46)\\n22. [Sottospazi affini](https://player.vimeo.com/video/291458991) (21:32)\\n23. [Parallelismo e Riferimenti Affini](https://player.vimeo.com/video/291510181) (16:57)\\n24. [Rappresentazione di Sottospazi Affini](https://player.vimeo.com/video/291510296) (31:17)\\n25. [Spazi Euclidei](https://player.vimeo.com/video/291510612) (35:57)\\n26. [Teoria dei ranghi](https://player.vimeo.com/video/291510964) (9:44)\\n27. [Teoria dei ranghi 2](https://player.vimeo.com/video/291510862) (14:44)\\n\\nNell\\'anno accademico 2018/2019 non sono stati trattati gli argomenti nei video 21, 22 e 23.\\n '], ['\\nTutte le videolezioni sono state pubblicate sotto licenza [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) dalla Prof.ssa Beatrice Ruini nell\\'anno accademico 2018/2019 sul [portale Dolly 2018](https://dolly.fim.unimore.it/2018/course/view.php?id=14#section-0) (Moodle).\\n\\nPer comodit\\xE0, ho estratto l\\'url sorgente del video dall\\'embed presente nella rispettiva pagina.\\n\\n1. [Definizione di Spazio Vettoriale](https://www.youtube.com/watch?v=7eHEzf4403c) (1:17:29)\\n2. [Sottospazi vettoriali I](https://www.youtube.com/watch?v=FPqrULk5HBU) (37:15)\\n3. [Sottospazi vettoriali II](https://www.youtube.com/watch?v=ubDWUw9hk0k) (43:26)\\n4. [Sottospazi vettoriali III](https://www.youtube.com/watch?v=381n4NPb6Oc) (40:29)\\n5. [Lineare dipendenza e indipendenza](https://www.youtube.com/watch?v=9YVQ5olYrh0) (56:12)\\n6. [Basi di uno spazio vettoriale I](https://www.youtube.com/watch?v=mEF_lcTzEoE) (25:52)\\n7. [Basi di uno spazio vettoriale II](https://www.youtube.com/watch?v=k1r9JfXY53k) (48:24)\\n8. [Teorema di Grassmann](https://www.youtube.com/watch?v=3sqB-MMyCWM) (32:36)\\n9. [Basi e Matrici](https://www.youtube.com/watch?v=Rd6AB_jE7YI) (27:06)\\n10. [Definizione di Applicazioni Lineari](https://www.youtube.com/watch?v=rmd7ffZeVYk) (16:23)\\n11. [Propriet\\xE0 delle Applicazioni Lineari](https://www.youtube.com/watch?v=MH7ztQGkqmw) (31:58)\\n12. [Definizione di determinante](https://www.youtube.com/watch?v=EwubcLwBdzk) (36:43)\\n13. [Propriet\\xE0 e metodo di triangolazione](https://www.youtube.com/watch?v=SFusGarV6HI) (22:36)\\n14. [Teorema di Laplace](https://www.youtube.com/watch?v=BqZDWnKl2nQ) (29:03)\\n15. [4 applicazioni del Teorema di Laplace](https://www.youtube.com/watch?v=2tr3y725GY0) (47:53)\\n16. [Spazi vettoriali euclidei reali - Parte 1](https://www.youtube.com/watch?v=W7Z1hm-jwMM) (28:46)\\n17. [Spazi vettoriali euclidei reali - Parte 2](https://www.youtube.com/watch?v=zjmKE9TMGm8) (27:17)\\n18. [Autovalori e autovettori](https://www.youtube.com/watch?v=XlrlcnvcTtQ) (33:00)\\n19. [Polinomio caratteristico](https://www.youtube.com/watch?v=61icRbgWTdI) (31:31)\\n20. [Teorema diagonalizzabilit\\xE0](https://www.youtube.com/watch?v=wm5V6en9OFo) (18:49)\\n21. [Spazi affini](https://player.vimeo.com/video/291457587) (20:46)\\n22. [Sottospazi affini](https://player.vimeo.com/video/291458991) (21:32)\\n23. [Parallelismo e Riferimenti Affini](https://player.vimeo.com/video/291510181) (16:57)\\n24. [Rappresentazione di Sottospazi Affini](https://player.vimeo.com/video/291510296) (31:17)\\n25. [Spazi Euclidei](https://player.vimeo.com/video/291510612) (35:57)\\n26. [Teoria dei ranghi](https://player.vimeo.com/video/291510964) (9:44)\\n27. [Teoria dei ranghi 2](https://player.vimeo.com/video/291510862) (14:44)\\n\\nNell\\'anno accademico 2018/2019 non sono stati trattati gli argomenti nei video 21, 22 e 23.\\n ']);\n\n\n\nfunction vldigeometria__taggedTemplateLiteralLoose(strings, raw) { strings.raw = raw; return strings; }\n\nfunction vldigeometria__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction vldigeometria__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; }\n\nfunction vldigeometria__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; }\n\n\n\n\n\n\nvar vldigeometria_r = String.raw;\n\nvar vldigeometria__ref = Object(preact_min[\"h\"])(\n\t'h1',\n\tnull,\n\t'Videolezioni di Geometria'\n);\n\nvar vldigeometria_VlDiGeometria = function (_Component) {\n\tvldigeometria__inherits(VlDiGeometria, _Component);\n\n\tfunction VlDiGeometria() {\n\t\tvldigeometria__classCallCheck(this, VlDiGeometria);\n\n\t\treturn vldigeometria__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tVlDiGeometria.prototype.render = function render() {\n\t\t//Imported from unimore-info-wiki\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t'div',\n\t\t\t{ style: vldigeometria_default.a.vldigeometria },\n\t\t\tvldigeometria__ref,\n\t\t\tObject(preact_min[\"h\"])(\n\t\t\t\tpanel_Panel,\n\t\t\t\tnull,\n\t\t\t\tObject(preact_min[\"h\"])(\n\t\t\t\t\tmarkdown_Markdown,\n\t\t\t\t\tnull,\n\t\t\t\t\tvldigeometria_r(vldigeometria__templateObject)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t};\n\n\treturn VlDiGeometria;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./pages/mingwinstall.css\nvar mingwinstall = __webpack_require__(\"5m9J\");\nvar mingwinstall_default = /*#__PURE__*/__webpack_require__.n(mingwinstall);\n\n// CONCATENATED MODULE: ./pages/mingwinstall.js\n\n\nfunction mingwinstall__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction mingwinstall__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; }\n\nfunction mingwinstall__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; }\n\n\n\n\n\nvar mingwinstall__ref = Object(preact_min[\"h\"])(\n\t'h1',\n\tnull,\n\t'Come installare MinGW'\n);\n\nvar mingwinstall__ref2 = Object(preact_min[\"h\"])(\n\tpanel_Panel,\n\tnull,\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Scaricate ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'a',\n\t\t\t{ href: 'https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/' },\n\t\t\t'l\\'installer ufficiale'\n\t\t),\n\t\t', ed eseguitelo.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/mDZSqjV.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Dovrebbe comparire questa schermata. Cliccate su ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Install'\n\t\t),\n\t\t', poi scegliete una cartella di installazione (ricordatevela!) e poi ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Continue'\n\t\t),\n\t\t'. Lasciate stare le altre opzioni, dovrebbero essere tutte spuntate, tranne ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'For all users'\n\t\t),\n\t\t', che dovrebbe essere disattivato.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/brdw8Xy.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Aspettate che finisca il download. Pochi secondi dopo, dovrebbe finire e dovrebbe apparire un tasto',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Continue'\n\t\t),\n\t\t'. Premetelo.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/aPTwrxz.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Dovrebbe apparirvi questa finestra. L\\'installer di MinGW \\xE8 una specie di gestore pacchetti (tipo ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'apt'\n\t\t),\n\t\t' su Ubuntu); potete scegliere quali pacchetti installare, e quindi quali funzionalit\\xE0.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/5QLSkFN.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Nel nostro caso, dovrebbero servirci ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'mingw32-base-bin'\n\t\t),\n\t\t' (per il C e alcune librerie C++) e',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'mingw32-gcc-g++-bin'\n\t\t),\n\t\t' (per il C++). Cliccate, quindi, sui due quadratini corrispondenti, e premete',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Mark for Installation'\n\t\t),\n\t\t'. Dovrebbe comparire una freccia gialla sul quadratino.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/zP74nks.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Ora, \\xE8 il momento di installare i pacchetti. Aprite il men\\xF9 ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Installation'\n\t\t),\n\t\t', poi premete',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Apply Changes'\n\t\t),\n\t\t', e di nuovo ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Apply'\n\t\t),\n\t\t'.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/jp4uz5B.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Lasciate che scarichi, ci vorr\\xE0 un po\\'. Guardatevi un video nel frattempo, fatevi una partitina a qualcosa, tornate dopo circa 10 minuti.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/Lq9IepY.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Una volta installato, dobbiamo aggiungere ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'g++'\n\t\t),\n\t\t' ai programmi eseguibili da Prompt dei Comandi: premete il tasto ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'kbd',\n\t\t\tnull,\n\t\t\t'Windows'\n\t\t),\n\t\t', e scrivete ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'PATH'\n\t\t),\n\t\t'. Windows dovrebbe trovarvi automaticamente quell\\'opzione.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/dy3b5Ub.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Dentro la finestra di ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'i',\n\t\t\tnull,\n\t\t\t'Propriet\\xE0 del Sistema'\n\t\t),\n\t\t', premete ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Variabili d\\'ambiente'\n\t\t),\n\t\t'.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/FjYpT1n.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Trovate la variabile d\\'ambiente globale ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Path'\n\t\t),\n\t\t', e fateci doppio click per modificarla.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/klZQ9So.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Ora dovreste vedere l\\'elenco di tutte le cartelle contenenti programmi eseguibili da terminale: dobbiamo aggiungere quella di MinGW! Premete ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'Sfoglia'\n\t\t),\n\t\t'.'\n\t),\n\tObject(preact_min[\"h\"])('img', { src: 'https://i.imgur.com/F6lBCqS.png', alt: '' }),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Trovate la cartella in cui avete installato MinGW (vi avevo detto di ricordarvela!); entrateci, poi selezionate la sottocartella ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'bin'\n\t\t),\n\t\t' e premete ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'OK'\n\t\t),\n\t\t' su tutte le finestre che avete aperto fino ad ora, chiudendole.'\n\t),\n\tObject(preact_min[\"h\"])(\n\t\t'p',\n\t\tnull,\n\t\t' Complimenti! Avete installato MinGW e potete compilare programmi C e C++ da Windows! Avete a disposizione',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'gcc'\n\t\t),\n\t\t' e ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'code',\n\t\t\tnull,\n\t\t\t'g++'\n\t\t),\n\t\t' sul Prompt dei Comandi, e potete finalmente creare dei file .exe! '\n\t)\n);\n\nvar mingwinstall_MingwInstall = function (_Component) {\n\tmingwinstall__inherits(MingwInstall, _Component);\n\n\tfunction MingwInstall() {\n\t\tmingwinstall__classCallCheck(this, MingwInstall);\n\n\t\treturn mingwinstall__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tMingwInstall.prototype.render = function render() {\n\t\t//Imported from unimore-info-wiki\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t'div',\n\t\t\t{ style: mingwinstall_default.a.mingwinstall },\n\t\t\tmingwinstall__ref,\n\t\t\tmingwinstall__ref2\n\t\t);\n\t};\n\n\treturn MingwInstall;\n}(preact_min[\"Component\"]);\n\n\n// EXTERNAL MODULE: ./components/copyright.css\nvar copyright = __webpack_require__(\"qMTX\");\nvar copyright_default = /*#__PURE__*/__webpack_require__.n(copyright);\n\n// CONCATENATED MODULE: ./components/copyright.js\n\n\nfunction copyright__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction copyright__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; }\n\nfunction copyright__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; }\n\n\n\n\nvar copyright__ref = Object(preact_min[\"h\"])(\n\t'a',\n\t{ href: 'https://creativecommons.org/licenses/by-sa/4.0/' },\n\t'CC BY-SA 4.0'\n);\n\nvar copyright__ref2 = Object(preact_min[\"h\"])(\n\t'a',\n\t{ href: 'https://github.com/Steffo99/appuntiweb' },\n\t'Codice sorgente'\n);\n\nvar copyright_Copyright = function (_Component) {\n\tcopyright__inherits(Copyright, _Component);\n\n\tfunction Copyright() {\n\t\tcopyright__classCallCheck(this, Copyright);\n\n\t\treturn copyright__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tCopyright.prototype.render = function render() {\n\t\treturn Object(preact_min[\"h\"])(\n\t\t\t'div',\n\t\t\t{ 'class': copyright_default.a.copyright },\n\t\t\t'\\xA9 2019 - Stefano Pigozzi - ',\n\t\t\tcopyright__ref,\n\t\t\t' - ',\n\t\t\tcopyright__ref2\n\t\t);\n\t};\n\n\treturn Copyright;\n}(preact_min[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return App; });\n\n\nfunction index__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction index__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; }\n\nfunction index__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; }\n\n\n\n\n\n\n\n\n\n\n\n// noinspection JSUnusedGlobalSymbols\n\nvar index__ref = Object(preact_min[\"h\"])(\n\t'div',\n\t{ id: 'app' },\n\tObject(preact_min[\"h\"])(\n\t\t'h1',\n\t\tnull,\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'a',\n\t\t\t{ href: '/' },\n\t\t\t'Appuntiweb'\n\t\t),\n\t\t' ',\n\t\tObject(preact_min[\"h\"])(\n\t\t\t'small',\n\t\t\tnull,\n\t\t\t'di ',\n\t\t\tObject(preact_min[\"h\"])(\n\t\t\t\t'a',\n\t\t\t\t{ href: 'https://steffo.eu/' },\n\t\t\t\t'Steffo'\n\t\t\t)\n\t\t)\n\t),\n\tObject(preact_min[\"h\"])(\n\t\tpreact_router_es,\n\t\tnull,\n\t\tObject(preact_min[\"h\"])(home_Home, { path: '/' }),\n\t\tObject(preact_min[\"h\"])(fisica_Fisica, { path: '/fisica' }),\n\t\tObject(preact_min[\"h\"])(vldigeometria_VlDiGeometria, { path: '/vldigeometria' }),\n\t\tObject(preact_min[\"h\"])(mingwinstall_MingwInstall, { path: '/mingwinstall' })\n\t),\n\tObject(preact_min[\"h\"])(copyright_Copyright, null)\n);\n\nvar App = function (_Component) {\n\tindex__inherits(App, _Component);\n\n\tfunction App() {\n\t\tindex__classCallCheck(this, App);\n\n\t\treturn index__possibleConstructorReturn(this, _Component.apply(this, arguments));\n\t}\n\n\tApp.prototype.render = function render() {\n\t\treturn index__ref;\n\t};\n\n\treturn App;\n}(preact_min[\"Component\"]);\n\n\n\n/***/ }),\n\n/***/ \"KM04\":\n/***/ (function(module, exports, __webpack_require__) {\n\n!function () {\n \"use strict\";\n function e(e, t) {\n var n,\n o,\n r,\n i,\n l = W;for (i = arguments.length; i-- > 2;) {\n P.push(arguments[i]);\n }t && null != t.children && (P.length || P.push(t.children), delete t.children);while (P.length) {\n if ((o = P.pop()) && void 0 !== o.pop) for (i = o.length; i--;) {\n P.push(o[i]);\n } else \"boolean\" == typeof o && (o = null), (r = \"function\" != typeof e) && (null == o ? o = \"\" : \"number\" == typeof o ? o += \"\" : \"string\" != typeof o && (r = !1)), r && n ? l[l.length - 1] += o : l === W ? l = [o] : l.push(o), n = r;\n }var a = new T();return a.nodeName = e, a.children = l, a.attributes = null == t ? void 0 : t, a.key = null == t ? void 0 : t.key, void 0 !== M.vnode && M.vnode(a), a;\n }function t(e, t) {\n for (var n in t) {\n e[n] = t[n];\n }return e;\n }function n(e, t) {\n e && (\"function\" == typeof e ? e(t) : e.current = t);\n }function o(n, o) {\n return e(n.nodeName, t(t({}, n.attributes), o), arguments.length > 2 ? [].slice.call(arguments, 2) : n.children);\n }function r(e) {\n !e.__d && (e.__d = !0) && 1 == V.push(e) && (M.debounceRendering || D)(i);\n }function i() {\n var e;while (e = V.pop()) {\n e.__d && x(e);\n }\n }function l(e, t, n) {\n return \"string\" == typeof t || \"number\" == typeof t ? void 0 !== e.splitText : \"string\" == typeof t.nodeName ? !e._componentConstructor && a(e, t.nodeName) : n || e._componentConstructor === t.nodeName;\n }function a(e, t) {\n return e.__n === t || e.nodeName.toLowerCase() === t.toLowerCase();\n }function u(e) {\n var n = t({}, e.attributes);n.children = e.children;var o = e.nodeName.defaultProps;if (void 0 !== o) for (var r in o) {\n void 0 === n[r] && (n[r] = o[r]);\n }return n;\n }function c(e, t) {\n var n = t ? document.createElementNS(\"http://www.w3.org/2000/svg\", e) : document.createElement(e);return n.__n = e, n;\n }function p(e) {\n var t = e.parentNode;t && t.removeChild(e);\n }function s(e, t, o, r, i) {\n if (\"className\" === t && (t = \"class\"), \"key\" === t) ;else if (\"ref\" === t) n(o, null), n(r, e);else if (\"class\" !== t || i) {\n if (\"style\" === t) {\n if (r && \"string\" != typeof r && \"string\" != typeof o || (e.style.cssText = r || \"\"), r && \"object\" == typeof r) {\n if (\"string\" != typeof o) for (var l in o) {\n l in r || (e.style[l] = \"\");\n }for (var l in r) {\n e.style[l] = \"number\" == typeof r[l] && !1 === E.test(l) ? r[l] + \"px\" : r[l];\n }\n }\n } else if (\"dangerouslySetInnerHTML\" === t) r && (e.innerHTML = r.__html || \"\");else if (\"o\" == t[0] && \"n\" == t[1]) {\n var a = t !== (t = t.replace(/Capture$/, \"\"));t = t.toLowerCase().substring(2), r ? o || e.addEventListener(t, _, a) : e.removeEventListener(t, _, a), (e.__l || (e.__l = {}))[t] = r;\n } else if (\"list\" !== t && \"type\" !== t && !i && t in e) {\n try {\n e[t] = null == r ? \"\" : r;\n } catch (e) {}null != r && !1 !== r || \"spellcheck\" == t || e.removeAttribute(t);\n } else {\n var u = i && t !== (t = t.replace(/^xlink:?/, \"\"));null == r || !1 === r ? u ? e.removeAttributeNS(\"http://www.w3.org/1999/xlink\", t.toLowerCase()) : e.removeAttribute(t) : \"function\" != typeof r && (u ? e.setAttributeNS(\"http://www.w3.org/1999/xlink\", t.toLowerCase(), r) : e.setAttribute(t, r));\n }\n } else e.className = r || \"\";\n }function _(e) {\n return this.__l[e.type](M.event && M.event(e) || e);\n }function f() {\n var e;while (e = A.shift()) {\n M.afterMount && M.afterMount(e), e.componentDidMount && e.componentDidMount();\n }\n }function d(e, t, n, o, r, i) {\n H++ || (R = null != r && void 0 !== r.ownerSVGElement, B = null != e && !(\"__preactattr_\" in e));var l = h(e, t, n, o, i);return r && l.parentNode !== r && r.appendChild(l), --H || (B = !1, i || f()), l;\n }function h(e, t, n, o, r) {\n var i = e,\n l = R;if (null != t && \"boolean\" != typeof t || (t = \"\"), \"string\" == typeof t || \"number\" == typeof t) return e && void 0 !== e.splitText && e.parentNode && (!e._component || r) ? e.nodeValue != t && (e.nodeValue = t) : (i = document.createTextNode(t), e && (e.parentNode && e.parentNode.replaceChild(i, e), v(e, !0))), i.__preactattr_ = !0, i;var u = t.nodeName;if (\"function\" == typeof u) return N(e, t, n, o);if (R = \"svg\" === u || \"foreignObject\" !== u && R, u += \"\", (!e || !a(e, u)) && (i = c(u, R), e)) {\n while (e.firstChild) {\n i.appendChild(e.firstChild);\n }e.parentNode && e.parentNode.replaceChild(i, e), v(e, !0);\n }var p = i.firstChild,\n s = i.__preactattr_,\n _ = t.children;if (null == s) {\n s = i.__preactattr_ = {};for (var f = i.attributes, d = f.length; d--;) {\n s[f[d].name] = f[d].value;\n }\n }return !B && _ && 1 === _.length && \"string\" == typeof _[0] && null != p && void 0 !== p.splitText && null == p.nextSibling ? p.nodeValue != _[0] && (p.nodeValue = _[0]) : (_ && _.length || null != p) && m(i, _, n, o, B || null != s.dangerouslySetInnerHTML), y(i, t.attributes, s), R = l, i;\n }function m(e, t, n, o, r) {\n var i,\n a,\n u,\n c,\n s,\n _ = e.childNodes,\n f = [],\n d = {},\n m = 0,\n b = 0,\n y = _.length,\n g = 0,\n w = t ? t.length : 0;if (0 !== y) for (var C = 0; C < y; C++) {\n var x = _[C],\n N = x.__preactattr_,\n k = w && N ? x._component ? x._component.__k : N.key : null;null != k ? (m++, d[k] = x) : (N || (void 0 !== x.splitText ? !r || x.nodeValue.trim() : r)) && (f[g++] = x);\n }if (0 !== w) for (var C = 0; C < w; C++) {\n c = t[C], s = null;var k = c.key;if (null != k) m && void 0 !== d[k] && (s = d[k], d[k] = void 0, m--);else if (b < g) for (i = b; i < g; i++) {\n if (void 0 !== f[i] && l(a = f[i], c, r)) {\n s = a, f[i] = void 0, i === g - 1 && g--, i === b && b++;break;\n }\n }s = h(s, c, n, o), u = _[C], s && s !== e && s !== u && (null == u ? e.appendChild(s) : s === u.nextSibling ? p(u) : e.insertBefore(s, u));\n }if (m) for (var C in d) {\n void 0 !== d[C] && v(d[C], !1);\n }while (b <= g) {\n void 0 !== (s = f[g--]) && v(s, !1);\n }\n }function v(e, t) {\n var o = e._component;o ? k(o) : (null != e.__preactattr_ && n(e.__preactattr_.ref, null), !1 !== t && null != e.__preactattr_ || p(e), b(e));\n }function b(e) {\n e = e.lastChild;while (e) {\n var t = e.previousSibling;v(e, !0), e = t;\n }\n }function y(e, t, n) {\n var o;for (o in n) {\n t && null != t[o] || null == n[o] || s(e, o, n[o], n[o] = void 0, R);\n }for (o in t) {\n \"children\" === o || \"innerHTML\" === o || o in n && t[o] === (\"value\" === o || \"checked\" === o ? e[o] : n[o]) || s(e, o, n[o], n[o] = t[o], R);\n }\n }function g(e, t, n) {\n var o,\n r = F.length;e.prototype && e.prototype.render ? (o = new e(t, n), U.call(o, t, n)) : (o = new U(t, n), o.constructor = e, o.render = w);while (r--) {\n if (F[r].constructor === e) return o.__b = F[r].__b, F.splice(r, 1), o;\n }return o;\n }function w(e, t, n) {\n return this.constructor(e, n);\n }function C(e, t, o, i, l) {\n e.__x || (e.__x = !0, e.__r = t.ref, e.__k = t.key, delete t.ref, delete t.key, void 0 === e.constructor.getDerivedStateFromProps && (!e.base || l ? e.componentWillMount && e.componentWillMount() : e.componentWillReceiveProps && e.componentWillReceiveProps(t, i)), i && i !== e.context && (e.__c || (e.__c = e.context), e.context = i), e.__p || (e.__p = e.props), e.props = t, e.__x = !1, 0 !== o && (1 !== o && !1 === M.syncComponentUpdates && e.base ? r(e) : x(e, 1, l)), n(e.__r, e));\n }function x(e, n, o, r) {\n if (!e.__x) {\n var i,\n l,\n a,\n c = e.props,\n p = e.state,\n s = e.context,\n _ = e.__p || c,\n h = e.__s || p,\n m = e.__c || s,\n b = e.base,\n y = e.__b,\n w = b || y,\n N = e._component,\n U = !1,\n S = m;if (e.constructor.getDerivedStateFromProps && (p = t(t({}, p), e.constructor.getDerivedStateFromProps(c, p)), e.state = p), b && (e.props = _, e.state = h, e.context = m, 2 !== n && e.shouldComponentUpdate && !1 === e.shouldComponentUpdate(c, p, s) ? U = !0 : e.componentWillUpdate && e.componentWillUpdate(c, p, s), e.props = c, e.state = p, e.context = s), e.__p = e.__s = e.__c = e.__b = null, e.__d = !1, !U) {\n i = e.render(c, p, s), e.getChildContext && (s = t(t({}, s), e.getChildContext())), b && e.getSnapshotBeforeUpdate && (S = e.getSnapshotBeforeUpdate(_, h));var L,\n T,\n P = i && i.nodeName;if (\"function\" == typeof P) {\n var W = u(i);l = N, l && l.constructor === P && W.key == l.__k ? C(l, W, 1, s, !1) : (L = l, e._component = l = g(P, W, s), l.__b = l.__b || y, l.__u = e, C(l, W, 0, s, !1), x(l, 1, o, !0)), T = l.base;\n } else a = w, L = N, L && (a = e._component = null), (w || 1 === n) && (a && (a._component = null), T = d(a, i, s, o || !b, w && w.parentNode, !0));if (w && T !== w && l !== N) {\n var D = w.parentNode;D && T !== D && (D.replaceChild(T, w), L || (w._component = null, v(w, !1)));\n }if (L && k(L), e.base = T, T && !r) {\n var E = e,\n V = e;while (V = V.__u) {\n (E = V).base = T;\n }T._component = E, T._componentConstructor = E.constructor;\n }\n }!b || o ? A.push(e) : U || (e.componentDidUpdate && e.componentDidUpdate(_, h, S), M.afterUpdate && M.afterUpdate(e));while (e.__h.length) {\n e.__h.pop().call(e);\n }H || r || f();\n }\n }function N(e, t, n, o) {\n var r = e && e._component,\n i = r,\n l = e,\n a = r && e._componentConstructor === t.nodeName,\n c = a,\n p = u(t);while (r && !c && (r = r.__u)) {\n c = r.constructor === t.nodeName;\n }return r && c && (!o || r._component) ? (C(r, p, 3, n, o), e = r.base) : (i && !a && (k(i), e = l = null), r = g(t.nodeName, p, n), e && !r.__b && (r.__b = e, l = null), C(r, p, 1, n, o), e = r.base, l && e !== l && (l._component = null, v(l, !1))), e;\n }function k(e) {\n M.beforeUnmount && M.beforeUnmount(e);var t = e.base;e.__x = !0, e.componentWillUnmount && e.componentWillUnmount(), e.base = null;var o = e._component;o ? k(o) : t && (null != t.__preactattr_ && n(t.__preactattr_.ref, null), e.__b = t, p(t), F.push(e), b(t)), n(e.__r, null);\n }function U(e, t) {\n this.__d = !0, this.context = t, this.props = e, this.state = this.state || {}, this.__h = [];\n }function S(e, t, n) {\n return d(n, e, {}, !1, t, !1);\n }function L() {\n return {};\n }var T = function T() {},\n M = {},\n P = [],\n W = [],\n D = \"function\" == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout,\n E = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,\n V = [],\n A = [],\n H = 0,\n R = !1,\n B = !1,\n F = [];t(U.prototype, { setState: function setState(e, n) {\n this.__s || (this.__s = this.state), this.state = t(t({}, this.state), \"function\" == typeof e ? e(this.state, this.props) : e), n && this.__h.push(n), r(this);\n }, forceUpdate: function forceUpdate(e) {\n e && this.__h.push(e), x(this, 2);\n }, render: function render() {} });var j = { h: e, createElement: e, cloneElement: o, createRef: L, Component: U, render: S, rerender: i, options: M }; true ? module.exports = j : self.preact = j;\n}();\n//# sourceMappingURL=preact.min.js.map\n\n/***/ }),\n\n/***/ \"MKE3\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"markdown\":\"markdown__2fpjQ\"};\n\n/***/ }),\n\n/***/ \"MeW5\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"minus\":\"minus__2d_8r\"};\n\n/***/ }),\n\n/***/ \"P9k+\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"panel\":\"panel__22fOQ\"};\n\n/***/ }),\n\n/***/ \"ZcXo\":\n/***/ (function(module, exports) {\n\nmodule.exports = {\"name\":\"Appunti Web\",\"short_name\":\"Appunti Web\",\"start_url\":\"/appuntiweb/\",\"display\":\"standalone\",\"orientation\":\"portrait\",\"background_color\":\"#0d193b\",\"theme_color\":\"#a0ccff\",\"icons\":[{\"src\":\"/assets/icon.png\",\"type\":\"image/png\",\"sizes\":\"800x800\"}]}\n\n/***/ }),\n\n/***/ \"ddTt\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"plus\":\"plus__1JPyf\"};\n\n/***/ }),\n\n/***/ \"jHTF\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ \"qMTX\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"copyright\":\"copyright__TBGn1\"};\n\n/***/ }),\n\n/***/ \"tO1d\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"todo\":\"todo__5Soco\"};\n\n/***/ }),\n\n/***/ \"xHuH\":\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n/******/ });\n\n\n// WEBPACK FOOTER //\n// bundle.4cb97.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"99bU\");\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e1a478a1eee9c6f724e6","// removed by extract-text-webpack-plugin\nmodule.exports = {\"latex\":\"latex__34DCT\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/latex.css\n// module id = +uq9\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"split\":\"split__2Bl8C\",\"splitparent\":\"splitparent__nqY7W\",\"splitchild\":\"splitchild__3Ip86\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/split.css\n// module id = 1EpE\n// module chunks = 0",";/*! showdown v 1.9.1 - 02-11-2019 */\r\n(function(){\r\n/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n description: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n description: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n description: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n description: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n description: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n description: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n description: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n description: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n\r\n/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n\r\n/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/&quot;/g, '\"')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof console === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f&zwj;\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4&zwj;\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71&zwj;\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47&zwj;\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77&zwj;\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f&zwj;\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41&zwj;\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f&zwj;\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d&zwj;\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f&zwj;\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82&zwj;\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87&zwj;\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68&zwj;\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68&zwj;\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38&zwj;\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68&zwj;\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26&zwj;\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68&zwj;\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68&zwj;\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68&zwj;\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68&zwj;\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68&zwj;\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39&zwj;\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68&zwj;\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68&zwj;\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68&zwj;\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e&zwj;\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68&zwj;\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37&zwj;\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68&zwj;\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68&zwj;\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68&zwj;\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68&zwj;\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86&zwj;\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c&zwj;\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5&zwj;\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45&zwj;\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46&zwj;\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e&zwj;\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e&zwj;\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f&zwj;\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b&zwj;\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3&zwj;\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3&zwj;\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4&zwj;\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca&zwj;\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81&zwj;\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6&zwj;\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f&zwj;\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69&zwj;\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69&zwj;\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38&zwj;\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69&zwj;\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26&zwj;\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69&zwj;\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69&zwj;\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69&zwj;\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69&zwj;\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69&zwj;\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39&zwj;\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69&zwj;\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69&zwj;\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69&zwj;\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e&zwj;\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69&zwj;\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37&zwj;\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69&zwj;\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69&zwj;\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69&zwj;\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69&zwj;\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73&zwj;\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c&zwj;\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n\r\n/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, '&nbsp;');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n\r\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '&quot;');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n\r\n// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n\r\nshowdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n\r\n/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof text === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '&lt;');\n\n // Encode <\n text = text.replace(/</g, '&lt;');\n\n // Encode >\n text = text.replace(/>/g, '&gt;');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&amp;')\n // Do the angle bracket song and dance:\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n\r\nshowdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n\r\nshowdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '&lt;' + inside + '&gt;';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '&quot;')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '&quot;')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&amp;')\n // double quotes\n .replace(/\"/g, '&quot;');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n\r\n/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n\r\n/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n\r\n/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n\r\n/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n linkId = linkId.toLowerCase();\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n\r\nshowdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n\r\nshowdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n\r\nshowdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n\r\nshowdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n\r\nshowdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n\r\n\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n});\n\r\nshowdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n\r\nvar root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n}).call(this);\r\n\n//# sourceMappingURL=showdown.js.map\r\n\n\n\n// WEBPACK FOOTER //\n// ../node_modules/showdown/dist/showdown.js","'use strict';\n\nvar _preact = require('preact');\n\nif (process.env.NODE_ENV === 'development') {\n\trequire('preact/devtools');\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator && location.protocol === 'https:') {\n\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw.js');\n}\n\nconst interopDefault = m => m && m.default ? m.default : m;\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root = document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\troot = (0, _preact.render)((0, _preact.h)(app), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n\n\n// WEBPACK FOOTER //\n// ../C:/Users/stepi/AppData/Roaming/npm/node_modules/preact-cli/lib/lib/entry.js","import { Component, cloneElement, h } from 'preact';\n\nvar EMPTY$1 = {};\n\nfunction assign(obj, props) {\n\t// eslint-disable-next-line guard-for-in\n\tfor (var i in props) {\n\t\tobj[i] = props[i];\n\t}\n\treturn obj;\n}\n\nfunction exec(url, route, opts) {\n\tvar reg = /(?:\\?([^#]*))?(#.*)?$/,\n\t\tc = url.match(reg),\n\t\tmatches = {},\n\t\tret;\n\tif (c && c[1]) {\n\t\tvar p = c[1].split('&');\n\t\tfor (var i=0; i<p.length; i++) {\n\t\t\tvar r = p[i].split('=');\n\t\t\tmatches[decodeURIComponent(r[0])] = decodeURIComponent(r.slice(1).join('='));\n\t\t}\n\t}\n\turl = segmentize(url.replace(reg, ''));\n\troute = segmentize(route || '');\n\tvar max = Math.max(url.length, route.length);\n\tfor (var i$1=0; i$1<max; i$1++) {\n\t\tif (route[i$1] && route[i$1].charAt(0)===':') {\n\t\t\tvar param = route[i$1].replace(/(^\\:|[+*?]+$)/g, ''),\n\t\t\t\tflags = (route[i$1].match(/[+*?]+$/) || EMPTY$1)[0] || '',\n\t\t\t\tplus = ~flags.indexOf('+'),\n\t\t\t\tstar = ~flags.indexOf('*'),\n\t\t\t\tval = url[i$1] || '';\n\t\t\tif (!val && !star && (flags.indexOf('?')<0 || plus)) {\n\t\t\t\tret = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatches[param] = decodeURIComponent(val);\n\t\t\tif (plus || star) {\n\t\t\t\tmatches[param] = url.slice(i$1).map(decodeURIComponent).join('/');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse if (route[i$1]!==url[i$1]) {\n\t\t\tret = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (opts.default!==true && ret===false) { return false; }\n\treturn matches;\n}\n\nfunction pathRankSort(a, b) {\n\treturn (\n\t\t(a.rank < b.rank) ? 1 :\n\t\t(a.rank > b.rank) ? -1 :\n\t\t(a.index - b.index)\n\t);\n}\n\n// filter out VNodes without attributes (which are unrankeable), and add `index`/`rank` properties to be used in sorting.\nfunction prepareVNodeForRanking(vnode, index) {\n\tvnode.index = index;\n\tvnode.rank = rankChild(vnode);\n\treturn vnode.attributes;\n}\n\nfunction segmentize(url) {\n\treturn url.replace(/(^\\/+|\\/+$)/g, '').split('/');\n}\n\nfunction rankSegment(segment) {\n\treturn segment.charAt(0)==':' ? (1 + '*+?'.indexOf(segment.charAt(segment.length-1))) || 4 : 5;\n}\n\nfunction rank(path) {\n\treturn segmentize(path).map(rankSegment).join('');\n}\n\nfunction rankChild(vnode) {\n\treturn vnode.attributes.default ? 0 : rank(vnode.attributes.path);\n}\n\nvar customHistory = null;\n\nvar ROUTERS = [];\n\nvar subscribers = [];\n\nvar EMPTY = {};\n\nfunction isPreactElement(node) {\n\treturn node.__preactattr_!=null || typeof Symbol!=='undefined' && node[Symbol.for('preactattr')]!=null;\n}\n\nfunction setUrl(url, type) {\n\tif ( type === void 0 ) type='push';\n\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tvar url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn (\"\" + (url.pathname || '') + (url.search || ''));\n}\n\n\n\nfunction route(url, replace) {\n\tif ( replace === void 0 ) replace=false;\n\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (var i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) { return true; }\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tvar didRoute = false;\n\tfor (var i=0; i<ROUTERS.length; i++) {\n\t\tif (ROUTERS[i].routeTo(url)===true) {\n\t\t\tdidRoute = true;\n\t\t}\n\t}\n\tfor (var i$1=subscribers.length; i$1--; ) {\n\t\tsubscribers[i$1](url);\n\t}\n\treturn didRoute;\n}\n\n\nfunction routeFromLink(node) {\n\t// only valid elements\n\tif (!node || !node.getAttribute) { return; }\n\n\tvar href = node.getAttribute('href'),\n\t\ttarget = node.getAttribute('target');\n\n\t// ignore links with targets and non-path URLs\n\tif (!href || !href.match(/^\\//g) || (target && !target.match(/^_?self$/i))) { return; }\n\n\t// attempt to route, if no match simply cede control to browser\n\treturn route(href);\n}\n\n\nfunction handleLinkClick(e) {\n\tif (e.button==0) {\n\t\trouteFromLink(e.currentTarget || e.target || this);\n\t\treturn prevent(e);\n\t}\n}\n\n\nfunction prevent(e) {\n\tif (e) {\n\t\tif (e.stopImmediatePropagation) { e.stopImmediatePropagation(); }\n\t\tif (e.stopPropagation) { e.stopPropagation(); }\n\t\te.preventDefault();\n\t}\n\treturn false;\n}\n\n\nfunction delegateLinkHandler(e) {\n\t// ignore events the browser takes care of already:\n\tif (e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button!==0) { return; }\n\n\tvar t = e.target;\n\tdo {\n\t\tif (String(t.nodeName).toUpperCase()==='A' && t.getAttribute('href') && isPreactElement(t)) {\n\t\t\tif (t.hasAttribute('native')) { return; }\n\t\t\t// if link is handled by the router, prevent browser defaults\n\t\t\tif (routeFromLink(t)) {\n\t\t\t\treturn prevent(e);\n\t\t\t}\n\t\t}\n\t} while ((t=t.parentNode));\n}\n\n\nvar eventListenersInitialized = false;\n\nfunction initEventListeners() {\n\tif (eventListenersInitialized) { return; }\n\n\tif (typeof addEventListener==='function') {\n\t\tif (!customHistory) {\n\t\t\taddEventListener('popstate', function () {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nvar Router = (function (Component$$1) {\n\tfunction Router(props) {\n\t\tComponent$$1.call(this, props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tif ( Component$$1 ) Router.__proto__ = Component$$1;\n\tRouter.prototype = Object.create( Component$$1 && Component$$1.prototype );\n\tRouter.prototype.constructor = Router;\n\n\tRouter.prototype.shouldComponentUpdate = function shouldComponentUpdate (props) {\n\t\tif (props.static!==true) { return true; }\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t};\n\n\t/** Check if the given URL can be matched against any children */\n\tRouter.prototype.canRoute = function canRoute (url) {\n\t\treturn this.getMatchingChildren(this.props.children, url, false).length > 0;\n\t};\n\n\t/** Re-render children with a new URL to match against. */\n\tRouter.prototype.routeTo = function routeTo (url) {\n\t\tthis._didRoute = false;\n\t\tthis.setState({ url: url });\n\n\t\t// if we're in the middle of an update, don't synchronously re-route.\n\t\tif (this.updating) { return this.canRoute(url); }\n\n\t\tthis.forceUpdate();\n\t\treturn this._didRoute;\n\t};\n\n\tRouter.prototype.componentWillMount = function componentWillMount () {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidMount = function componentDidMount () {\n\t\tvar this$1 = this;\n\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen(function (location) {\n\t\t\t\tthis$1.routeTo((\"\" + (location.pathname || '') + (location.search || '')));\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.componentWillUnmount = function componentWillUnmount () {\n\t\tif (typeof this.unlisten==='function') { this.unlisten(); }\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t};\n\n\tRouter.prototype.componentWillUpdate = function componentWillUpdate () {\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidUpdate = function componentDidUpdate () {\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.getMatchingChildren = function getMatchingChildren (children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( function (vnode) {\n\t\t\t\tvar matches = exec(url, vnode.attributes.path, vnode.attributes);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tvar newProps = { url: url, matches: matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t};\n\n\tRouter.prototype.render = function render (ref, ref$1) {\n\t\tvar children = ref.children;\n\t\tvar onChange = ref.onChange;\n\t\tvar url = ref$1.url;\n\n\t\tvar active = this.getMatchingChildren(children, url, true);\n\n\t\tvar current = active[0] || null;\n\t\tthis._didRoute = !!current;\n\n\t\tvar previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl: url,\n\t\t\t\t\tprevious: previous,\n\t\t\t\t\tactive: active,\n\t\t\t\t\tcurrent: current\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t};\n\n\treturn Router;\n}(Component));\n\nvar Link = function (props) { return (\n\th('a', assign({ onClick: handleLinkClick }, props))\n); };\n\nvar Route = function (props) { return h(props.component, props); };\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link };export default Router;\n//# sourceMappingURL=preact-router.es.js.map\n\n\n\n// WEBPACK FOOTER //\n// ../node_modules/preact-router/dist/preact-router.es.js","import style from \"./panel.css\";\nimport { Component } from 'preact';\n\nexport default class Panel extends Component {\n\trender() {\n\t\tlet title = null;\n\t\tif(this.props.title !== undefined) {\n\t\t\ttitle = (<h3>{this.props.title}</h3>)\n\t\t}\n\t\treturn (\n\t\t\t<div class={style.panel}>\n\t\t\t\t{title}\n\t\t\t\t{this.props.children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./components/panel.js","import style from \"./split.css\";\nimport { Component } from 'preact';\n\nexport default class Split extends Component {\n\trender() {\n\t let title = null;\n\t if(this.props.title !== undefined) {\n title = (<h2>{this.props.title}</h2>)\n }\n\n let children;\n if(Array.isArray(this.props.children)) {\n children = this.props.children.map(element => {\n return (<div class={style.splitchild}>{element}</div>);\n });\n }\n else {\n children = <div class={style.splitchild}>{this.props.children}</div>;\n }\n\t\treturn (\n\t <div class={style.split}>\n {title}\n <div class={style.splitparent}>{children}</div>\n </div>\n );\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./components/split.js","import style from \"./todo.css\";\r\nimport { Component } from 'preact';\r\n\r\nexport default class Todo extends Component {\r\n\trender() {\r\n\t\treturn <span class={style.todo}>{this.props.children}</span>;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./components/todo.js","import style from './home.css'\r\nimport { Component } from 'preact';\r\nimport Panel from '../components/panel';\r\nimport Split from '../components/split';\r\nimport Todo from '../components/todo';\r\n\r\nexport default class Home extends Component {\r\n render() {\r\n return (\r\n <div style={style.home}>\r\n <h1>Indice</h1>\r\n <Split title=\"Argomenti\">\r\n <Panel title={<a href=\"/fisica\">Fisica</a>}>\r\n <p>\r\n Appunti delle <a href=\"http://personale.unimore.it/rubrica/contenutiad/brunetti/2019/58025/N0/N0/9999\">lezioni di Fisica</a> del <a href=\"https://www.unimore.it/didattica/mlaurea.html?ID=54\">corso triennale di Informatica</a> all'<a href=\"https://www.unimore.it/\">Unimore</a>, tenute dalla <a href=\"https://personale.unimore.it/rubrica/dettaglio/brunetti\">Prof.ssa Rossella Brunetti</a> nel primo semestre dell'Anno Accademico 2019/2020.\r\n </p>\r\n <p>\r\n <Todo>Work in progress</Todo>\r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"https://github.com/Steffo99/appunti-universitari/tree/master/2019_SistemiOperativi/Arzigogoli\">Sistemi Operativi</a>}>\r\n <p>\r\n Soluzioni agli <a href=\"https://weblab.ing.unimore.it/people/andreolini/didattica/sistemi-operativi/index.html#arzigogoli\">Arzigogoli</a> proposti dal <a href=\"https://personale.unimore.it/rubrica/dettaglio/andreolini\">Prof. Mauro Andreolini</a> durante le <a href=\"https://personale.unimore.it/rubrica/contenutiad/andreolini/2019/58027/N0/N0/9999\">lezioni di Sistemi Operativi</a> del <a href=\"https://www.unimore.it/didattica/mlaurea.html?ID=54\">corso triennale di Informatica</a> all'<a href=\"https://www.unimore.it/\">Unimore</a> tenutesi nel primo semestre dell'Anno Accademico 2019/2020.\r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"https://github.com/Steffo99/appunti-universitari/tree/master/2018_AlgoritmiEStruttureDati\">Algoritmi e Strutture Dati</a>}>\r\n <p>\r\n Appunti delle <a href=\"https://personale.unimore.it/rubrica/contenutiad/mmontangero/2018/58133/N0/N0/9999\">lezioni di Algoritmi e Strutture Dati</a> del <a href=\"https://www.unimore.it/didattica/mlaurea.html?ID=54\">corso triennale di Informatica</a> all'<a href=\"https://www.unimore.it/\">Unimore</a>, tenute dalla <a href=\"https://personale.unimore.it/rubrica/dettaglio/mmontangero\">Prof.ssa Manuela Montangero</a> nel secondo semestre dell'Anno Accademico 2018/2019.\r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"/vldigeometria\">Videolezioni di Geometria</a>}>\r\n <p>\r\n Ottime videolezioni di Geometria con licenza <a href=\"https://creativecommons.org/licenses/by-nc-sa/4.0/\">CC BY-NC-SA 4.0</a> che ho trovato sul <a href=\"https://dolly.fim.unimore.it/2018/course/view.php?id=14#section-0\">portale Dolly 2018</a> dell'<a href=\"https://www.unimore.it/\">Unimore</a>.\r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"/mingwinstall\">Come installare MinGW</a>}>\r\n <p>\r\n Un breve tutorial con immagini su come installare e configurare <a href=\"https://it.wikipedia.org/wiki/MinGW\">MinGW</a> per compilare programmi C e C++ su Windows. \r\n </p>\r\n </Panel>\r\n </Split>\r\n <Split title=\"Altri collegamenti utili\">\r\n <Panel title={<a href=\"https://t.me/unimoreinfo\">@unimoreinfo</a>}>\r\n <p>\r\n Il gruppo <a href=\"https://telegram.org/\">Telegram</a> del corso di Informatica dell'Unimore! \r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"https://calendar.google.com/calendar?cid=MmYza2o2M3VuZWQ1cmZqaGpmOGY0MWFrNmdAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ\">Calendario Lezioni</a>}>\r\n <p>\r\n Calendario Google <small>quasi</small> sempre aggiornato delle lezioni e degli esami del secondo anno dell'<a href=\"https://www.unimore.it/\">Unimore</a> durante l'Anno Accademico 2019/2020.\r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"http://erre2.fermitech.info/dashboard\">Erre2</a>}>\r\n <p>\r\n Portale contenente appunti e riassunti mantenuto da <a href=\"https://github.com/LBindustries\">Lorenzo Balugani</a>.\r\n </p>\r\n </Panel>\r\n <Panel title={<a href=\"https://github.com/vezzalinistefano/Appunti-Algoritmi\">vezzalinistefano/Appunti-Algoritmi</a>}>\r\n <p>\r\n Appunti di Algoritmi e Strutture Dati mantenuti da <a href=\"https://github.com/vezzalinistefano/\">Vezzalini Stefano</a>.\r\n </p>\r\n </Panel>\r\n </Split>\r\n </div>\r\n )\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./pages/home.js","import style from './latex.css';\nimport { Component } from 'preact';\n\nexport default class Latex extends Component {\n\trender() {\n\t\tlet equation = `{\\\\color{White} ${this.props.children} }`;\n\t\treturn (\n\t\t\t<img src={`https://latex.codecogs.com/png.latex?${equation}`}\n\t\t\t\t alt={this.props.children}\n\t\t\t title={this.props.children}\n\t\t\t class={style.latex}\n\t\t\t/>);\n\t}\n}\n\n\n// WEBPACK FOOTER //\n// ./components/latex.js","import style from \"./plus.css\";\r\nimport { Component } from 'preact';\r\n\r\nexport default class Plus extends Component {\r\n\trender() {\r\n\t\treturn <span class={style.plus}>{this.props.children}</span>;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./components/plus.js","import style from \"./minus.css\";\r\nimport { Component } from 'preact';\r\n\r\nexport default class Minus extends Component {\r\n\trender() {\r\n\t\treturn <span class={style.minus}>{this.props.children}</span>;\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./components/minus.js","import style from './fisica.css';\nimport { Component } from 'preact';\nimport Latex from '../components/latex';\nimport Panel from '../components/panel';\nimport Split from '../components/split';\nimport Plus from '../components/plus';\nimport Minus from '../components/minus';\nimport Todo from '../components/todo';\n\nconst r = String.raw;\n\nexport default class Fisica extends Component {\n\trender() {\n return (\n <div style={style.fisica}>\n <h1>Fisica</h1>\n <Split title=\"Vettori\">\n <Panel title=\"Componenti cartesiane\">\n <p>\n Usa le regole base della trigonometria:\n </p>\n <p>\n <Latex>{r`\\vec{v} = \\vec{v}_x + \\vec{v}_y`}</Latex>\n </p>\n <p>\n <Latex>{r`\\left | \\vec{v}_x \\right | = \\left | \\vec{v} \\right | \\sin \\alpha`}</Latex>\n </p>\n <p>\n <Latex>{r`\\left | \\vec{v}_y \\right | = \\left | \\vec{v} \\right | \\cos \\alpha`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Somma\">\n <p>\n Scomponi in componenti, poi sommali:\n </p>\n <p>\n <Latex>{r`\\vec{v} + \\vec{w} = (\\vec{v}_x + \\vec{w}_x) + (\\vec{v}_y + \\vec{w}_y)`}</Latex>\n </p>\n <p>\n Produce il vettore risultante dall'applicazione della regola del parallelogramma.\n </p>\n </Panel>\n <Panel title=\"Differenza\">\n <p>\n Alla fine è sempre una somma:\n </p>\n <p>\n <Latex>{r`\\vec{v} - \\vec{w} = (\\vec{v}_x - \\vec{w}_x) + (\\vec{v}_y - \\vec{w}_y)`}</Latex>\n </p>\n <p>\n Produce il vettore che parte da <Latex>w</Latex> e arriva a <Latex>v</Latex>.\n </p>\n </Panel>\n <Panel title=\"Prodotto scalare\">\n <p>\n Si chiama scalare perchè il risultato è uno scalare, non un vettore.\n </p>\n <p>\n <Latex>{r`\\vec{v} \\cdot \\vec{w} = \\left | \\vec{v} \\right | \\left | \\vec{w} \\right | \\cos \\alpha`}</Latex>\n </p>\n <p>\n Produce il modulo della proiezione di <Latex>{r`\\vec{a}`}</Latex> su <Latex>{r`\\vec{b}`}</Latex>.\n </p>\n </Panel>\n <Panel title=\"Prodotto vettoriale\">\n <p>\n Si chiama vettoriale perchè il risultato è un altro vettore.\n </p>\n <ul>\n <li><Latex>{r`\\vec{c} = \\vec{a} \\times \\vec{b}`}</Latex></li>\n <li><Latex>{r`\\left | \\vec{c} \\right | = \\left | \\vec{a} \\right | \\cdot \\left | \\vec{b} \\right | \\cdot \\sin(\\alpha)`}</Latex></li>\n <li><a href=\"https://it.wikipedia.org/wiki/Regola_della_mano_destra\">Regola della mano destra</a></li>\n </ul>\n <p>\n Non è commutativo!\n </p>\n </Panel>\n </Split>\n <Split title=\"Leggi di Newton\">\n <Panel title=\"1ᵃ: Inerzia\">\n <p>\n Se un corpo puntiforme ha forza risultante nulla, allora la sua velocità non cambia.\n </p>\n <p>\n <Latex>{r`\\Sigma \\vec{F} = 0 \\Longleftrightarrow \\Delta v = 0`}</Latex>\n </p>\n </Panel>\n <Panel title=\"2ᵃ: Proporzionalità\">\n <p>\n La forza risultante di un corpo è direttamente proporzionale alla sua accelerazione, e la costante di proporzionalità è la <i>massa</i>.\n </p>\n <p>\n <Latex>{r`\\Sigma \\vec{F} = m \\vec{a}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"3ᵃ: Azione e reazione\">\n <p>\n Due corpi esercitano forze uguali e opposte uno sull'altro. \n </p>\n <p>\n <Latex>{r`\\vec{F}_{21} = -\\vec{F}_{12}`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Forza di gravità\">\n <Panel title=\"Tra due corpi\">\n <p>\n Due corpi puntiformi si attirano uno verso l'altro con forza:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{F} \\right | = G \\frac{m_1 m_2}{s^2}`}</Latex>\n </p>\n <p>\n <Latex>G</Latex> è la <i>costante di gravitazione universale</i> e vale:\n </p>\n <p>\n <Latex>{r`G = 6.67 \\cdot 10^{-11} \\frac{N m^2}{{kg}^2}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Verso la Terra\">\n <p>\n Se nel sistema di riferimento consideriamo la Terra ferma, allora un corpo è attratto verso la Terra con forza <i>peso</i> uguale a:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{F} \\right | = g m`}</Latex>\n </p>\n <p>\n <Latex>g</Latex> è la <i>costante di gravità</i> della Terra, e vale:\n </p>\n <p>\n <Latex>{r`g = 9.81 \\frac{m}{s^2}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Su pianeti diversi\">\n <p>\n Per pianeti diversi dalla Terra vale la stessa regola:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{F} \\right | = g m`}</Latex>\n </p>\n <p>\n L'unica differenza è che cambia la <i>costante di gravità</i>:\n </p>\n <p>\n <Latex>{r`g_{luna} = 1.62 \\frac{m}{s^2}`}</Latex>\n </p>\n <p>\n <Latex>{r`g_{marte} = 3.71 \\frac{m}{s^2}`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Forze di contatto\">\n <Panel title=\"Normale\">\n <p>\n Si oppone alle forze applicate alla superficie di contatto.\n </p>\n <p>\n Un libro appoggiato su un tavolo ha la <b>forza di gravità</b> che lo attira verso il terreno e la <b>forza normale</b> che lo trattiene dal cadere. \n </p>\n </Panel>\n <Panel title=\"Attrito statico\">\n <p>\n Impedisce a un corpo di muoversi se non viene spinto da una forza che supera una certa soglia:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{F} \\right | \\leq \\mu_{s} \\left | \\vec{F}_{normale} \\right |`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Attrito dinamico\">\n <p>\n Rallenta i corpi che si stanno muovendo finchè essi non si fermano:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{F} \\right | \\leq \\mu_{d} \\left | \\vec{F}_{normale} \\right |`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Tensione\">\n <p>\n E' forza trasmessa tra due estremi di una fune.\n </p>\n <p>\n Può essere redirezionata per mezzo di carrucole.\n </p>\n </Panel>\n <Panel title=\"Elastica\">\n <p>\n Una molla cerca sempre di tornare alla sua posizione indeformata con forza:\n </p>\n <p>\n <Latex>{r`F = -k x`}</Latex>\n </p>\n <p>\n (E' negativa perchè la forza è opposta a quella applicata per deformarla.)\n </p>\n </Panel>\n </Split>\n <Split title=\"Cinematica\">\n <Panel title=\"Spostamento\">\n <p>\n È un vettore che indica la posizione di un corpo rispetto a un'origine.\n </p>\n <p>\n <Latex>{r`\\Delta \\vec{s} = \\vec{s}(fine) - \\vec{s}(inizio)`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Velocità\">\n <p>\n È un vettore che misura la variazione di posizione nel tempo.\n </p>\n <p>\n <Latex>{r`\\vec{v} = \\frac{\\Delta \\vec{s}}{\\Delta t}`}</Latex>\n </p>\n <p>\n Se si considera un intervallo di tempo infinitesimale si dice <i>velocità istantanea</i>:\n </p>\n <p>\n <Latex>{r`\\vec{v} = \\lim_{\\Delta t \\to 0} \\frac{\\Delta \\vec{s}}{\\Delta t} = \\frac{d \\vec{s}}{dt}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Accelerazione\">\n <p>\n È un vettore che misura la variazione di velocità nel tempo.\n </p>\n <p>\n <Latex>{r`\\vec{a} = \\frac{\\Delta \\vec{v}}{\\Delta t}`}</Latex>\n </p>\n <p>\n Se si considera un intervallo di tempo infinitesimale si dice <i>accelerazione istantanea</i>:\n </p>\n <p>\n <Latex>{r`\\vec{a} = \\lim_{\\Delta v \\to 0} \\frac{\\Delta \\vec{v}}{\\Delta t} = \\frac{d \\vec{v}}{d t} = \\frac{d^2 \\vec{s}}{d t^2}`}</Latex>\n </p>\n </Panel>\n <Panel title={<span>Quantità di moto <small>(momento lineare)</small></span>}>\n <p>\n La quantità di moto è una proprietà vettoriale dei corpi:\n </p>\n <p>\n <Latex>{r`\\vec{p} = m \\vec{v}`}</Latex>\n </p>\n <p>\n Se la forza risultante è nulla, la quantità di moto non cambia.\n </p>\n <p>\n <Latex>{r`\\Sigma \\vec{F} = 0 \\Longleftrightarrow \\Delta \\vec{p} = 0`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Moto rettilineo uniforme\">\n <Panel title=\"Spostamento\">\n <p>\n La <i>legge oraria</i> è:\n </p>\n <p>\n <Latex>{r`s(t) = v \\cdot \\Delta t + s(0)`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Velocità\">\n <p>\n È costante:\n </p>\n <p>\n <Latex>{r`v(t) = k`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Accelerazione\">\n <p>\n La velocità non varia:\n </p>\n <p>\n <Latex>{r`a(t) = 0`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Forze\">\n <p>\n Si applica la prima legge di Newton:\n </p>\n <p>\n <Latex>f(t) = 0</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Moto rettilineo uniformemente accelerato\">\n <Panel title=\"Spostamento\">\n <p>\n La <i>legge oraria</i> è:\n </p>\n <p>\n <Latex>{r`s(t) = \\frac{1}{2} a \\cdot (\\Delta t)^2 + v(0) \\cdot (\\Delta t) + s(0)`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Velocità\">\n <p>\n È una retta:\n </p>\n <p>\n <Latex>{r`v(t) = a \\Delta t + v(0)`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Accelerazione\">\n <p>\n È costante:\n </p>\n <p>\n <Latex>{r`a(t) = k`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Forze\">\n <p>\n Si applica la prima legge di Newton:\n </p>\n <p>\n <Latex>f(t) = m a</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Moto armonico semplice\">\n <Panel title=\"Ampiezza\">\n <p>\n E' la distanza dal centro massima che raggiunge il corpo.\n </p>\n <p>\n (L'ampiezza di una sinusoide.)\n </p>\n </Panel>\n <Panel title=\"Velocità angolare\">\n <p>\n Indica quanto in fretta cambia la posizione del corpo. \n </p>\n <p>\n Dipende dal periodo:\n </p>\n <p>\n <Latex>{r`\\omega = \\frac{2 \\pi}{T}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Spostamento\">\n <p>\n E' una sinusoide:\n </p>\n <p>\n <Latex>{r`s(t) = A \\sin (\\omega \\cdot t + \\phi)`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Velocità\">\n <p>\n E' la sinusoide dello spostamento, sfasata di <Latex>{r`\\frac{\\pi}{2}`}</Latex>:\n </p>\n <p>\n <Latex>{r`v(t) = A \\sin (\\omega \\cdot t + \\phi + \\frac{\\pi}{2})`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Accelerazione\">\n <p>\n E' la sinusoide della velocità, sfasata di <Latex>{r`\\pi`}</Latex>:\n </p>\n <p>\n <Latex>{r`a(t) = A \\sin (\\omega \\cdot t + \\phi + \\pi)`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Forze\">\n <p>\n Si applica la prima legge di Newton:\n </p>\n <p>\n <Latex>f(t) = m a</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Moti composti\">\n <Panel title=\"Moto parabolico\">\n <p>\n Il moto parabolico è dato sommando un moto rettilineo uniforme sull'asse orizzontale e un moto rettilineo uniformemente accelerato sull'asse verticale.\n </p>\n </Panel>\n <Panel title=\"Moto circolare uniforme\">\n <p>\n Il moto parabolico è dato sommando due moti armonici semplici: uno sull'asse X, e l'altro, sfasato di <Latex>{r`\\frac{\\pi}{2}`}</Latex>, sull'asse Y.\n </p>\n </Panel>\n </Split>\n <Split title=\"Moto circolare uniforme\">\n <Panel>\n <h3>\n Velocità angolare\n </h3>\n <p>\n Quanto cambia la fase nel tempo.\n </p>\n <p>\n <Latex>{r`\\omega = \\frac{2 \\pi}{T}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Fase\">\n <p>\n E' l'angolo percorso dal corpo rispetto alla posizione iniziale.\n </p>\n <p>\n Si indica con <Latex>{r`\\phi`}</Latex>, e generalmente si usa in radianti.\n </p>\n </Panel>\n <Panel title=\"Velocità\">\n <p>\n Si applicano le formule per la circonferenza:\n </p>\n <p>\n <Latex>{r`v = \\frac{\\Delta s}{t} = \\frac{2 \\pi \\cdot r}{T} = \\omega r`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Accelerazione\">\n <p>\n Il corpo ha sempre un accelerazione verso il centro che gli impedisce di abbandonare il moto: \n </p>\n <p>\n <Latex>{r`a = \\frac{v^2}{r} = r \\cdot \\omega^2 = v \\cdot \\omega`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Forza centripeta\">\n <p>\n È verso il centro e si calcola con:\n </p>\n <p>\n <Latex>{r`F = m \\cdot a`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Lavoro ed energia\">\n <Panel title=\"Lavoro\">\n <p>\n E' compiuto da una forza che sposta un corpo.\n </p>\n <p>\n <Latex>{r`W = \\vec{F} \\cdot \\vec{s} = F \\cdot \\Delta s \\cdot cos(\\alpha )`}</Latex>\n </p>\n <p>\n (Se la forza non è parallela allo spostamento, il prodotto scalare ci fa considerare solo la componente parallela.)\n </p>\n </Panel>\n <Panel title=\"Energia cinetica\">\n <p>\n Un corpo ha energia cinetica in ogni momento uguale a:\n </p>\n <p>\n <Latex>{r`E_c = \\frac{1}{2} m v^2`}</Latex>\n </p>\n <p>\n Se una forza effettua lavoro su un corpo, cambia la sua energia cinetica pari al lavoro effettuato:\n </p>\n <p>\n <Latex>{r`\\Delta E_c = W`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Energia potenziale gravitazionale\">\n <p>\n Un corpo ha energia potenziale in ogni momento pari a: \n </p>\n <p>\n <Latex>{r`E_{p_g} = m \\cdot g \\cdot h`}</Latex>\n </p>\n <p>\n (Con <Latex>h</Latex> uguale a un altezza scelta come punto di riferimento.)\n </p>\n </Panel>\n <Panel title=\"Energia potenziale elastica\">\n <p>\n Una molla ha sempre energia potenziale elastica pari a:\n </p>\n <p>\n <Latex>{r`E_{p_e} = \\frac{1}{2} k x^2`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Forze conservative\">\n <p>\n Sono conservative le forze per le quali il lavoro compiuto non dipende dal percorso seguito per andare dalla partenza all'arrivo.\n </p>\n <p>\n Ad esempio, è conservativa la <i>forza di gravità</i>, ma <b>non</b> è conservativa la forza di attrito.\n </p>\n <p>\n Se in un sistema ci sono solo forze conservative, allora l'energia meccanica totale si conserva:\n </p>\n <p>\n <Latex>{r`E = E_k + E_p`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Potenza\">\n <p>\n È la velocità di trasferimento di energia:\n </p>\n <p>\n <Latex>{r`P = \\frac{\\Delta E}{\\Delta t}`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Elettrostatica\">\n <Panel title=\"Carica elettrica\">\n <p>\n È una proprietà dei corpi che può essere <Plus>positiva</Plus> o <Minus>negativa</Minus>.\n </p>\n <p>\n Si conserva: in un sistema chiuso la carica totale è costante.\n </p>\n <p>\n Esiste un'unità elementare: <Latex>{r`C_{elettrone} = 1.602 \\cdot 10^{-19}`}</Latex>.\n </p>\n <p>\n Cariche <Plus>opp</Plus><Minus>oste</Minus> si attraggono; cariche <Plus>uguali</Plus> si respingono.\n </p>\n </Panel>\n <Panel title=\"Conduttori e isolanti\">\n <p>\n Più <a href=\"https://it.wikipedia.org/wiki/Ione\">ioni</a> ha un corpo, meglio la carica si muove attraverso di esso.\n </p>\n <p>\n I corpi in cui la carica si muove bene sono <i>conduttori</i>, mentre quelli in cui si muove difficilmente sono <i>isolanti</i>.\n </p>\n <p>\n <i>Il corpo umano è un buon conduttore.</i>\n </p>\n </Panel>\n </Split>\n <Split title=\"Polarizzazione\">\n <Panel title=\"Polarizzazione\">\n <p>\n E' possibile polarizzare un corpo per accumulare la carica di un segno in una certa zona.\n </p>\n </Panel>\n </Split>\n <Split>\n <Panel title=\"Messa a terra\">\n <p>\n Se un corpo conduttore è in contatto con la Terra, le cariche su di esso saranno <i>equilibrate</i> e il corpo diventerà elettricamente neutro (con stesso numero di <Plus>cariche positive</Plus> e <Minus>negative</Minus> all'interno).\n </p>\n </Panel>\n </Split>\n <Split>\n <Panel title=\"Polarizzazione per strofinio\">\n <p>\n Strofinando tra loro due corpi isolanti, essi si <i>polarizzeranno per strofinio</i>.\n </p>\n </Panel>\n <Panel title=\"Polarizzazione per contatto\">\n <p>\n Toccando un conduttore con un corpo carico, il conduttore potrà <i>polarizzarsi per contatto</i>.\n </p>\n </Panel>\n <Panel title=\"Polarizzazione per induzione\">\n <p>\n Se un corpo conduttore ha cariche \"esterne\" di un <Plus>certo segno</Plus> vicino, esso avrà tutte le cariche del <Minus>segno opposto</Minus> in equilibrio vicino alle cariche esterne, e tutte le cariche dello <Plus>stesso segno</Plus> più lontano possibile da esse.\n </p>\n <p>\n Mettendo a terra il conduttore, nuove cariche del <Minus>segno opposto</Minus> saranno attratte all'interno del corpo per equilibrare le cariche che si sono allontanate.\n </p>\n <p>\n Staccando il conduttore da terra e rimuovendo le cariche esterne, esso si ritroverà <Minus>caricato del segno opposto</Minus> rispetto alle cariche esterne.\n </p>\n </Panel>\n </Split>\n <Split title=\"Forza elettrica\">\n <Panel title=\"Legge di Coulomb\">\n <p>\n Due corpi carichi si attraggono tra loro con forza: \n </p>\n <p>\n <Latex>{r`\\left | \\vec{F}_{elettrica} \\right | = \\frac{-k \\cdot q_1 \\cdot q_2}{s^2}`}</Latex>\n </p>\n <p>\n <Latex>{r`k`}</Latex> è la <i>costante di Coulomb</i>, e vale <Latex>{r`k = 8.99 \\cdot 10^9 \\frac{N \\cdot m^2}{C^2}`}</Latex>.\n </p>\n </Panel>\n <Panel title=\"Permeabilità dello spazio vuoto\">\n <p>\n La costante <Latex>{r`k`}</Latex> è in realtà dipendente da un altra costante, <Latex>{r`\\epsilon_0`}</Latex>, la <i>permeabilità del vuoto</i>.\n </p>\n <p>\n <Latex>{r`k = \\frac{1}{4 \\pi \\cdot \\epsilon_0}`}</Latex>\n </p>\n <p>\n <Latex>{r`\\left | \\vec{F}_{elettrica} \\right | = \\frac{q_1 \\cdot q_2}{4 \\pi \\cdot \\epsilon_0 \\cdot s^2}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Campo elettrico\">\n <p>\n Misura che forza viene applicata in ogni punto su una carica unitaria:\n </p>\n <p>\n <Latex>{r`\\vec{E} = \\frac{\\vec{F}_{elettrica}}{q} = \\frac{-k \\cdot q}{s^2}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Flusso elettrico\">\n <p>\n È la differenza tra \"quanto\" campo elettrico <Plus>entra</Plus> e quanto campo elettrico <Minus>esce</Minus> da una certa area.\n </p>\n <p>\n In qualsiasi superficie chiusa, il flusso elettrico è uguale alla componente perpendicolare del campo elettrico moltiplicato per l'area.\n </p>\n <p>\n <Latex>{r`\\Phi_E = \\vec{E} \\cdot \\vec{A}`}</Latex>\n </p>\n <p>\n Se il campo elettrico è uniforme, se ne può calcolare facilmente il valore:\n </p>\n <p>\n <Latex>{r`\\Phi_E = \\vec{E} \\cdot \\vec{A} = E_\\perp \\cdot A \\cdot \\cos(\\alpha)`}</Latex>\n </p>\n <p>\n <Todo>Circa. E' una specie di integrale...</Todo>\n </p>\n </Panel>\n <Panel title=\"Legge di Gauss per i campi elettrostatici\">\n <p>\n Il flusso elettrico è direttamente proporzionale alla carica presente all'interno della superficie.\n </p>\n <p>\n <Latex>{r`\\Phi_E = 4 \\pi \\cdot k \\cdot q = \\frac{q}{\\epsilon_0}`}</Latex>\n </p>\n <p>\n Ovvero, i campi elettrostatici sono generati dalle cariche elettriche.\n </p>\n </Panel>\n </Split>\n <Split title=\"Energia elettrica\">\n <Panel title=\"Energia potenziale elettrica\">\n <p>\n Un corpo carico vicino ad altre cariche possiede un'<i>energia potenziale elettrica</i> <Latex>{r`U_e`}</Latex>.\n </p> \n </Panel>\n </Split>\n <Split title=\"Circuiti elettrici\">\n <Panel title={<span>Potenziale elettrico <small>(tensione)</small></span>}>\n <p>\n È il valore dell'energia potenziale elettrica per una carica unitaria.\n </p>\n <p>\n <Latex>{r`V = \\frac{U_e}{q}`}</Latex>\n </p>\n <p>\n La sua unità di misura è il Volt (<Latex>{r`V`}</Latex>).\n </p> \n <p>\n In una batteria è detto <i>forza elettromotrice</i>, e corrisponde al lavoro compiuto da una batteria ideale per spostare una carica unitaria tra i due poli.\n </p>\n </Panel>\n <Panel title={<span>Corrente elettrica <small>(intensità)</small></span>}>\n <p>\n Quanta carica passa attraverso un'area (perpendicolare al flusso) nel tempo.\n </p>\n <p>\n <Latex>{r`I = \\frac{\\Delta q}{\\Delta t}`}</Latex>\n </p>\n <p>\n Fintanto che c'è differenza di potenziale, ci sarà anche intensità non nulla.\n </p>\n <p>\n La sua unità di misura è l'Ampere (<Latex>{r`A`}</Latex>).\n </p>\n </Panel>\n <Panel title={<span>Corrente continua <small>(<abbr title=\"Direct Current\">DC</abbr>)</small></span>}>\n <p>\n Quando in un circuito la direzione della corrente è costante.\n </p>\n </Panel>\n <Panel title={<span>Corrente alternata <small>(<abbr title=\"Alternate Current\">AC</abbr>)</small></span>}>\n <p>\n Quando in un circuito la direzione della corrente si alterna periodicamente.\n </p>\n </Panel>\n <Panel title=\"Potenza elettrica\">\n <p>\n Possiamo calcolare la potenza di un circuito:\n </p>\n <p>\n <Latex>{r`P = \\frac{\\Delta U_e}{\\Delta t} = I \\cdot \\Delta V = I^2 \\cdot R = \\frac{(\\Delta V)^2}{R}`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Elementi di un circuito\">\n <Panel title=\"Resistore\">\n <p>\n Riduce l'intensità di corrente, e converte parte del potenziale in calore.\n </p>\n <p>\n Il potenziale utilizzato è pari a:\n </p>\n <p>\n <Latex>{r`V = R \\cdot I`}</Latex>\n </p>\n <p>\n Dove <Latex>{r`R`}</Latex> è una costante detta <i>resistenza</i> con unità di misura Ohm (<Latex>{r`\\Omega`}</Latex>).\n </p>\n <p>\n La resistenza di un conduttore vale:\n </p>\n <p>\n <Latex>{r`R = \\rho \\frac{L_{unghezza}}{A_{rea}}`}</Latex>\n </p>\n <p>\n <Latex>{r`\\rho`}</Latex> è la <i>resistività</i> del materiale, e varia in base alla temperatura:\n </p>\n <p>\n <Latex>{r`\\rho = \\rho_0 (1 + \\alpha(T - T_0))`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Condensatore\">\n <p>\n Immagazzina potenziale elettrico, permettendo di riutilizzarla in seguito.\n </p>\n <p>\n Per farlo, cattura cariche <Plus>positive</Plus> e <Minus>negative</Minus> sulle sue due armature; perchè questo avvenga, deve essere compiuto lavoro.\n </p>\n <p>\n Ha una <b>capacità</b> caratteristica, che in un condensatore a facce piane parallele è:\n </p>\n <p>\n <Latex>{r`C = \\frac{q_{massima}}{\\Delta V}`}</Latex>\n </p>\n <p>\n Condensatori di capacità maggiore immagazzinano più potenziale con meno carica.\n </p>\n <p>\n La capacità aumenta se viene messo qualcosa tra le armature:\n </p>\n <p>\n <Latex>{r`C_{nuova} = \\kappa \\cdot \\frac{\\epsilon_0 \\cdot A}{s}`}</Latex>\n </p>\n <p>\n Dove <Latex>{r`\\kappa`}</Latex> è la <i>costante dielettrica relativa</i> del materiale inserito, <Latex>{r`A`}</Latex> l'area di una armatura e <Latex>{r`d`}</Latex> la distanza tra le due armature.\n </p>\n <p>\n Se il campo elettrico creatosi tra le due armature supera la <i>rigidità dielettrica</i> del condensatore, la carica immagazzinata viene persa e ha luogo un <i>breakdown</i>.\n </p>\n <p>\n La sua unità di misura è il Farad (<Latex>{r`Fa`}</Latex>)\n </p>\n </Panel>\n <Panel title=\"Amperometro\">\n <p>\n Misura la corrente elettrica se messo in serie.\n </p>\n <p>\n (Funzionamento: ha una resistenza interna bassisima in modo da non influire significativamente sulla corrente.)\n </p>\n </Panel>\n <Panel title=\"Voltmetro\">\n <p>\n Misura la differenza di potenziale se messo in parallelo.\n </p>\n <p>\n (Funzionamento: ha una resistenza altissima in modo da non influire significativamente sulla tensione.)\n </p>\n </Panel>\n </Split>\n <Split title=\"Principi di Kirchhoff\">\n <Panel title=\"Legge dei nodi\">\n <p>\n Per nodo si intende un qualsiasi punto del circuito.\n </p>\n <p>\n Da un nodo entra ed esce la stessa corrente.\n </p>\n </Panel>\n <Panel title=\"Legge delle maglie\">\n <p>\n Per maglia si intende un qualsiasi percorso chiuso all'interno del circuito.\n </p>\n <p>\n In una maglia chiusa, la somma delle differenze di potenziale è 0.\n </p>\n </Panel>\n </Split>\n <Split title=\"Serie e Parallelo\">\n <Panel title=\"Circuito in serie\">\n <p>\n Più parti di circuito sono <i>in serie</i> se sono consecutive e senza biforcazioni.\n </p>\n <p>\n Parti di circuito in serie sono attraversate dalla stessa corrente.\n </p>\n </Panel>\n <Panel title=\"Circuito in parallelo\">\n <p>\n Più parti di circuito sono <i>in parallelo</i> tra loro se hanno lo stesso punto di partenza e lo stesso punto di arrivo. \n </p>\n <p>\n Parti di circuito in parallelo hanno la stessa differenza di potenziale.\n </p>\n </Panel>\n </Split>\n <Split title=\"Resistenze equivalenti\">\n <Panel title=\"Circuiti in serie\">\n <p>\n Nei circuiti in serie, tutte le resistenze possono essere sostituite con una equivalente dal valore della somma di tutte le quelle sostituite:\n </p>\n <p>\n <Latex>{r`R_{serie} = \\sum_{i=1}^{n} R_i`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Circuiti in parallelo\">\n <p>\n Nei circuiti in parallelo, tutte le resistenze possono essere sostituite con una equivalente dal valore di:\n </p>\n <p>\n <Latex>{r`R_{parallelo} = \\frac{1}{\\sum_{i=1}^{n} \\frac{1}{R_i}}`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Condensatori equivalenti\">\n <Panel title=\"Circuiti in serie\">\n <p>\n Nei circuiti in serie, tutte i condensatori possono essere sostituiti con uno equivalente dal valore di:\n </p>\n <p>\n <Latex>{r`C_{serie} = \\frac{1}{\\sum_{i=1}^{n} \\frac{1}{C_i}}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Circuiti in parallelo\">\n <p>\n Nei circuiti in parallelo, tutte i condensatori possono essere sostituite con uno equivalente dal valore della somma della capacità di tutti quelli sostituiti:\n </p>\n <p>\n <Latex>{r`C_{parallelo} = \\sum_{i=1}^{n} C_n`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Magnetismo\">\n <Panel title=\"Permeabilità magnetica dello spazio vuoto\">\n <p>\n E' una costante fisica fondamentale che rappresenta quanto un materiale si magnetizza facilmente.\n </p>\n <p>\n <Latex>{r`\\mu_0 = 4 \\pi \\cdot 10^{-7} \\frac{H}{m}`}</Latex> (<Latex>{r`\\frac{N}{A^2}`}</Latex>)\n </p>\n </Panel>\n <Panel title=\"Campo magnetico\">\n <p>\n Come un campo elettrico, ma per i magneti.\n </p>\n <p>\n Il suo simbolo è <Latex>{r`B`}</Latex>, e la sua unità di misura è il Tesla (<Latex>T</Latex>).\n </p>\n </Panel>\n <Panel title=\"Flusso magnetico\">\n <p>\n È \"quanto\" campo magnetico <b>attraversa</b> un percorso chiuso.\n </p>\n <p>\n Per qualsiasi percorso chiuso, il flusso magnetico è uguale alla somma di tutti i \"sottoflussi\" magnetici calcolati sui suoi lati.\n </p>\n <p>\n <Latex>{r`\\Phi_{B_{i}} = \\vec{B} \\cdot \\vec{L}_n = B \\cdot L_i \\cdot \\sin(\\alpha) = B_\\parallel \\cdot L_i`}</Latex>\n </p>\n <p>\n <Latex>{r`\\Phi_{B} = \\sum_{i=0}^{n_{lati}} \\Phi_{Bn}`}</Latex>\n </p>\n <p>\n La sua unità di misura è il Weber (<Latex>{r`Wb = T \\cdot m^2`}</Latex>).\n </p>\n </Panel>\n <Panel title=\"Legge di Gauss per i campi magnetici\">\n <p>\n Il flusso magnetico attraverso qualsiasi superficie chiusa è sempre nullo.\n </p>\n <p>\n Ovvero, non esistono monopoli magnetici.\n </p>\n </Panel>\n <Panel title=\"Legge di Ampère\">\n <p>\n L'intensità di corrente che attraversa un percorso chiuso è direttamente proporzionale al flusso magnetico dello stesso percorso.\n </p>\n <p>\n <Latex>{r`\\Phi_B = \\mu_0 \\cdot I`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split title=\"Forze magnetiche\">\n <Panel title={<span>Forza magnetica su carica puntiforme <small>(Forza di Lorentz)</small></span>}>\n <p>\n I campi magnetici applicano una forza sulle cariche vicine:\n </p>\n <p>\n <Latex>{r`\\vec{F}_{B} = q \\cdot (\\vec{v} \\times \\vec{B})`}</Latex>\n </p>\n <p>\n Dove <Latex>{r`\\vec{B}`}</Latex> è l'intensità del campo magnetico e <Latex>{r`\\vec{v}`}</Latex> la velocità della carica considerata.\n </p>\n <p>\n Si ha una forza massima se la velocità è perpendicolare al campo magnetico.\n </p>\n <p>\n In un campo magnetico uniforme, una velocità perpendicolare al campo porta alla creazione di un moto circolare uniforme.\n </p>\n </Panel>\n <Panel title=\"Forza magnetica in un filo\">\n <p>\n I campi magnetici influenzano ovviamente anche le cariche presenti in un conduttore:\n </p>\n <p>\n <Latex>{r`\\vec{F}_{magnetica} = I \\cdot (\\vec{L} \\times \\vec{B})`}</Latex> <a href=\"https://it.openprof.com/wb/forza_di_lorentz_su_un_filo_percorso_da_corrente?ch=360\">[1]</a>\n </p>\n <p>\n Dove <Latex>{r`I`}</Latex> è la corrente elettrica, <Latex>{r`\\vec{L}`}</Latex> è un vettore che punta nella direzione di scorrimento della corrente e ha come modulo la lunghezza del conduttore.\n </p>\n </Panel>\n </Split>\n <Split title=\"Campi magnetici\">\n <Panel title=\"Campo magnetico in una spira\">\n <p>\n Una spira in cui passa corrente produce un campo magnetico perpendicolare al piano creato dalla spira.\n </p>\n </Panel>\n <Panel title=\"Campo magnetico di un solenoide\">\n <p>\n Un solenoide sono tante spire avvolte in modo da formare una specie di cilindro.\n </p>\n <p>\n All'interno del solenoide si crea un campo (quasi) uniforme:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{B} \\right | = \\mu_0 \\cdot I \\cdot \\frac{A_{vvolgimenti}}{L_{unghezzafilo}}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Legge di Oersted\">\n <p>\n <i>Caso particolare della <a href=\"https://it.wikipedia.org/wiki/Legge_di_Amp%C3%A8re\">Legge di Ampère</a>.</i>\n </p>\n <p>\n Il modulo del campo magnetico <Latex>B</Latex> prodotto da un filo in cui passa una corrente continua <Latex>I</Latex> alla distanza <Latex>s</Latex> è:\n </p>\n <p>\n <Latex>{r`\\left | \\vec{B} \\right | = \\frac{\\mu \\cdot I}{2 \\pi r}`}</Latex>\n </p>\n <p>\n Il campo magnetico così creato gira attorno al filo in senso antiorario.\n </p>\n <p>\n Due fili attraversati dalla <Plus>stessa corrente</Plus> si attraggono, due fili attraversati da <Plus>corr</Plus><Minus>enti</Minus> <Plus>opp</Plus><Minus>oste</Minus> si respingono.\n </p>\n </Panel>\n </Split>\n <Split title=\"Induzione elettromagnetica\">\n <Panel title=\"Forza elettromotrice indotta\">\n <p>\n Un conduttore perpendicolare ad un campo magnetico può ottenere una differenza di potenziale se messo in movimento in un direzione perpendicolare alla direzione del conduttore e del campo. \n </p>\n <p>\n La differenza di potenziale si crea a causa della forza magnetica, che fa spostare tutti gli elettroni verso un capo del conduttore. \n </p>\n <p>\n Essa vale:\n </p>\n <p>\n <Latex>{r`\\Delta V_{indotta} = v \\cdot B \\cdot L`}</Latex>\n </p>\n <p>\n Dove <Latex>v</Latex> è la velocità del conduttore, <Latex>B</Latex> è l'intensità del campo magnetico ed <Latex>L</Latex> è la lunghezza del conduttore.\n </p>\n </Panel>\n <Panel title=\"Flusso magnetico in una spira\">\n <p>\n In un campo magnetico <Latex>{r`B`}</Latex> uniforme e perpendicolare al piano di una spira di area <Latex>{r`A`}</Latex>, il flusso magnetico si può determinare con la <i>Legge di Faraday-Neumann-Lenz</i>:\n </p>\n <p>\n <Latex>{r`\\Phi_B = \\vec{B} \\cdot \\vec{A} = B \\cdot A \\cdot \\cos(\\alpha)`}</Latex>\n </p>\n </Panel>\n </Split>\n <Split>\n <Panel title=\"Legge di Faraday-Neumann-Lenz\">\n <p>\n Dice che la forza elettromotrice media indotta in un percorso dipende dalla variazione nel tempo del flusso magnetico nello stesso percorso.\n </p>\n <p>\n <Latex>{r`\\Delta V_{indotta} = - \\frac{\\Delta \\Phi_B}{\\Delta t}`}</Latex>\n </p>\n <p>\n Il meno è dovuto alla <a href=\"https://it.wikipedia.org/wiki/Legge_di_Lenz\">Legge di Lenz</a>, che specifica qualitativamente il verso della forza elettromotrice indotta.\n </p>\n </Panel>\n <Panel title=\"Faraday in un solenoide\">\n <p>\n In un solenoide, la forza elettromotrice indotta è uguale a:\n </p>\n <p>\n <Latex>{r`\\Delta V_{indotta} = - \\frac{N \\cdot \\Delta \\Phi_{B_{spira}}}{\\Delta t} = - \\frac{N \\cdot B \\cdot A \\cdot cos(\\alpha)}{\\Delta t}`}</Latex>\n </p>\n <p>\n Dove <Latex>{r`N`}</Latex> è il numero delle spire del solenoide.\n </p>\n </Panel>\n <Panel title=\"Legge di Ampère-Maxwell\">\n <p>\n Correnti o campi elettrici variabili creano un campo magnetico.\n </p>\n </Panel>\n </Split>\n <Split title=\"Elettromagnetismo\">\n <Panel title=\"Onde elettromagnetiche\">\n <p>\n Nel vuoto, il campo elettrico <Latex>{r`E`}</Latex> e il campo magnetico <Latex>{r`B`}</Latex> sono perpendicolari tra loro e la direzione di propagazione, e sono entrambe funzioni del tempo.\n </p>\n <p>\n Si dice quindi che sono <i>onde elettromagnetiche</i>.\n </p>\n <p>\n Esse sono legate dalla relazione:\n </p>\n <p>\n <Latex>{r`E = c \\cdot B`}</Latex>\n </p>\n <p>\n Dove <Latex>{r`c`}</Latex> è la velocità delle onde (luce) nel vuoto, e a sua volta è uguale a:\n </p>\n <p>\n <Latex>{r`c = \\frac{1}{\\sqrt{\\epsilon_0 \\cdot \\mu_0}} = 3.00 \\cdot 10^8 \\frac{m}{s}`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Formula delle onde\">\n <p>\n <Latex>{r`A(t) = A_{max} \\cdot \\sin \\left ( \\frac{2 \\pi}{\\lambda} - \\omega t + \\phi \\right )`}</Latex>\n </p>\n <p>\n Dove <Latex>{r`A_{max}`}</Latex> è l'ampiezza massima che può avere l'onda, <Latex>{r`\\frac{2 \\pi}{\\lambda} = \\left | \\vec{k} \\right |`}</Latex> è il vettore d'onda, <Latex>{r`\\omega`}</Latex> la frequenza angolare e <Latex>{r`\\phi`}</Latex> la fase.\n </p>\n </Panel>\n </Split>\n <Split title=\"Spettroscopia\">\n <Panel title=\"Emissione\">\n <p>\n I solidi, se portati ad alta temperatura, emettono luce con uno <a href=\"https://it.wikipedia.org/wiki/Spettro_continuo\">spettro continuo</a>.\n </p>\n <p>\n I gas, invece, ad alta temperatura emettono luce solo con particolari lunghezze d'onda. \n </p>\n <p>\n In un gas di idrogeno, le lunghezze d'onda emesse sono ricavabili con:\n </p>\n <p>\n <Latex>{r`\\frac{1}{\\lambda} = R \\left ( \\frac{1}{4} - \\frac{1}{n^2} \\right )`}</Latex>\n </p>\n <p>\n Con <Latex>{r`R = 1.097 \\cdot 10^7 \\frac{1}{m}`}</Latex>, detta costante di Rydberg, e <Latex>{r`n`}</Latex> un numero intero.\n </p>\n </Panel>\n <Panel title=\"Grandezza quantizzata\">\n <p>\n Una grandezza si dice quantizzata (o discreta) se può assumere solo determinati valori. \n </p>\n <p>\n Una grandezza si dice continua se può assumere qualsiasi valore e quindi se non è quantizzata.\n </p>\n <p>\n Energia, momento angolare e raggio sono quantizzati.\n </p>\n <p>\n Nota costante quantica è <Latex>{r`h`}</Latex>, la costante di Planck, ovvero il valore minimo possibile per la carica (talvolta espressa come <Latex>{r`\\hbar = \\left ( \\frac{h}{2 \\pi} \\right )`}</Latex>.\n </p>\n </Panel>\n </Split>\n <Split>\n <Panel title=\"Modello di Bohr\">\n <p>\n L'energia degli elettroni è quantizzata.\n </p>\n <p>\n Inoltre, per essi è valido che:\n </p>\n <p>\n <Latex>{r`m \\cdot v_n \\cdot 2 \\pi \\cdot r = n \\cdot h`}</Latex>\n </p>\n <p>\n Ancora, il raggio delle orbite è uguale a:\n </p>\n <p>\n <Latex>{r`r_n = n^2 \\cdot a_0 = n^2 \\cdot \\frac{\\hbar}{m_{elettrone} \\cdot k \\cdot e^2} `}</Latex>\n </p>\n <p>\n Con <Latex>{r`a_0 = \\left ( \\frac{h}{2 \\pi} \\right )^2 \\cdot \\frac{1}{m_{elettrone} \\cdot k \\cdot e^2} = 5.29 \\cdot 10^{-11} m`}</Latex>.\n </p>\n <p>\n Infine, in ogni stato, l'energia è pari a:\n </p>\n <p>\n <Latex>{r`E_n = \\frac{1}{n^2} \\cdot E_1 = - \\frac{1}{n^2} \\cdot \\frac{a_0^2}{2 \\cdot m \\cdot \\hbar^4} = - \\frac{1}{n^2} \\cdot \\frac{m_{elettrone} \\cdot k^2 \\cdot e^4}{2 \\cdot \\hbar^2}`}</Latex>\n </p>\n <p>\n Due elettroni non possono occupare lo stesso stato.\n </p>\n <p>\n Questo modello funziona solo per atomi con numero atomico basso. Atomi con molti elettroni hanno comportamenti diversi, descritti dal modello di\n </p>\n </Panel>\n </Split>\n <Split>\n <Panel title=\"Nei solidi\">\n <p>\n Nei solidi, le lunghezze d'onda sono talmente tanto vicine da poter essere considerate una banda.\n </p>\n <p>\n Possono però comunque avere dei gap dovuti agli intervalli di energia non ammessi.\n </p>\n </Panel>\n </Split>\n <Split title=\"Semiconduttori\">\n <Panel title=\"Semiconduttori\">\n <p>\n <Todo>Refactor this</Todo>\n </p>\n <p>\n Se la banda di emissione con energia più alta di un corpo è assente o è separata da un gap dell'ordine di grandezza maggiore di <Latex>{r`10^1 eV`}</Latex>, allora il corpo è un isolante.\n </p>\n <p>\n Se invece la banda di emissione si sovrappone a un altra, allora il corpo è un conduttore.\n </p>\n <p>\n Se il gap è invece dell'ordine di grandezza di <Latex>{r`1 eV`}</Latex>, allora il corpo è un semiconduttore.\n </p>\n </Panel>\n <Panel title=\"Lacune\">\n <p>\n Legami in cui <Plus>mancano elettroni</Plus>.\n </p>\n <p>\n <Minus>Elettroni</Minus> di altri legami possono spostarsi per colmare le <Plus>lacune</Plus>, creandone altre, e spostandole in direzione opposta a quella della corrente.\n </p>\n </Panel>\n <Panel title=\"Accettori e donori\">\n <p>\n Se si inserisce in un cristallo semiconduttore si inserisce un atomo con numero atomico diverso, si otterrà:\n </p>\n <ul>\n <li>Con numero atomico maggiore, un semiconduttore di <Minus>tipo N</Minus> con <Minus>elettroni in eccesso</Minus> liberi di scorrere.</li>\n <li>Con numero atomico minore, un semiconduttore di <Plus>tipo P</Plus> con <Plus>lacune in eccesso</Plus> libere di catturare elettroni da altri legami.</li>\n </ul>\n <p>\n Maggiore impurezza porta a maggiore conduttività.\n </p>\n </Panel>\n <Panel title=\"Temperatura\">\n <p>\n Aumentando la temperatura di un semiconduttore si aumenta la conduttività, perchè eccita le particelle e favorisce il movimento di <Minus>elettroni</Minus> e <Plus>lacune</Plus>.\n </p>\n </Panel>\n </Split>\n <Split title={<span>Ottica <small>(non l'abbiamo fatta)</small></span>}>\n <Panel title=\"Assorbimento e riflessione\">\n <p>\n I corpi possono assorbire o riflettere le onde elettromagnetiche che li colpiscono.\n </p>\n </Panel>\n <Panel title=\"Corpo nero\">\n <p>\n Un corpo nero è un corpo che assorbe tutte le onde elettromagnetiche che riceve senza rifletterne nessuna.\n </p>\n <p>\n Le onde assorbite vengono poi riemesse sotto forma di un onda di <Latex>{r`\\lambda`}</Latex> variabile in base alla temperatura.\n </p>\n <p>\n <Latex>{r`\\lambda_{max} \\cdot T`}</Latex> è costante.\n </p>\n </Panel>\n <Panel title=\"Teoria di Planck per il corpo nero\">\n <p>\n L'energia assorbita e emessa dai corpi neri è quantizzata.\n </p>\n </Panel>\n <Panel title=\"Fotone\">\n <p>\n Un onda magnetica con un quanto di energia è detta <i>fotone</i>:\n </p>\n <p>\n <Latex>{r`E_{fotone} = h \\cdot f`}</Latex>\n </p>\n </Panel>\n <Panel title=\"Effetto fotoelettrico\">\n <p>\n A volte, i fotoni che colpiscono un metallo possono estrarvi degli elettroni e creare una differenza di potenziale.\n </p>\n <p>\n Perchè avvenga, la frequenza deve essere maggiore di una certa soglia.\n </p>\n <p>\n Il numero di elettroni estratti dipende dall'intensità dell'onda, mentre l'energia cinetica degli elettroni dipende dalla frequenza.\n </p>\n <p>\n Non c'è nessun ritardo tra l'assorbimento del fotone e l'estrazione di elettroni.\n </p>\n </Panel>\n </Split>\n </div>\n )\n\t}\n}\n\n\n// WEBPACK FOOTER //\n// ./pages/fisica.js","import style from \"./markdown.css\";\nimport { Component } from 'preact';\nimport showdown from \"showdown\";\n\nexport default class Markdown extends Component {\n\trender() {\n let converter = new showdown.Converter();\n converter.setFlavor(\"github\");\n let html = converter.makeHtml(`${this.props.children}`);\n // noinspection CheckTagEmptyBody\n return <div style={style.markdown} dangerouslySetInnerHTML={{__html: html}}></div>;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./components/markdown.js","import style from './vldigeometria.css';\r\nimport { Component } from 'preact';\r\nimport Markdown from '../components/markdown';\r\nimport Panel from '../components/panel';\r\n\r\nconst r = String.raw;\r\n\r\nexport default class VlDiGeometria extends Component {\r\n\trender() {\r\n\t\t//Imported from unimore-info-wiki\r\n\t\treturn (\r\n\t\t\t<div style={style.vldigeometria}>\r\n <h1>Videolezioni di Geometria</h1>\r\n <Panel>\r\n <Markdown>{r`\r\nTutte le videolezioni sono state pubblicate sotto licenza [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) dalla Prof.ssa Beatrice Ruini nell'anno accademico 2018/2019 sul [portale Dolly 2018](https://dolly.fim.unimore.it/2018/course/view.php?id=14#section-0) (Moodle).\r\n\r\nPer comodità, ho estratto l'url sorgente del video dall'embed presente nella rispettiva pagina.\r\n\r\n1. [Definizione di Spazio Vettoriale](https://www.youtube.com/watch?v=7eHEzf4403c) (1:17:29)\r\n2. [Sottospazi vettoriali I](https://www.youtube.com/watch?v=FPqrULk5HBU) (37:15)\r\n3. [Sottospazi vettoriali II](https://www.youtube.com/watch?v=ubDWUw9hk0k) (43:26)\r\n4. [Sottospazi vettoriali III](https://www.youtube.com/watch?v=381n4NPb6Oc) (40:29)\r\n5. [Lineare dipendenza e indipendenza](https://www.youtube.com/watch?v=9YVQ5olYrh0) (56:12)\r\n6. [Basi di uno spazio vettoriale I](https://www.youtube.com/watch?v=mEF_lcTzEoE) (25:52)\r\n7. [Basi di uno spazio vettoriale II](https://www.youtube.com/watch?v=k1r9JfXY53k) (48:24)\r\n8. [Teorema di Grassmann](https://www.youtube.com/watch?v=3sqB-MMyCWM) (32:36)\r\n9. [Basi e Matrici](https://www.youtube.com/watch?v=Rd6AB_jE7YI) (27:06)\r\n10. [Definizione di Applicazioni Lineari](https://www.youtube.com/watch?v=rmd7ffZeVYk) (16:23)\r\n11. [Proprietà delle Applicazioni Lineari](https://www.youtube.com/watch?v=MH7ztQGkqmw) (31:58)\r\n12. [Definizione di determinante](https://www.youtube.com/watch?v=EwubcLwBdzk) (36:43)\r\n13. [Proprietà e metodo di triangolazione](https://www.youtube.com/watch?v=SFusGarV6HI) (22:36)\r\n14. [Teorema di Laplace](https://www.youtube.com/watch?v=BqZDWnKl2nQ) (29:03)\r\n15. [4 applicazioni del Teorema di Laplace](https://www.youtube.com/watch?v=2tr3y725GY0) (47:53)\r\n16. [Spazi vettoriali euclidei reali - Parte 1](https://www.youtube.com/watch?v=W7Z1hm-jwMM) (28:46)\r\n17. [Spazi vettoriali euclidei reali - Parte 2](https://www.youtube.com/watch?v=zjmKE9TMGm8) (27:17)\r\n18. [Autovalori e autovettori](https://www.youtube.com/watch?v=XlrlcnvcTtQ) (33:00)\r\n19. [Polinomio caratteristico](https://www.youtube.com/watch?v=61icRbgWTdI) (31:31)\r\n20. [Teorema diagonalizzabilità](https://www.youtube.com/watch?v=wm5V6en9OFo) (18:49)\r\n21. [Spazi affini](https://player.vimeo.com/video/291457587) (20:46)\r\n22. [Sottospazi affini](https://player.vimeo.com/video/291458991) (21:32)\r\n23. [Parallelismo e Riferimenti Affini](https://player.vimeo.com/video/291510181) (16:57)\r\n24. [Rappresentazione di Sottospazi Affini](https://player.vimeo.com/video/291510296) (31:17)\r\n25. [Spazi Euclidei](https://player.vimeo.com/video/291510612) (35:57)\r\n26. [Teoria dei ranghi](https://player.vimeo.com/video/291510964) (9:44)\r\n27. [Teoria dei ranghi 2](https://player.vimeo.com/video/291510862) (14:44)\r\n\r\nNell'anno accademico 2018/2019 non sono stati trattati gli argomenti nei video 21, 22 e 23.\r\n `}</Markdown>\r\n </Panel>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./pages/vldigeometria.js","import style from './mingwinstall.css';\r\nimport { Component } from 'preact';\r\nimport Panel from '../components/panel';\r\n\r\nexport default class MingwInstall extends Component {\r\n\trender() {\r\n\t\t//Imported from unimore-info-wiki\r\n\t\treturn (\r\n\t\t\t<div style={style.mingwinstall}>\r\n <h1>Come installare MinGW</h1>\r\n <Panel>\r\n\t\t\t\t\t<p> Scaricate <a href=\"https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/\">l'installer ufficiale</a>,\r\n\t\t\t\t\t\ted eseguitelo.</p><img src=\"https://i.imgur.com/mDZSqjV.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Dovrebbe comparire questa schermata. Cliccate su <code>Install</code>, poi scegliete una cartella di installazione\r\n\t\t\t\t\t\t(ricordatevela!) e poi <code>Continue</code>. Lasciate stare le altre opzioni, dovrebbero essere tutte spuntate,\r\n\t\t\t\t\t\ttranne <code>For all users</code>, che dovrebbe essere disattivato.</p><img src=\"https://i.imgur.com/brdw8Xy.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Aspettate che finisca il download. Pochi secondi dopo, dovrebbe finire e dovrebbe apparire un tasto\r\n\t\t\t\t\t\t<code>Continue</code>. Premetelo.</p><img src=\"https://i.imgur.com/aPTwrxz.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Dovrebbe apparirvi questa finestra. L'installer di MinGW è una specie di gestore pacchetti (tipo <code>apt</code> su\r\n\t\t\t\t\t\tUbuntu); potete scegliere quali pacchetti installare, e quindi quali funzionalità.</p><img src=\"https://i.imgur.com/5QLSkFN.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Nel nostro caso, dovrebbero servirci <code>mingw32-base-bin</code> (per il C e alcune librerie C++) e\r\n\t\t\t\t\t\t<code>mingw32-gcc-g++-bin</code> (per il C++). Cliccate, quindi, sui due quadratini corrispondenti, e premete\r\n\t\t\t\t\t\t<code>Mark for Installation</code>. Dovrebbe comparire una freccia gialla sul quadratino.</p><img src=\"https://i.imgur.com/zP74nks.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Ora, è il momento di installare i pacchetti. Aprite il menù <code>Installation</code>, poi premete\r\n\t\t\t\t\t\t<code>Apply Changes</code>, e di nuovo <code>Apply</code>.</p><img src=\"https://i.imgur.com/jp4uz5B.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Lasciate che scarichi, ci vorrà un po'. Guardatevi un video nel frattempo, fatevi una partitina a qualcosa, tornate\r\n\t\t\t\t\t\tdopo circa 10 minuti.</p><img src=\"https://i.imgur.com/Lq9IepY.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Una volta installato, dobbiamo aggiungere <code>g++</code> ai programmi eseguibili da Prompt dei Comandi: premete il\r\n\t\t\t\t\t\ttasto <kbd>Windows</kbd>, e scrivete <code>PATH</code>. Windows dovrebbe trovarvi automaticamente quell'opzione.</p>\r\n\t\t\t\t\t<img src=\"https://i.imgur.com/dy3b5Ub.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Dentro la finestra di <i>Proprietà del Sistema</i>, premete <code>Variabili d'ambiente</code>.</p><img src=\"https://i.imgur.com/FjYpT1n.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Trovate la variabile d'ambiente globale <code>Path</code>, e fateci doppio click per modificarla.</p><img src=\"https://i.imgur.com/klZQ9So.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Ora dovreste vedere l'elenco di tutte le cartelle contenenti programmi eseguibili da terminale: dobbiamo aggiungere\r\n\t\t\t\t\t\tquella di MinGW! Premete <code>Sfoglia</code>.</p><img src=\"https://i.imgur.com/F6lBCqS.png\" alt=\"\"/>\r\n\t\t\t\t\t<p> Trovate la cartella in cui avete installato MinGW (vi avevo detto di ricordarvela!); entrateci, poi selezionate la\r\n\t\t\t\t\t\tsottocartella <code>bin</code> e premete <code>OK</code> su tutte le finestre che avete aperto fino ad ora,\r\n\t\t\t\t\t\tchiudendole.</p>\r\n\t\t\t\t\t<p> Complimenti! Avete installato MinGW e potete compilare programmi C e C++ da Windows! Avete a disposizione\r\n\t\t\t\t\t\t<code>gcc</code> e <code>g++</code> sul Prompt dei Comandi, e potete finalmente creare dei file .exe! </p>\r\n\t\t\t\t</Panel>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./pages/mingwinstall.js","import style from './copyright.css';\r\nimport { Component } from 'preact';\r\n\r\nexport default class Copyright extends Component {\r\n\trender() {\r\n\t\treturn <div class={style.copyright}>© 2019 - Stefano Pigozzi - <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA 4.0</a> - <a href=\"https://github.com/Steffo99/appuntiweb\">Codice sorgente</a></div>;\r\n\t}\r\n}\n\n\n// WEBPACK FOOTER //\n// ./components/copyright.js","import './index.css';\nimport './manifest.json';\nimport { Component } from 'preact';\nimport Router from 'preact-router';\nimport Home from './pages/home';\nimport Fisica from './pages/fisica';\nimport VlDiGeometria from './pages/vldigeometria';\nimport MingwInstall from './pages/mingwinstall';\nimport Copyright from './components/copyright';\n\n// noinspection JSUnusedGlobalSymbols\nexport default class App extends Component {\n\trender() {\n\t\treturn (\n\t\t\t<div id=\"app\">\n\t\t\t\t<h1><a href=\"/\">Appuntiweb</a> <small>di <a href=\"https://steffo.eu/\">Steffo</a></small></h1>\n\t\t\t\t<Router>\n\t\t\t\t\t<Home path=\"/\"/>\n\t\t\t\t\t<Fisica path=\"/fisica\"/>\n\t\t\t\t\t<VlDiGeometria path=\"/vldigeometria\"/>\n\t\t\t\t\t<MingwInstall path=\"/mingwinstall\"/>\n\t\t\t\t</Router>\n\t\t\t\t<Copyright/>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","!function(){\"use strict\";function e(e,t){var n,o,r,i,l=W;for(i=arguments.length;i-- >2;)P.push(arguments[i]);t&&null!=t.children&&(P.length||P.push(t.children),delete t.children);while(P.length)if((o=P.pop())&&void 0!==o.pop)for(i=o.length;i--;)P.push(o[i]);else\"boolean\"==typeof o&&(o=null),(r=\"function\"!=typeof e)&&(null==o?o=\"\":\"number\"==typeof o?o+=\"\":\"string\"!=typeof o&&(r=!1)),r&&n?l[l.length-1]+=o:l===W?l=[o]:l.push(o),n=r;var a=new T;return a.nodeName=e,a.children=l,a.attributes=null==t?void 0:t,a.key=null==t?void 0:t.key,void 0!==M.vnode&&M.vnode(a),a}function t(e,t){for(var n in t)e[n]=t[n];return e}function n(e,t){e&&(\"function\"==typeof e?e(t):e.current=t)}function o(n,o){return e(n.nodeName,t(t({},n.attributes),o),arguments.length>2?[].slice.call(arguments,2):n.children)}function r(e){!e.__d&&(e.__d=!0)&&1==V.push(e)&&(M.debounceRendering||D)(i)}function i(){var e;while(e=V.pop())e.__d&&x(e)}function l(e,t,n){return\"string\"==typeof t||\"number\"==typeof t?void 0!==e.splitText:\"string\"==typeof t.nodeName?!e._componentConstructor&&a(e,t.nodeName):n||e._componentConstructor===t.nodeName}function a(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function u(e){var n=t({},e.attributes);n.children=e.children;var o=e.nodeName.defaultProps;if(void 0!==o)for(var r in o)void 0===n[r]&&(n[r]=o[r]);return n}function c(e,t){var n=t?document.createElementNS(\"http://www.w3.org/2000/svg\",e):document.createElement(e);return n.__n=e,n}function p(e){var t=e.parentNode;t&&t.removeChild(e)}function s(e,t,o,r,i){if(\"className\"===t&&(t=\"class\"),\"key\"===t);else if(\"ref\"===t)n(o,null),n(r,e);else if(\"class\"!==t||i)if(\"style\"===t){if(r&&\"string\"!=typeof r&&\"string\"!=typeof o||(e.style.cssText=r||\"\"),r&&\"object\"==typeof r){if(\"string\"!=typeof o)for(var l in o)l in r||(e.style[l]=\"\");for(var l in r)e.style[l]=\"number\"==typeof r[l]&&!1===E.test(l)?r[l]+\"px\":r[l]}}else if(\"dangerouslySetInnerHTML\"===t)r&&(e.innerHTML=r.__html||\"\");else if(\"o\"==t[0]&&\"n\"==t[1]){var a=t!==(t=t.replace(/Capture$/,\"\"));t=t.toLowerCase().substring(2),r?o||e.addEventListener(t,_,a):e.removeEventListener(t,_,a),(e.__l||(e.__l={}))[t]=r}else if(\"list\"!==t&&\"type\"!==t&&!i&&t in e){try{e[t]=null==r?\"\":r}catch(e){}null!=r&&!1!==r||\"spellcheck\"==t||e.removeAttribute(t)}else{var u=i&&t!==(t=t.replace(/^xlink:?/,\"\"));null==r||!1===r?u?e.removeAttributeNS(\"http://www.w3.org/1999/xlink\",t.toLowerCase()):e.removeAttribute(t):\"function\"!=typeof r&&(u?e.setAttributeNS(\"http://www.w3.org/1999/xlink\",t.toLowerCase(),r):e.setAttribute(t,r))}else e.className=r||\"\"}function _(e){return this.__l[e.type](M.event&&M.event(e)||e)}function f(){var e;while(e=A.shift())M.afterMount&&M.afterMount(e),e.componentDidMount&&e.componentDidMount()}function d(e,t,n,o,r,i){H++||(R=null!=r&&void 0!==r.ownerSVGElement,B=null!=e&&!(\"__preactattr_\"in e));var l=h(e,t,n,o,i);return r&&l.parentNode!==r&&r.appendChild(l),--H||(B=!1,i||f()),l}function h(e,t,n,o,r){var i=e,l=R;if(null!=t&&\"boolean\"!=typeof t||(t=\"\"),\"string\"==typeof t||\"number\"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),v(e,!0))),i.__preactattr_=!0,i;var u=t.nodeName;if(\"function\"==typeof u)return N(e,t,n,o);if(R=\"svg\"===u||\"foreignObject\"!==u&&R,u+=\"\",(!e||!a(e,u))&&(i=c(u,R),e)){while(e.firstChild)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),v(e,!0)}var p=i.firstChild,s=i.__preactattr_,_=t.children;if(null==s){s=i.__preactattr_={};for(var f=i.attributes,d=f.length;d--;)s[f[d].name]=f[d].value}return!B&&_&&1===_.length&&\"string\"==typeof _[0]&&null!=p&&void 0!==p.splitText&&null==p.nextSibling?p.nodeValue!=_[0]&&(p.nodeValue=_[0]):(_&&_.length||null!=p)&&m(i,_,n,o,B||null!=s.dangerouslySetInnerHTML),y(i,t.attributes,s),R=l,i}function m(e,t,n,o,r){var i,a,u,c,s,_=e.childNodes,f=[],d={},m=0,b=0,y=_.length,g=0,w=t?t.length:0;if(0!==y)for(var C=0;C<y;C++){var x=_[C],N=x.__preactattr_,k=w&&N?x._component?x._component.__k:N.key:null;null!=k?(m++,d[k]=x):(N||(void 0!==x.splitText?!r||x.nodeValue.trim():r))&&(f[g++]=x)}if(0!==w)for(var C=0;C<w;C++){c=t[C],s=null;var k=c.key;if(null!=k)m&&void 0!==d[k]&&(s=d[k],d[k]=void 0,m--);else if(b<g)for(i=b;i<g;i++)if(void 0!==f[i]&&l(a=f[i],c,r)){s=a,f[i]=void 0,i===g-1&&g--,i===b&&b++;break}s=h(s,c,n,o),u=_[C],s&&s!==e&&s!==u&&(null==u?e.appendChild(s):s===u.nextSibling?p(u):e.insertBefore(s,u))}if(m)for(var C in d)void 0!==d[C]&&v(d[C],!1);while(b<=g)void 0!==(s=f[g--])&&v(s,!1)}function v(e,t){var o=e._component;o?k(o):(null!=e.__preactattr_&&n(e.__preactattr_.ref,null),!1!==t&&null!=e.__preactattr_||p(e),b(e))}function b(e){e=e.lastChild;while(e){var t=e.previousSibling;v(e,!0),e=t}}function y(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||s(e,o,n[o],n[o]=void 0,R);for(o in t)\"children\"===o||\"innerHTML\"===o||o in n&&t[o]===(\"value\"===o||\"checked\"===o?e[o]:n[o])||s(e,o,n[o],n[o]=t[o],R)}function g(e,t,n){var o,r=F.length;e.prototype&&e.prototype.render?(o=new e(t,n),U.call(o,t,n)):(o=new U(t,n),o.constructor=e,o.render=w);while(r--)if(F[r].constructor===e)return o.__b=F[r].__b,F.splice(r,1),o;return o}function w(e,t,n){return this.constructor(e,n)}function C(e,t,o,i,l){e.__x||(e.__x=!0,e.__r=t.ref,e.__k=t.key,delete t.ref,delete t.key,void 0===e.constructor.getDerivedStateFromProps&&(!e.base||l?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,i)),i&&i!==e.context&&(e.__c||(e.__c=e.context),e.context=i),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==o&&(1!==o&&!1===M.syncComponentUpdates&&e.base?r(e):x(e,1,l)),n(e.__r,e))}function x(e,n,o,r){if(!e.__x){var i,l,a,c=e.props,p=e.state,s=e.context,_=e.__p||c,h=e.__s||p,m=e.__c||s,b=e.base,y=e.__b,w=b||y,N=e._component,U=!1,S=m;if(e.constructor.getDerivedStateFromProps&&(p=t(t({},p),e.constructor.getDerivedStateFromProps(c,p)),e.state=p),b&&(e.props=_,e.state=h,e.context=m,2!==n&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(c,p,s)?U=!0:e.componentWillUpdate&&e.componentWillUpdate(c,p,s),e.props=c,e.state=p,e.context=s),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!U){i=e.render(c,p,s),e.getChildContext&&(s=t(t({},s),e.getChildContext())),b&&e.getSnapshotBeforeUpdate&&(S=e.getSnapshotBeforeUpdate(_,h));var L,T,P=i&&i.nodeName;if(\"function\"==typeof P){var W=u(i);l=N,l&&l.constructor===P&&W.key==l.__k?C(l,W,1,s,!1):(L=l,e._component=l=g(P,W,s),l.__b=l.__b||y,l.__u=e,C(l,W,0,s,!1),x(l,1,o,!0)),T=l.base}else a=w,L=N,L&&(a=e._component=null),(w||1===n)&&(a&&(a._component=null),T=d(a,i,s,o||!b,w&&w.parentNode,!0));if(w&&T!==w&&l!==N){var D=w.parentNode;D&&T!==D&&(D.replaceChild(T,w),L||(w._component=null,v(w,!1)))}if(L&&k(L),e.base=T,T&&!r){var E=e,V=e;while(V=V.__u)(E=V).base=T;T._component=E,T._componentConstructor=E.constructor}}!b||o?A.push(e):U||(e.componentDidUpdate&&e.componentDidUpdate(_,h,S),M.afterUpdate&&M.afterUpdate(e));while(e.__h.length)e.__h.pop().call(e);H||r||f()}}function N(e,t,n,o){var r=e&&e._component,i=r,l=e,a=r&&e._componentConstructor===t.nodeName,c=a,p=u(t);while(r&&!c&&(r=r.__u))c=r.constructor===t.nodeName;return r&&c&&(!o||r._component)?(C(r,p,3,n,o),e=r.base):(i&&!a&&(k(i),e=l=null),r=g(t.nodeName,p,n),e&&!r.__b&&(r.__b=e,l=null),C(r,p,1,n,o),e=r.base,l&&e!==l&&(l._component=null,v(l,!1))),e}function k(e){M.beforeUnmount&&M.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var o=e._component;o?k(o):t&&(null!=t.__preactattr_&&n(t.__preactattr_.ref,null),e.__b=t,p(t),F.push(e),b(t)),n(e.__r,null)}function U(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{},this.__h=[]}function S(e,t,n){return d(n,e,{},!1,t,!1)}function L(){return{}}var T=function(){},M={},P=[],W=[],D=\"function\"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,E=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,V=[],A=[],H=0,R=!1,B=!1,F=[];t(U.prototype,{setState:function(e,n){this.__s||(this.__s=this.state),this.state=t(t({},this.state),\"function\"==typeof e?e(this.state,this.props):e),n&&this.__h.push(n),r(this)},forceUpdate:function(e){e&&this.__h.push(e),x(this,2)},render:function(){}});var j={h:e,createElement:e,cloneElement:o,createRef:L,Component:U,render:S,rerender:i,options:M};\"undefined\"!=typeof module?module.exports=j:self.preact=j}();\n//# sourceMappingURL=preact.min.js.map\n\n\n// WEBPACK FOOTER //\n// ../node_modules/preact/dist/preact.min.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"markdown\":\"markdown__2fpjQ\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/markdown.css\n// module id = MKE3\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"minus\":\"minus__2d_8r\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/minus.css\n// module id = MeW5\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"panel\":\"panel__22fOQ\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/panel.css\n// module id = P9k+\n// module chunks = 0","module.exports = {\"name\":\"Appunti Web\",\"short_name\":\"Appunti Web\",\"start_url\":\"/appuntiweb/\",\"display\":\"standalone\",\"orientation\":\"portrait\",\"background_color\":\"#0d193b\",\"theme_color\":\"#a0ccff\",\"icons\":[{\"src\":\"/assets/icon.png\",\"type\":\"image/png\",\"sizes\":\"800x800\"}]}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./manifest.json\n// module id = ZcXo\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"plus\":\"plus__1JPyf\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/plus.css\n// module id = ddTt\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"copyright\":\"copyright__TBGn1\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/copyright.css\n// module id = qMTX\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"todo\":\"todo__5Soco\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/todo.css\n// module id = tO1d\n// module chunks = 0"],"sourceRoot":""}