j1-template 2021.2.2 → 2021.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_layouts/default.html +31 -25
- data/assets/data/quicklinks.html +1 -2
- data/assets/themes/j1/adapter/js/fam.js +1 -1
- data/assets/themes/j1/adapter/js/j1.js +140 -141
- data/assets/themes/j1/core/js/template.js +16 -7
- data/assets/themes/j1/core/js/template.js.map +1 -1
- data/assets/themes/j1/core/js/template.min.js +16 -7
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/j1Deepl/js/j1deepl.js +385 -0
- data/assets/themes/j1/modules/j1Deepl/js/j1deepl.min.js +18 -0
- data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +3 -0
- data/lib/j1/version.rb +3 -3
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +1 -1
- data/lib/starter_web/_data/resources.yml +23 -1
- data/lib/starter_web/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/package.json +2 -2
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +9 -32
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +0 -22
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +0 -20
- data/lib/starter_web/pages/public/blog/navigator/archive.html +0 -22
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +4 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///(webpack)/buildin/global.js","webpack:///./template.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/log4javascript/log4javascript.js","webpack:///./node_modules/lite-url/dist/lite-url.min.js","webpack:///./node_modules/platform/platform.js","webpack:///(webpack)/buildin/module.js","webpack:///./js/adapter/adapter.js","webpack:///./js/core/core.js","webpack:///./js/navigator/navigator.js","webpack:///./js/asciidoctor/asciidoctor.js","webpack:///./js/scroll-smooth/scroll-smooth.js","webpack:///./js/anime/anime.js","webpack:///./js/tocbot/tocbot.js","webpack:///./js/tocbot/default-options.js","webpack:///./js/tocbot/build-html.js","webpack:///./js/tocbot/parse-content.js","webpack:///./js/tocbot/update-toc-scroll.js","webpack:///./js/tocbot/scroll-smooth/index.js","webpack:///./js/adoc_result_viewer/view_results.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","window","Cookies","require","log4javascript","liteURL","platform","j1","adapter","core","navigator","asciidoctor","scrollSmooth","anime","factory","OldCookies","api","noConflict","extend","result","arguments","length","attributes","decode","replace","decodeURIComponent","init","converter","set","document","path","defaults","expires","Date","toUTCString","JSON","stringify","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","split","cookie","json","jar","cookies","parts","slice","join","charAt","read","parse","getJSON","remove","withConverter","isUndefined","obj","EventSupport","Array","push","len","shift","firstItem","splice","startIndex","deleteCount","itemsAfterDeleted","itemsDeleted","argumentsArray","itemsToAppend","concat","eventTypes","eventListeners","setEventTypes","eventTypesParam","handleError","addEventListener","eventType","listener","array_contains","removeEventListener","array_remove","dispatchEvent","eventArgs","listeners","applicationStartDate","uniqueId","getTime","Math","floor","random","emptyFunction","newLine","pageLoaded","Log4JavaScript","toStr","toString","getExceptionMessage","ex","message","description","getUrlFileName","url","lastSlashIndex","max","lastIndexOf","substr","getExceptionStringRep","exStr","lineNumber","fileName","localEx","logLog","warn","showStackTraces","stack","bool","Boolean","trim","str","splitIntoLines","text","version","edition","urlEncode","arr","val","index","extractBooleanFromParam","param","defaultValue","extractStringFromParam","extractIntFromParam","parseInt","isNaN","extractFunctionFromParam","isError","err","Error","apply","args","methodName","argsStrings","script","returnValue","eval","quietMode","debugMessages","setQuietMode","numberOfErrors","alertAllErrors","setAlertAllErrors","debug","displayDebug","alert","exception","error","alertMessage","enabled","log4javascript_disabled","setEnabled","enable","isEnabled","useTimeStampsInMilliseconds","setTimeStampsInMilliseconds","timeStampsInMilliseconds","isTimeStampsInMilliseconds","evalInScope","expr","setShowStackTraces","show","Level","level","Timer","INFO","start","equals","isGreaterOrEqual","ALL","Number","MIN_VALUE","TRACE","DEBUG","WARN","ERROR","FATAL","OFF","MAX_VALUE","getElapsedTime","anonymousLoggerName","defaultLoggerName","nullLoggerName","rootLoggerName","Logger","parent","children","appenders","loggerLevel","isRoot","isNull","appenderCache","appenderCacheInvalidated","addChild","childLogger","invalidateAppenderCache","additive","getAdditivity","setAdditivity","additivity","valueChanged","addAppender","appender","Appender","setAddedToLogger","removeAppender","setRemovedFromLogger","removeAllAppenders","appenderCount","getEffectiveAppenders","parentEffectiveAppenders","log","params","getEffectiveLevel","finalParamIndex","lastParam","messages","loggingEvent","LoggingEvent","callAppenders","effectiveAppenders","doAppend","setLevel","getLevel","logger","group","initiallyExpanded","groupEnd","timers","time","timeEnd","timer","milliseconds","assert","trace","info","fatal","isEnabledFor","isTraceEnabled","isDebugEnabled","isInfoEnabled","isWarnEnabled","isErrorEnabled","isFatalEnabled","isEntryPoint","loggers","loggerNames","ROOT_LOGGER_DEFAULT_LEVEL","rootLogger","getRootLogger","getLogger","loggerName","parentLogger","lastDotIndex","parentLoggerName","substring","defaultLogger","getDefaultLogger","createDefaultLogger","nullLogger","getNullLogger","resetConfiguration","timeStamp","timeStampInMilliseconds","timeStampInSeconds","getMilliseconds","getThrowableStrRep","getCombinedMessages","Layout","loggerKey","timeStampKey","millisecondsKey","levelKey","messageKey","exceptionKey","urlKey","batchHeader","batchFooter","batchSeparator","returnsPostData","overrideTimeStampsSetting","format","ignoresThrowable","getContentType","allowBatching","getTimeStampValue","getDataValues","combineMessages","dataValues","location","href","hasCustomFields","customFields","setKeys","setCustomField","fieldUpdated","formatWithException","formatted","SimpleDateFormat","SimpleLayout","NullLayout","XmlLayout","escapeNewLines","JsonLayout","readable","colon","tab","lineBreak","HttpPostDataLayout","formatObjectExpansion","depth","indentation","objectsExpanded","doFormat","childDepth","childIndentation","childLines","expansion","childExpansion","formatString","lines","j","jLen","PatternLayout","pattern","DEFAULT_CONVERSION_PATTERN","AlertAppender","BrowserConsoleAppender","layout","threshold","append","setLayout","getLayout","setThreshold","getThreshold","isCombinedMessages","escapeCdata","formatMessage","isReadable","formatValue","prefix","expand","formattedValue","valType","childPrefix","queryBits","regex","monthNames","dayNames","types","G","y","M","w","W","D","F","E","a","H","k","K","h","S","Z","newDateAtMidnight","year","month","day","setMilliseconds","getDifference","date","isBefore","getUTCTime","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getTimeSince","getPreviousSunday","midday","previousSunday","getDay","getWeekInYear","minimalDaysInFirstWeek","startOfYear","weekInYear","getWeekInMonth","startOfMonth","weekInMonth","getDayInYear","setMinimalDaysInFirstWeek","days","getMinimalDaysInFirstWeek","padWithZeroes","formatText","data","numberOfLetters","minLength","formatNumber","formattedString","searchString","exec","quotedString","patternLetters","otherLetters","otherCharacters","patternLetter","rawData","getTimezoneOffset","absData","abs","hours","minutes","TTCC_CONVERSION_PATTERN","ISO8601_DATEFORMAT","DATETIME_DATEFORMAT","ABSOLUTETIME_DATEFORMAT","matchedString","padding","truncation","conversionCharacter","specifier","replacement","precision","loggerNameBits","dateFormat","fieldIndex","strLen","consoleMethodName","getFormattedMessage","concatenate","formattedMessage","console","opera","postError","xhrFactory","XMLHttpRequest","xmlHttpFactories","ActiveXObject","withCredentialsSupported","getXmlHttp","errorHandler","xmlHttp","ConsoleAppender","isHttpRequestSuccessful","status","AjaxAppender","withCredentials","isSupported","timed","waitForResponse","batchSize","timerInterval","requestSuccessCallback","failCallback","postVarName","sendAllOnUnload","contentType","sessionId","queuedLoggingEvents","queuedRequests","headers","sending","initialized","checkCanConfigure","configOptionName","sendAll","currentRequestBatch","sendRequest","preparePostData","scheduleSending","sendAllRemaining","sendingAnything","currentLoggingEvent","actualBatchSize","batchedLoggingEvents","formattedMessages","postData","setTimeout","xmlHttpErrorHandler","msg","successCallback","onreadystatechange","readyState","open","header","setRequestHeader","headerEx","send","errMsg","getSessionId","setSessionId","sessionIdParam","layoutParam","isTimed","setTimed","timedParam","getTimerInterval","setTimerInterval","timerIntervalParam","isWaitForResponse","setWaitForResponse","waitForResponseParam","getBatchSize","setBatchSize","batchSizeParam","isSendAllOnUnload","setSendAllOnUnload","sendAllOnUnloadParam","setRequestSuccessCallback","requestSuccessCallbackParam","setFailCallback","failCallbackParam","getPostVarName","setPostVarName","postVarNameParam","getHeaders","addHeader","toLowerCase","oldBeforeUnload","onbeforeunload","setCookie","setTime","toGMTString","getCookie","nameEquals","ca","indexOf","unescape","getBaseUrl","scripts","getElementsByTagName","src","lastSlash","isLoaded","win","loaded","padWithSpaces","spaces","numberOfSpaces","PopUpAppender","defaultCommandLineFunctions","consoleAppenderIdCounter","lazyInit","initiallyMinimized","useDocumentWrite","width","height","focusPopUp","InPageAppender","container","inPage","focusConsoleWindow","consoleWindowCreated","consoleWindowLoaded","consoleClosed","consoleAppenderId","newestMessageAtTop","scrollToLatestMessage","createWindow","safeToAppend","getConsoleWindow","maxMessages","showCommandLine","commandLineObjectExpansionDepth","showHideButton","showCloseButton","appenderName","consoleWindowExists","isNewestMessageAtTop","setNewestMessageAtTop","newestMessageAtTopParam","setNewestAtTop","isScrollToLatestMessage","setScrollToLatestMessage","scrollToLatestMessageParam","setScrollToLatest","getWidth","setWidth","widthParam","getHeight","setHeight","heightParam","getMaxMessages","setMaxMessages","maxMessagesParam","isShowCommandLine","setShowCommandLine","showCommandLineParam","isShowHideButton","setShowHideButton","showHideButtonParam","isShowCloseButton","setShowCloseButton","showCloseButtonParam","getCommandLineObjectExpansionDepth","setCommandLineObjectExpansionDepth","commandLineObjectExpansionDepthParam","minimized","QueuedLoggingEvent","levelName","QueuedGroup","QueuedGroupEnd","isInitiallyMinimized","setInitiallyMinimized","initiallyMinimizedParam","isUseDocumentWrite","setUseDocumentWrite","useDocumentWriteParam","checkAndAppend","reopenWhenClosed","appendQueuedLoggingEvents","focus","clear","clearLog","focusCommandLine","focusSearch","commandWindow","getCommandWindow","setCommandWindow","commandWindowParam","executeLastCommand","evalLastCommand","commandLayout","getCommandLayout","setCommandLayout","commandLayoutParam","evalCommandAndAppend","commandReturnValue","appendResult","commandOutput","execScript","commandLineFunctionsHash","commandLineFunctions","objectsToRestore","addObjectToRestore","addFunctionToWindow","evalExpr","mainLayout","addCommandLineFunction","functionName","commandLineFunction","storeCommandHistory","commandHistory","writeHtml","doc","writeln","close","consoleWindowLoadHandler","setAppender","setMainWindow","storedValue","currentCommandIndex","unload","caller","pollConsoleWindow","windowTest","interval","errorMessage","poll","setInterval","clearInterval","getConsoleUrl","documentDomainSet","domain","hostname","containerElement","cssProperties","addCssProperty","iframeContainerDiv","windowCreationStarted","iframeId","hide","$","blur","style","display","isVisible","fromButton","confirm","parentNode","removeChild","initErrorMessage","finalInit","writeToDocument","appendChild","createElement","border","iframeSrc","innerHTML","iframeDocumentExistsTest","pageLoadHandler","el","getElementById","nodeType","position","left","right","bottom","body","iframe","frames","popUp","useOldPopUp","complainAboutPopUpBlocking","isUseOldPopUp","setUseOldPopUp","useOldPopUpParam","isComplainAboutPopUpBlocking","setComplainAboutPopUpBlocking","complainAboutPopUpBlockingParam","isFocusPopUp","setFocusPopUp","focusPopUpParam","isReopenWhenClosed","setReopenWhenClosed","reopenWhenClosedParam","windowProperties","frameInfo","frameEl","frameElement","tagName","id","windowName","host","checkPopUpClosed","closed","popUpClosedCallback","setCloseIfOpenerCloses","mainPageReloaded","addGlobalCommandLineFunction","showLogEntryDeleteButtons","InlineAppender","dir","maxLen","propList","propVal","propNameStr","nodeTypes","preFormattedElements","emptyElements","getXhtml","rootNode","includeRootNode","startNewLine","preformatted","xhtml","node","getStyleAttributeValue","stylePairs","cssText","styleValue","nameValueBits","props","childNodes","outerHTML","RegExp","$1","hasPrefix","currentAttr","specified","nodeValue","nodeName","hasChildNodes","childStartNewLine","childPreformatted","endTag","lt","trimmedLines","keys","values","expansionDepth","setDocumentReady","attachEvent","oldOnload","onload","evt","hash","origin","pathname","protocol","search","password","username","port","changeQueryParser","objectTypes","root","freeExports","freeModule","freeGlobal","global","self","maxSafeInteger","pow","reOpera","objectProto","capitalize","string","toUpperCase","forOwn","callback","getClassOf","qualify","reduce","array","accumulator","each","ua","context","isCustomContext","nav","userAgent","isSpecialCasedOS","type","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","operamini","operaClass","arch","prerelease","useFeatures","guess","label","guesses","getName","product","getProduct","manufacturer","getManufacturer","os","cleanupOS","getOS","getVersion","patterns","unshift","parseFloat","runtime","flash","system","Capabilities","phantom","major","minor","patch","documentMode","toFixed","lang","System","getProperty","process","browser","versions","electron","nw","appMinorVersion","external","family","architecture","cpuClass","webpackPolyfill","deprecate","paths","_init_","options","foo","bar","getState","isMobile","ua_name","mobile","vendor","bsFormClearButton","on","nextAll","removeClass","addClass","createDropCap","$p","firstLetter","marginalDropCap","html","logText","defaultOptions","menuOptions","manageDropdownMenu","navbarSticky","eventHandler","action","sendMessage","$getNav","click","preventDefault","hasClass","wrap","postsArr","$postsList","find","firstList","round","secondList","ListHTML","createHTML","list","first","after","next","last","dropDown","megaMenu","closest","prepend","navbarHeighth","outerHeight","scrollTop","animate","slideToggle","is","nav_bar","container_id","unbind","slideUp","stopPropagation","toggle","css","wrapInner","$menu","breakPoint","$dropDown","timeoutHandle","navDefaultOptions","navMenuOptions","$getWindow","matchMedia","matches","$getIn","$getOut","menuSelector","xhr_container_id","delayMenuOpen","delay_menu_open","media_breakpoint","off","stop","fadeToggle","fadeOut","hover","$list","eq","fadeIn","clearTimeout","windowHeight","windowWidth","getId","$getHeight","getOffset","offset","top","updateSidebar","user_data","json_message","resolveMacros","updateMacros","jQuery","moduleOptions","dummyOption","callouts","colgroupList","conums","dependencies_met_page_finished","scroll","target","duration","scrollTo","timeStart","timeElapsed","pageYOffset","opt","easing","b","tgt","querySelector","decodeURI","distance","getBoundingClientRect","documentElement","loop","requestAnimationFrame","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","direction","autoplay","timelineOffset","defaultTweenSettings","delay","endDelay","validTransforms","cache","CSS","springs","minMax","min","stringContains","applyArguments","func","isArray","pth","svg","SVGElement","inp","HTMLInputElement","dom","fnc","und","hex","rgb","hsl","col","parseEasingParameters","match","map","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","solver","progress","exp","cos","sin","cached","elapsed","rest","steps","ceil","eases","functionEasings","bezier","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","forEach","easeIn","parseEasings","ease","selectString","querySelectorAll","filterArray","thisArg","flattenArray","toArray","NodeList","HTMLCollection","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","total","getAttribute","prop","convertPxToUnit","unit","tempEl","parentEl","factor","offsetWidth","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","Map","getTransformValue","propName","defaultVal","getTransformUnit","getOriginalTargetValue","getRelativeValue","to","from","operator","u","validateValue","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","viewBoxAttr","viewBox","getPathProgress","point","getPointAtLength","p0","atan2","decomposeValue","rgx","original","numbers","strings","parseTargets","targets","item","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","v","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","end","isPath","isColor","setProgressValue","attribute","setAttribute","manual","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","raf","activeInstances","pausedInstances","engine","play","step","activeInstancesLength","activeInstance","paused","instanceIndex","tick","cancelAnimationFrame","startTime","lastTime","now","childrenLength","resolve","makePromise","instance","promise","Promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","pause","reverse","restart","removeTargetsFromAnimations","targetsArray","hidden","ins","running","childAnimations","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","add","instanceParams","tlIndex","insParams","tlDuration","define","buildHtml","parseContent","headingsArray","tocbot","BuildHtml","ParseContent","updateTocScroll","supports","destroy","skipRendering","tocSelector","scrollContainer","_scrollListener","_clickListener","customOptions","source","state","scrollSmoothDuration","scrollSmoothOffset","initSmoothScrolling","_buildHtml","_parseContent","selectHeadings","contentSelector","headingSelector","nestedHeadings","nestHeadingsArray","nest","render","throttle","updateToc","disableTocScrollSync","isTop","scrollingElement","eventPhase","currentTarget","scrollEndCallback","throttleTimeout","timeout","event","disableTocAnimation","enableTocAnimation","refresh","fn","scope","deferTimer","ignoreSelector","hasInnerContainers","linkClass","extraLinkClasses","activeLinkClass","listClass","extraListClasses","isCollapsedClass","collapsibleClass","listItemClass","activeListItemClass","collapseDepth","headingsOffset","positionFixedSelector","positionFixedClass","fixedSidebarOffset","includeHtml","onClick","orderedList","headingLabelCallback","ignoreHiddenElements","headingObjectCallback","basePath","currentlyHighlighting","createEl","link","onclick","cloneNode","textContent","createLink","createList","isCollapsed","listElement","classes","srcElement","className","selector","firstChild","posFixedEl","offsetTop","updateFixedSidebarClass","topHeader","headings","heading","getHeadingTopPos","offsetParent","tocLinks","tocLink","tocLis","tocLi","activeTocLink","li","tocLists","nextSibling","removeCollapsedFromParents","element","getLastItem","getHeadingLevel","getHeadingObject","HTMLElement","offsetHeight","headingLevel","prev","curr","currentHeading","lastItem","counter","undefined","addNode","selectors","toc","scrollHeight","clientHeight","activeItem","pageUrl","stripHash","jump","tabIndex","language","idx","view_result_link","result_block","title_div","toggleClass","toggle_result_block"],"mappings":"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","file":"template.js","sourcesContent":[" \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"/assets/themes/j1/core/js\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n # -----------------------------------------------------------------------------\n # ~/src/template.js\n # J1 Template Javascript Core library\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n #\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* global window */\n\n// -----------------------------------------------------------------------------\n// Import SASS sources for HMR\n// -----------------------------------------------------------------------------\n// import '../100_template_css/scss/theme_uno/components/_footer.scss';\n// import '../100_template_css/theme_uno.css'; // <-- yes, also require (s)css. This is a Webpack thing\n\n// Core Libraries - imported|required from NODE|NPM modules\n// -----------------------------------------------------------------------------\n//\n// Following objects (framework modules) are *conditionaly* forced to be\n// exposed for run-time to the global namespace (window) by WP config\n// file (expose-loader):\n// jQuery\n// Popper ('popper.js/dist/umd/popper', https://github.com/twbs/bootstrap/issues/23381)\n// -----------------------------------------------------------------------------\n\n// Core Utilities (moved to modules)\n// -----------------------------------------------------------------------------\n// Following objects (native node modules) are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.Cookies = require('js-cookie');\nwindow.log4javascript = require('log4javascript');\nwindow.liteURL = require('lite-url');\nwindow.platform = require('platform');\n// window.yaml = require('js-yaml'); # NOT longer used/needed\n// window.uuid = require('uuid/v4'); # NOT longer used/needed\n\n// Core Libraries - build|required from SOURCE\n// -----------------------------------------------------------------------------\n\n// Following source objects|modules are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.j1.adapter = require('./js/adapter/adapter.js');\nwindow.j1.core = require('./js/core/core.js');\nwindow.j1.core.navigator = require('./js/navigator/navigator.js');\n// window.j1.core.cookiebar = require('./js/cookiebar/cookiebar.js');\n// window.j1.core.cookieconsent = require('./js/cookieconsent/cookieconsent.js');\nwindow.j1.core.asciidoctor = require('./js/asciidoctor/asciidoctor.js');\nwindow.j1.core.scrollSmooth = require('./js/scroll-smooth/scroll-smooth.js');\nwindow.j1.anime = require('./js/anime/anime.js'); // added for fam\n// window.j1.fam = require('./js/fam/fam.js'); // cannot used until NOT rewritten to jQuery\n\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n//const Bootstrap = require('./js/bootstrap/bootstrap.js');\n//const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js');\nconst J1Tocbot = require('./js/tocbot/tocbot.js');\n//const J1ThemeSwitcher = require('./js/bs_theme_switcher/switcher.js');\n// const J1MmenuLight = require('./js/mmenu-light/mmenu.js');\n\n// Passing log data over Internet|SeeMe (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.log4javascript = require('./js/logger/client/webhook.js');\n\n// BMD Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// window.bootstrapMaterialDesign = require('./js/bmd/js/bmd.js');\n\n// Github Webhooks (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.webhooks = require('./js/webhooks/octokit/client.js');\n\n\n// Test|Custom modules (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1promiseTest = require('./js/custom/test_promises.js');\n// window.j1Example = require('./js/custom/example_module.js');\n\n// BS Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n// const Bootstrap = require('./js/bootstrap/bootstrap.js');\n\n// const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js'); // Buffer Kack\n// const J1Tocbot = require('./js/tocbot/tocbot.js');\n\n// Backstretch (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the namespace of jQuery ($).\n// -----------------------------------------------------------------------------\n// const J1Attics = require('./js/backstretch/backstretch.js');\n\n// Additional Vanilla JS helpers\n// -----------------------------------------------------------------------------\nconst J1AdocResultViewer = require('./js/adoc_result_viewer/view_results.js');\n// const MSIEPolyfills = require('./js/polyfills/ms-ie.js');\n\n// HMR messages (currently NOT used)\n// -----------------------------------------------------------------------------\n// if (module.hot) {\n// var logtext;\n// var stat;\n// var stat=module.hot.status();\n//\n// logtext='[INFO ] [HMR ] [Hot Module Replacement enabled]';\n// console.log(logtext);\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n//\n// module.hot.accept('./template.js', function() {\n// console.log('[HMR] Accepting the updated template.js module!');\n// });\n//\n// module.hot.accept('../100_template_css/theme_uno.scss', function () {\n// console.log('[HMR] Accepting the updated style.css module!');\n// require('../100_template_css/theme_uno.scss')\n// })\n//\n// React to the current status...\n// module.hot.addStatusHandler(status => {\n// stat=module.hot.status();\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n// });\n//}\n\n// -----------------------------------------------------------------------------\n// END\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\r\n * Copyright 2015 Tim Down.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n\r\n(function(factory,root){if(typeof define==\"function\"&&define.amd){define(factory);}else if(typeof module!=\"undefined\"&&typeof exports==\"object\"){module.exports=factory();}else{root.log4javascript=factory();}})(function(){if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}\r\nreturn this.length;};}\r\nif(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}\r\nthis.length=this.length-1;return firstItem;}};}\r\nif(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}\r\nvar itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}\r\nreturn itemsDeleted;};}\r\nfunction isUndefined(obj){return typeof obj==\"undefined\";}\r\nfunction EventSupport(){}\r\nEventSupport.prototype={eventTypes:[],eventListeners:{},setEventTypes:function(eventTypesParam){if(eventTypesParam instanceof Array){this.eventTypes=eventTypesParam;this.eventListeners={};for(var i=0,len=this.eventTypes.length;i<len;i++){this.eventListeners[this.eventTypes[i]]=[];}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: setEventTypes: eventTypes parameter must be an Array\");}},addEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: no event called '\"+eventType+\"'\");}\r\nthis.eventListeners[eventType].push(listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: listener must be a function\");}},removeEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: no event called '\"+eventType+\"'\");}\r\narray_remove(this.eventListeners[eventType],listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: listener must be a function\");}},dispatchEvent:function(eventType,eventArgs){if(array_contains(this.eventTypes,eventType)){var listeners=this.eventListeners[eventType];for(var i=0,len=listeners.length;i<len;i++){listeners[i](this,eventType,eventArgs);}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: dispatchEvent: no event called '\"+eventType+\"'\");}}};var applicationStartDate=new Date();var uniqueId=\"log4javascript_\"+applicationStartDate.getTime()+\"_\"+\r\nMath.floor(Math.random()*100000000);var emptyFunction=function(){};var newLine=\"\\r\\n\";var pageLoaded=false;function Log4JavaScript(){}\r\nLog4JavaScript.prototype=new EventSupport();var log4javascript=new Log4JavaScript();log4javascript.version=\"1.4.13\";log4javascript.edition=\"log4javascript\";function toStr(obj){if(obj&&obj.toString){return obj.toString();}else{return String(obj);}}\r\nfunction getExceptionMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}else{return toStr(ex);}}\r\nfunction getUrlFileName(url){var lastSlashIndex=Math.max(url.lastIndexOf(\"/\"),url.lastIndexOf(\"\\\\\"));return url.substr(lastSlashIndex+1);}\r\nfunction getExceptionStringRep(ex){if(ex){var exStr=\"Exception: \"+getExceptionMessage(ex);try{if(ex.lineNumber){exStr+=\" on line number \"+ex.lineNumber;}\r\nif(ex.fileName){exStr+=\" in file \"+getUrlFileName(ex.fileName);}}catch(localEx){logLog.warn(\"Unable to obtain file and line information for error\");}\r\nif(showStackTraces&&ex.stack){exStr+=newLine+\"Stack trace:\"+newLine+ex.stack;}\r\nreturn exStr;}\r\nreturn null;}\r\nfunction bool(obj){return Boolean(obj);}\r\nfunction trim(str){return str.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\");}\r\nfunction splitIntoLines(text){var text2=text.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");return text2.split(\"\\n\");}\r\nvar urlEncode=(typeof window.encodeURIComponent!=\"undefined\")?function(str){return encodeURIComponent(str);}:function(str){return escape(str).replace(/\\+/g,\"%2B\").replace(/\"/g,\"%22\").replace(/'/g,\"%27\").replace(/\\//g,\"%2F\").replace(/=/g,\"%3D\");};function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}\r\nif(index>=0){arr.splice(index,1);return true;}else{return false;}}\r\nfunction array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}\r\nreturn false;}\r\nfunction extractBooleanFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return bool(param);}}\r\nfunction extractStringFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return String(param);}}\r\nfunction extractIntFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{try{var value=parseInt(param,10);return isNaN(value)?defaultValue:value;}catch(ex){logLog.warn(\"Invalid int param \"+param,ex);return defaultValue;}}}\r\nfunction extractFunctionFromParam(param,defaultValue){if(typeof param==\"function\"){return param;}else{return defaultValue;}}\r\nfunction isError(err){return(err instanceof Error);}\r\nif(!Function.prototype.apply){Function.prototype.apply=function(obj,args){var methodName=\"__apply__\";if(typeof obj[methodName]!=\"undefined\"){methodName+=String(Math.random()).substr(2);}\r\nobj[methodName]=this;var argsStrings=[];for(var i=0,len=args.length;i<len;i++){argsStrings[i]=\"args[\"+i+\"]\";}\r\nvar script=\"obj.\"+methodName+\"(\"+argsStrings.join(\",\")+\")\";var returnValue=eval(script);delete obj[methodName];return returnValue;};}\r\nif(!Function.prototype.call){Function.prototype.call=function(obj){var args=[];for(var i=1,len=arguments.length;i<len;i++){args[i-1]=arguments[i];}\r\nreturn this.apply(obj,args);};}\r\nvar logLog={quietMode:false,debugMessages:[],setQuietMode:function(quietMode){this.quietMode=bool(quietMode);},numberOfErrors:0,alertAllErrors:false,setAlertAllErrors:function(alertAllErrors){this.alertAllErrors=alertAllErrors;},debug:function(message){this.debugMessages.push(message);},displayDebug:function(){alert(this.debugMessages.join(newLine));},warn:function(message,exception){},error:function(message,exception){if(++this.numberOfErrors==1||this.alertAllErrors){if(!this.quietMode){var alertMessage=\"log4javascript error: \"+message;if(exception){alertMessage+=newLine+newLine+\"Original error: \"+getExceptionStringRep(exception);}\r\nalert(alertMessage);}}}};log4javascript.logLog=logLog;log4javascript.setEventTypes([\"load\",\"error\"]);function handleError(message,exception){logLog.error(message,exception);log4javascript.dispatchEvent(\"error\",{\"message\":message,\"exception\":exception});}\r\nlog4javascript.handleError=handleError;var enabled=!((typeof log4javascript_disabled!=\"undefined\")&&log4javascript_disabled);log4javascript.setEnabled=function(enable){enabled=bool(enable);};log4javascript.isEnabled=function(){return enabled;};var useTimeStampsInMilliseconds=true;log4javascript.setTimeStampsInMilliseconds=function(timeStampsInMilliseconds){useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);};log4javascript.isTimeStampsInMilliseconds=function(){return useTimeStampsInMilliseconds;};log4javascript.evalInScope=function(expr){return eval(expr);};var showStackTraces=false;log4javascript.setShowStackTraces=function(show){showStackTraces=bool(show);};var Level=function(level,name){this.level=level;this.name=name;};Level.prototype={toString:function(){return this.name;},equals:function(level){return this.level==level.level;},isGreaterOrEqual:function(level){return this.level>=level.level;}};Level.ALL=new Level(Number.MIN_VALUE,\"ALL\");Level.TRACE=new Level(10000,\"TRACE\");Level.DEBUG=new Level(20000,\"DEBUG\");Level.INFO=new Level(30000,\"INFO\");Level.WARN=new Level(40000,\"WARN\");Level.ERROR=new Level(50000,\"ERROR\");Level.FATAL=new Level(60000,\"FATAL\");Level.OFF=new Level(Number.MAX_VALUE,\"OFF\");log4javascript.Level=Level;function Timer(name,level){this.name=name;this.level=isUndefined(level)?Level.INFO:level;this.start=new Date();}\r\nTimer.prototype.getElapsedTime=function(){return new Date().getTime()-this.start.getTime();};var anonymousLoggerName=\"[anonymous]\";var defaultLoggerName=\"[default]\";var nullLoggerName=\"[null]\";var rootLoggerName=\"root\";function Logger(name){this.name=name;this.parent=null;this.children=[];var appenders=[];var loggerLevel=null;var isRoot=(this.name===rootLoggerName);var isNull=(this.name===nullLoggerName);var appenderCache=null;var appenderCacheInvalidated=false;this.addChild=function(childLogger){this.children.push(childLogger);childLogger.parent=this;childLogger.invalidateAppenderCache();};var additive=true;this.getAdditivity=function(){return additive;};this.setAdditivity=function(additivity){var valueChanged=(additive!=additivity);additive=additivity;if(valueChanged){this.invalidateAppenderCache();}};this.addAppender=function(appender){if(isNull){handleError(\"Logger.addAppender: you may not add an appender to the null logger\");}else{if(appender instanceof log4javascript.Appender){if(!array_contains(appenders,appender)){appenders.push(appender);appender.setAddedToLogger(this);this.invalidateAppenderCache();}}else{handleError(\"Logger.addAppender: appender supplied ('\"+\r\ntoStr(appender)+\"') is not a subclass of Appender\");}}};this.removeAppender=function(appender){array_remove(appenders,appender);appender.setRemovedFromLogger(this);this.invalidateAppenderCache();};this.removeAllAppenders=function(){var appenderCount=appenders.length;if(appenderCount>0){for(var i=0;i<appenderCount;i++){appenders[i].setRemovedFromLogger(this);}\r\nappenders.length=0;this.invalidateAppenderCache();}};this.getEffectiveAppenders=function(){if(appenderCache===null||appenderCacheInvalidated){var parentEffectiveAppenders=(isRoot||!this.getAdditivity())?[]:this.parent.getEffectiveAppenders();appenderCache=parentEffectiveAppenders.concat(appenders);appenderCacheInvalidated=false;}\r\nreturn appenderCache;};this.invalidateAppenderCache=function(){appenderCacheInvalidated=true;for(var i=0,len=this.children.length;i<len;i++){this.children[i].invalidateAppenderCache();}};this.log=function(level,params){if(enabled&&level.isGreaterOrEqual(this.getEffectiveLevel())){var exception;var finalParamIndex=params.length-1;var lastParam=params[finalParamIndex];if(params.length>1&&isError(lastParam)){exception=lastParam;finalParamIndex--;}\r\nvar messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}\r\nvar loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);this.callAppenders(loggingEvent);}};this.callAppenders=function(loggingEvent){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].doAppend(loggingEvent);}};this.setLevel=function(level){if(isRoot&&level===null){handleError(\"Logger.setLevel: you cannot set the level of the root logger to null\");}else if(level instanceof Level){loggerLevel=level;}else{handleError(\"Logger.setLevel: level supplied to logger \"+\r\nthis.name+\" is not an instance of log4javascript.Level\");}};this.getLevel=function(){return loggerLevel;};this.getEffectiveLevel=function(){for(var logger=this;logger!==null;logger=logger.parent){var level=logger.getLevel();if(level!==null){return level;}}};this.group=function(name,initiallyExpanded){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].group(name,initiallyExpanded);}}};this.groupEnd=function(){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].groupEnd();}}};var timers={};this.time=function(name,level){if(enabled){if(isUndefined(name)){handleError(\"Logger.time: a name for the timer must be supplied\");}else if(level&&!(level instanceof Level)){handleError(\"Logger.time: level supplied to timer \"+\r\nname+\" is not an instance of log4javascript.Level\");}else{timers[name]=new Timer(name,level);}}};this.timeEnd=function(name){if(enabled){if(isUndefined(name)){handleError(\"Logger.timeEnd: a name for the timer must be supplied\");}else if(timers[name]){var timer=timers[name];var milliseconds=timer.getElapsedTime();this.log(timer.level,[\"Timer \"+toStr(name)+\" completed in \"+milliseconds+\"ms\"]);delete timers[name];}else{logLog.warn(\"Logger.timeEnd: no timer found with name \"+name);}}};this.assert=function(expr){if(enabled&&!expr){var args=[];for(var i=1,len=arguments.length;i<len;i++){args.push(arguments[i]);}\r\nargs=(args.length>0)?args:[\"Assertion Failure\"];args.push(newLine);args.push(expr);this.log(Level.ERROR,args);}};this.toString=function(){return\"Logger[\"+this.name+\"]\";};}\r\nLogger.prototype={trace:function(){this.log(Level.TRACE,arguments);},debug:function(){this.log(Level.DEBUG,arguments);},info:function(){this.log(Level.INFO,arguments);},warn:function(){this.log(Level.WARN,arguments);},error:function(){this.log(Level.ERROR,arguments);},fatal:function(){this.log(Level.FATAL,arguments);},isEnabledFor:function(level){return level.isGreaterOrEqual(this.getEffectiveLevel());},isTraceEnabled:function(){return this.isEnabledFor(Level.TRACE);},isDebugEnabled:function(){return this.isEnabledFor(Level.DEBUG);},isInfoEnabled:function(){return this.isEnabledFor(Level.INFO);},isWarnEnabled:function(){return this.isEnabledFor(Level.WARN);},isErrorEnabled:function(){return this.isEnabledFor(Level.ERROR);},isFatalEnabled:function(){return this.isEnabledFor(Level.FATAL);}};Logger.prototype.trace.isEntryPoint=true;Logger.prototype.debug.isEntryPoint=true;Logger.prototype.info.isEntryPoint=true;Logger.prototype.warn.isEntryPoint=true;Logger.prototype.error.isEntryPoint=true;Logger.prototype.fatal.isEntryPoint=true;var loggers={};var loggerNames=[];var ROOT_LOGGER_DEFAULT_LEVEL=Level.DEBUG;var rootLogger=new Logger(rootLoggerName);rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);log4javascript.getRootLogger=function(){return rootLogger;};log4javascript.getLogger=function(loggerName){if(typeof loggerName!=\"string\"){loggerName=anonymousLoggerName;logLog.warn(\"log4javascript.getLogger: non-string logger name \"+\r\ntoStr(loggerName)+\" supplied, returning anonymous logger\");}\r\nif(loggerName==rootLoggerName){handleError(\"log4javascript.getLogger: root logger may not be obtained by name\");}\r\nif(!loggers[loggerName]){var logger=new Logger(loggerName);loggers[loggerName]=logger;loggerNames.push(loggerName);var lastDotIndex=loggerName.lastIndexOf(\".\");var parentLogger;if(lastDotIndex>-1){var parentLoggerName=loggerName.substring(0,lastDotIndex);parentLogger=log4javascript.getLogger(parentLoggerName);}else{parentLogger=rootLogger;}\r\nparentLogger.addChild(logger);}\r\nreturn loggers[loggerName];};var defaultLogger=null;log4javascript.getDefaultLogger=function(){if(!defaultLogger){defaultLogger=createDefaultLogger();}\r\nreturn defaultLogger;};var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger(nullLoggerName);nullLogger.setLevel(Level.OFF);}\r\nreturn nullLogger;};log4javascript.resetConfiguration=function(){rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);loggers={};};var LoggingEvent=function(logger,timeStamp,level,messages,exception){this.logger=logger;this.timeStamp=timeStamp;this.timeStampInMilliseconds=timeStamp.getTime();this.timeStampInSeconds=Math.floor(this.timeStampInMilliseconds/1000);this.milliseconds=this.timeStamp.getMilliseconds();this.level=level;this.messages=messages;this.exception=exception;};LoggingEvent.prototype={getThrowableStrRep:function(){return this.exception?getExceptionStringRep(this.exception):\"\";},getCombinedMessages:function(){return(this.messages.length==1)?this.messages[0]:this.messages.join(newLine);},toString:function(){return\"LoggingEvent[\"+this.level+\"]\";}};log4javascript.LoggingEvent=LoggingEvent;var Layout=function(){};Layout.prototype={defaults:{loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\"},loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\",batchHeader:\"\",batchFooter:\"\",batchSeparator:\"\",returnsPostData:false,overrideTimeStampsSetting:false,useTimeStampsInMilliseconds:null,format:function(){handleError(\"Layout.format: layout supplied has no format() method\");},ignoresThrowable:function(){handleError(\"Layout.ignoresThrowable: layout supplied has no ignoresThrowable() method\");},getContentType:function(){return\"text/plain\";},allowBatching:function(){return true;},setTimeStampsInMilliseconds:function(timeStampsInMilliseconds){this.overrideTimeStampsSetting=true;this.useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);},isTimeStampsInMilliseconds:function(){return this.overrideTimeStampsSetting?this.useTimeStampsInMilliseconds:useTimeStampsInMilliseconds;},getTimeStampValue:function(loggingEvent){return this.isTimeStampsInMilliseconds()?loggingEvent.timeStampInMilliseconds:loggingEvent.timeStampInSeconds;},getDataValues:function(loggingEvent,combineMessages){var dataValues=[[this.loggerKey,loggingEvent.logger.name],[this.timeStampKey,this.getTimeStampValue(loggingEvent)],[this.levelKey,loggingEvent.level.name],[this.urlKey,window.location.href],[this.messageKey,combineMessages?loggingEvent.getCombinedMessages():loggingEvent.messages]];if(!this.isTimeStampsInMilliseconds()){dataValues.push([this.millisecondsKey,loggingEvent.milliseconds]);}\r\nif(loggingEvent.exception){dataValues.push([this.exceptionKey,getExceptionStringRep(loggingEvent.exception)]);}\r\nif(this.hasCustomFields()){for(var i=0,len=this.customFields.length;i<len;i++){var val=this.customFields[i].value;if(typeof val===\"function\"){val=val(this,loggingEvent);}\r\ndataValues.push([this.customFields[i].name,val]);}}\r\nreturn dataValues;},setKeys:function(loggerKey,timeStampKey,levelKey,messageKey,exceptionKey,urlKey,millisecondsKey){this.loggerKey=extractStringFromParam(loggerKey,this.defaults.loggerKey);this.timeStampKey=extractStringFromParam(timeStampKey,this.defaults.timeStampKey);this.levelKey=extractStringFromParam(levelKey,this.defaults.levelKey);this.messageKey=extractStringFromParam(messageKey,this.defaults.messageKey);this.exceptionKey=extractStringFromParam(exceptionKey,this.defaults.exceptionKey);this.urlKey=extractStringFromParam(urlKey,this.defaults.urlKey);this.millisecondsKey=extractStringFromParam(millisecondsKey,this.defaults.millisecondsKey);},setCustomField:function(name,value){var fieldUpdated=false;for(var i=0,len=this.customFields.length;i<len;i++){if(this.customFields[i].name===name){this.customFields[i].value=value;fieldUpdated=true;}}\r\nif(!fieldUpdated){this.customFields.push({\"name\":name,\"value\":value});}},hasCustomFields:function(){return(this.customFields.length>0);},formatWithException:function(loggingEvent){var formatted=this.format(loggingEvent);if(loggingEvent.exception&&this.ignoresThrowable()){formatted+=loggingEvent.getThrowableStrRep();}\r\nreturn formatted;},toString:function(){handleError(\"Layout.toString: all layouts must override this method\");}};log4javascript.Layout=Layout;var Appender=function(){};Appender.prototype=new EventSupport();Appender.prototype.layout=new PatternLayout();Appender.prototype.threshold=Level.ALL;Appender.prototype.loggers=[];Appender.prototype.doAppend=function(loggingEvent){if(enabled&&loggingEvent.level.level>=this.threshold.level){this.append(loggingEvent);}};Appender.prototype.append=function(loggingEvent){};Appender.prototype.setLayout=function(layout){if(layout instanceof Layout){this.layout=layout;}else{handleError(\"Appender.setLayout: layout supplied to \"+\r\nthis.toString()+\" is not a subclass of Layout\");}};Appender.prototype.getLayout=function(){return this.layout;};Appender.prototype.setThreshold=function(threshold){if(threshold instanceof Level){this.threshold=threshold;}else{handleError(\"Appender.setThreshold: threshold supplied to \"+\r\nthis.toString()+\" is not a subclass of Level\");}};Appender.prototype.getThreshold=function(){return this.threshold;};Appender.prototype.setAddedToLogger=function(logger){this.loggers.push(logger);};Appender.prototype.setRemovedFromLogger=function(logger){array_remove(this.loggers,logger);};Appender.prototype.group=emptyFunction;Appender.prototype.groupEnd=emptyFunction;Appender.prototype.toString=function(){handleError(\"Appender.toString: all appenders must override this method\");};log4javascript.Appender=Appender;function SimpleLayout(){this.customFields=[];}\r\nSimpleLayout.prototype=new Layout();SimpleLayout.prototype.format=function(loggingEvent){return loggingEvent.level.name+\" - \"+loggingEvent.getCombinedMessages();};SimpleLayout.prototype.ignoresThrowable=function(){return true;};SimpleLayout.prototype.toString=function(){return\"SimpleLayout\";};log4javascript.SimpleLayout=SimpleLayout;function NullLayout(){this.customFields=[];}\r\nNullLayout.prototype=new Layout();NullLayout.prototype.format=function(loggingEvent){return loggingEvent.messages;};NullLayout.prototype.ignoresThrowable=function(){return true;};NullLayout.prototype.formatWithException=function(loggingEvent){var messages=loggingEvent.messages,ex=loggingEvent.exception;return ex?messages.concat([ex]):messages;};NullLayout.prototype.toString=function(){return\"NullLayout\";};log4javascript.NullLayout=NullLayout;function XmlLayout(combineMessages){this.combineMessages=extractBooleanFromParam(combineMessages,true);this.customFields=[];}\r\nXmlLayout.prototype=new Layout();XmlLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};XmlLayout.prototype.getContentType=function(){return\"text/xml\";};XmlLayout.prototype.escapeCdata=function(str){return str.replace(/\\]\\]>/,\"]]>]]><![CDATA[\");};XmlLayout.prototype.format=function(loggingEvent){var layout=this;var i,len;function formatMessage(message){message=(typeof message===\"string\")?message:toStr(message);return\"<log4javascript:message><![CDATA[\"+\r\nlayout.escapeCdata(message)+\"]]></log4javascript:message>\";}\r\nvar str=\"<log4javascript:event logger=\\\"\"+loggingEvent.logger.name+\"\\\" timestamp=\\\"\"+this.getTimeStampValue(loggingEvent)+\"\\\"\";if(!this.isTimeStampsInMilliseconds()){str+=\" milliseconds=\\\"\"+loggingEvent.milliseconds+\"\\\"\";}\r\nstr+=\" level=\\\"\"+loggingEvent.level.name+\"\\\">\"+newLine;if(this.combineMessages){str+=formatMessage(loggingEvent.getCombinedMessages());}else{str+=\"<log4javascript:messages>\"+newLine;for(i=0,len=loggingEvent.messages.length;i<len;i++){str+=formatMessage(loggingEvent.messages[i])+newLine;}\r\nstr+=\"</log4javascript:messages>\"+newLine;}\r\nif(this.hasCustomFields()){for(i=0,len=this.customFields.length;i<len;i++){str+=\"<log4javascript:customfield name=\\\"\"+\r\nthis.customFields[i].name+\"\\\"><![CDATA[\"+\r\nthis.customFields[i].value.toString()+\"]]></log4javascript:customfield>\"+newLine;}}\r\nif(loggingEvent.exception){str+=\"<log4javascript:exception><![CDATA[\"+\r\ngetExceptionStringRep(loggingEvent.exception)+\"]]></log4javascript:exception>\"+newLine;}\r\nstr+=\"</log4javascript:event>\"+newLine+newLine;return str;};XmlLayout.prototype.ignoresThrowable=function(){return false;};XmlLayout.prototype.toString=function(){return\"XmlLayout\";};log4javascript.XmlLayout=XmlLayout;function escapeNewLines(str){return str.replace(/\\r\\n|\\r|\\n/g,\"\\\\r\\\\n\");}\r\nfunction JsonLayout(readable,combineMessages){this.readable=extractBooleanFromParam(readable,false);this.combineMessages=extractBooleanFromParam(combineMessages,true);this.batchHeader=this.readable?\"[\"+newLine:\"[\";this.batchFooter=this.readable?\"]\"+newLine:\"]\";this.batchSeparator=this.readable?\",\"+newLine:\",\";this.setKeys();this.colon=this.readable?\": \":\":\";this.tab=this.readable?\"\\t\":\"\";this.lineBreak=this.readable?newLine:\"\";this.customFields=[];}\r\nJsonLayout.prototype=new Layout();JsonLayout.prototype.isReadable=function(){return this.readable;};JsonLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};JsonLayout.prototype.format=function(loggingEvent){var layout=this;var dataValues=this.getDataValues(loggingEvent,this.combineMessages);var str=\"{\"+this.lineBreak;var i,len;function formatValue(val,prefix,expand){var formattedValue;var valType=typeof val;if(val instanceof Date){formattedValue=String(val.getTime());}else if(expand&&(val instanceof Array)){formattedValue=\"[\"+layout.lineBreak;for(var i=0,len=val.length;i<len;i++){var childPrefix=prefix+layout.tab;formattedValue+=childPrefix+formatValue(val[i],childPrefix,false);if(i<val.length-1){formattedValue+=\",\";}\r\nformattedValue+=layout.lineBreak;}\r\nformattedValue+=prefix+\"]\";}else if(valType!==\"number\"&&valType!==\"boolean\"){formattedValue=\"\\\"\"+escapeNewLines(toStr(val).replace(/\\\"/g,\"\\\\\\\"\"))+\"\\\"\";}else{formattedValue=val;}\r\nreturn formattedValue;}\r\nfor(i=0,len=dataValues.length-1;i<=len;i++){str+=this.tab+\"\\\"\"+dataValues[i][0]+\"\\\"\"+this.colon+formatValue(dataValues[i][1],this.tab,true);if(i<len){str+=\",\";}\r\nstr+=this.lineBreak;}\r\nstr+=\"}\"+this.lineBreak;return str;};JsonLayout.prototype.ignoresThrowable=function(){return false;};JsonLayout.prototype.toString=function(){return\"JsonLayout\";};JsonLayout.prototype.getContentType=function(){return\"application/json\";};log4javascript.JsonLayout=JsonLayout;function HttpPostDataLayout(){this.setKeys();this.customFields=[];this.returnsPostData=true;}\r\nHttpPostDataLayout.prototype=new Layout();HttpPostDataLayout.prototype.allowBatching=function(){return false;};HttpPostDataLayout.prototype.format=function(loggingEvent){var dataValues=this.getDataValues(loggingEvent);var queryBits=[];for(var i=0,len=dataValues.length;i<len;i++){var val=(dataValues[i][1]instanceof Date)?String(dataValues[i][1].getTime()):dataValues[i][1];queryBits.push(urlEncode(dataValues[i][0])+\"=\"+urlEncode(val));}\r\nreturn queryBits.join(\"&\");};HttpPostDataLayout.prototype.ignoresThrowable=function(loggingEvent){return false;};HttpPostDataLayout.prototype.toString=function(){return\"HttpPostDataLayout\";};log4javascript.HttpPostDataLayout=HttpPostDataLayout;function formatObjectExpansion(obj,depth,indentation){var objectsExpanded=[];function doFormat(obj,depth,indentation){var i,len,childDepth,childIndentation,childLines,expansion,childExpansion;if(!indentation){indentation=\"\";}\r\nfunction formatString(text){var lines=splitIntoLines(text);for(var j=1,jLen=lines.length;j<jLen;j++){lines[j]=indentation+lines[j];}\r\nreturn lines.join(newLine);}\r\nif(obj===null){return\"null\";}else if(typeof obj==\"undefined\"){return\"undefined\";}else if(typeof obj==\"string\"){return formatString(obj);}else if(typeof obj==\"object\"&&array_contains(objectsExpanded,obj)){try{expansion=toStr(obj);}catch(ex){expansion=\"Error formatting property. Details: \"+getExceptionStringRep(ex);}\r\nreturn expansion+\" [already expanded]\";}else if((obj instanceof Array)&&depth>0){objectsExpanded.push(obj);expansion=\"[\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i=0,len=obj.length;i<len;i++){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+childExpansion);}catch(ex){childLines.push(childIndentation+\"Error formatting array member. Details: \"+\r\ngetExceptionStringRep(ex)+\"\");}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"]\";return expansion;}else if(Object.prototype.toString.call(obj)==\"[object Date]\"){return obj.toString();}else if(typeof obj==\"object\"&&depth>0){objectsExpanded.push(obj);expansion=\"{\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i in obj){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+i+\": \"+childExpansion);}catch(ex){childLines.push(childIndentation+i+\": Error formatting property. Details: \"+\r\ngetExceptionStringRep(ex));}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"}\";return expansion;}else{return formatString(toStr(obj));}}\r\nreturn doFormat(obj,depth,indentation);}\r\nvar SimpleDateFormat;(function(){var regex=/('[^']*')|(G+|y+|M+|w+|W+|D+|d+|F+|E+|a+|H+|k+|K+|h+|m+|s+|S+|Z+)|([a-zA-Z]+)|([^a-zA-Z']+)/;var monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];var dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var TEXT2=0,TEXT3=1,NUMBER=2,YEAR=3,MONTH=4,TIMEZONE=5;var types={G:TEXT2,y:YEAR,M:MONTH,w:NUMBER,W:NUMBER,D:NUMBER,d:NUMBER,F:NUMBER,E:TEXT3,a:TEXT2,H:NUMBER,k:NUMBER,K:NUMBER,h:NUMBER,m:NUMBER,s:NUMBER,S:NUMBER,Z:TIMEZONE};var ONE_DAY=24*60*60*1000;var ONE_WEEK=7*ONE_DAY;var DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK=1;var newDateAtMidnight=function(year,month,day){var d=new Date(year,month,day,0,0,0);d.setMilliseconds(0);return d;};Date.prototype.getDifference=function(date){return this.getTime()-date.getTime();};Date.prototype.isBefore=function(d){return this.getTime()<d.getTime();};Date.prototype.getUTCTime=function(){return Date.UTC(this.getFullYear(),this.getMonth(),this.getDate(),this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds());};Date.prototype.getTimeSince=function(d){return this.getUTCTime()-d.getUTCTime();};Date.prototype.getPreviousSunday=function(){var midday=new Date(this.getFullYear(),this.getMonth(),this.getDate(),12,0,0);var previousSunday=new Date(midday.getTime()-this.getDay()*ONE_DAY);return newDateAtMidnight(previousSunday.getFullYear(),previousSunday.getMonth(),previousSunday.getDate());};Date.prototype.getWeekInYear=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);var numberOfSundays=previousSunday.isBefore(startOfYear)?0:1+Math.floor(previousSunday.getTimeSince(startOfYear)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfYear.getDay();var weekInYear=numberOfSundays;if(numberOfDaysInFirstWeek<minimalDaysInFirstWeek){weekInYear--;}\r\nreturn weekInYear;};Date.prototype.getWeekInMonth=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfMonth=newDateAtMidnight(this.getFullYear(),this.getMonth(),1);var numberOfSundays=previousSunday.isBefore(startOfMonth)?0:1+Math.floor(previousSunday.getTimeSince(startOfMonth)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfMonth.getDay();var weekInMonth=numberOfSundays;if(numberOfDaysInFirstWeek>=minimalDaysInFirstWeek){weekInMonth++;}\r\nreturn weekInMonth;};Date.prototype.getDayInYear=function(){var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);return 1+Math.floor(this.getTimeSince(startOfYear)/ONE_DAY);};SimpleDateFormat=function(formatString){this.formatString=formatString;};SimpleDateFormat.prototype.setMinimalDaysInFirstWeek=function(days){this.minimalDaysInFirstWeek=days;};SimpleDateFormat.prototype.getMinimalDaysInFirstWeek=function(){return isUndefined(this.minimalDaysInFirstWeek)?DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK:this.minimalDaysInFirstWeek;};var padWithZeroes=function(str,len){while(str.length<len){str=\"0\"+str;}\r\nreturn str;};var formatText=function(data,numberOfLetters,minLength){return(numberOfLetters>=4)?data:data.substr(0,Math.max(minLength,numberOfLetters));};var formatNumber=function(data,numberOfLetters){var dataString=\"\"+data;return padWithZeroes(dataString,numberOfLetters);};SimpleDateFormat.prototype.format=function(date){var formattedString=\"\";var result;var searchString=this.formatString;while((result=regex.exec(searchString))){var quotedString=result[1];var patternLetters=result[2];var otherLetters=result[3];var otherCharacters=result[4];if(quotedString){if(quotedString==\"''\"){formattedString+=\"'\";}else{formattedString+=quotedString.substring(1,quotedString.length-1);}}else if(otherLetters){}else if(otherCharacters){formattedString+=otherCharacters;}else if(patternLetters){var patternLetter=patternLetters.charAt(0);var numberOfLetters=patternLetters.length;var rawData=\"\";switch(patternLetter){case\"G\":rawData=\"AD\";break;case\"y\":rawData=date.getFullYear();break;case\"M\":rawData=date.getMonth();break;case\"w\":rawData=date.getWeekInYear(this.getMinimalDaysInFirstWeek());break;case\"W\":rawData=date.getWeekInMonth(this.getMinimalDaysInFirstWeek());break;case\"D\":rawData=date.getDayInYear();break;case\"d\":rawData=date.getDate();break;case\"F\":rawData=1+Math.floor((date.getDate()-1)/7);break;case\"E\":rawData=dayNames[date.getDay()];break;case\"a\":rawData=(date.getHours()>=12)?\"PM\":\"AM\";break;case\"H\":rawData=date.getHours();break;case\"k\":rawData=date.getHours()||24;break;case\"K\":rawData=date.getHours()%12;break;case\"h\":rawData=(date.getHours()%12)||12;break;case\"m\":rawData=date.getMinutes();break;case\"s\":rawData=date.getSeconds();break;case\"S\":rawData=date.getMilliseconds();break;case\"Z\":rawData=date.getTimezoneOffset();break;}\r\nswitch(types[patternLetter]){case TEXT2:formattedString+=formatText(rawData,numberOfLetters,2);break;case TEXT3:formattedString+=formatText(rawData,numberOfLetters,3);break;case NUMBER:formattedString+=formatNumber(rawData,numberOfLetters);break;case YEAR:if(numberOfLetters<=3){var dataString=\"\"+rawData;formattedString+=dataString.substr(2,2);}else{formattedString+=formatNumber(rawData,numberOfLetters);}\r\nbreak;case MONTH:if(numberOfLetters>=3){formattedString+=formatText(monthNames[rawData],numberOfLetters,numberOfLetters);}else{formattedString+=formatNumber(rawData+1,numberOfLetters);}\r\nbreak;case TIMEZONE:var isPositive=(rawData>0);var prefix=isPositive?\"-\":\"+\";var absData=Math.abs(rawData);var hours=\"\"+Math.floor(absData/60);hours=padWithZeroes(hours,2);var minutes=\"\"+(absData%60);minutes=padWithZeroes(minutes,2);formattedString+=prefix+hours+minutes;break;}}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};})();log4javascript.SimpleDateFormat=SimpleDateFormat;function PatternLayout(pattern){if(pattern){this.pattern=pattern;}else{this.pattern=PatternLayout.DEFAULT_CONVERSION_PATTERN;}\r\nthis.customFields=[];}\r\nPatternLayout.TTCC_CONVERSION_PATTERN=\"%r %p %c - %m%n\";PatternLayout.DEFAULT_CONVERSION_PATTERN=\"%m%n\";PatternLayout.ISO8601_DATEFORMAT=\"yyyy-MM-dd HH:mm:ss,SSS\";PatternLayout.DATETIME_DATEFORMAT=\"dd MMM yyyy HH:mm:ss,SSS\";PatternLayout.ABSOLUTETIME_DATEFORMAT=\"HH:mm:ss,SSS\";PatternLayout.prototype=new Layout();PatternLayout.prototype.format=function(loggingEvent){var regex=/%(-?[0-9]+)?(\\.?[0-9]+)?([acdfmMnpr%])(\\{([^\\}]+)\\})?|([^%]+)/;var formattedString=\"\";var result;var searchString=this.pattern;while((result=regex.exec(searchString))){var matchedString=result[0];var padding=result[1];var truncation=result[2];var conversionCharacter=result[3];var specifier=result[5];var text=result[6];if(text){formattedString+=\"\"+text;}else{var replacement=\"\";switch(conversionCharacter){case\"a\":case\"m\":var depth=0;if(specifier){depth=parseInt(specifier,10);if(isNaN(depth)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character '\"+conversionCharacter+\"' - should be a number\");depth=0;}}\r\nvar messages=(conversionCharacter===\"a\")?loggingEvent.messages[0]:loggingEvent.messages;for(var i=0,len=messages.length;i<len;i++){if(i>0&&(replacement.charAt(replacement.length-1)!==\" \")){replacement+=\" \";}\r\nif(depth===0){replacement+=messages[i];}else{replacement+=formatObjectExpansion(messages[i],depth);}}\r\nbreak;case\"c\":var loggerName=loggingEvent.logger.name;if(specifier){var precision=parseInt(specifier,10);var loggerNameBits=loggingEvent.logger.name.split(\".\");if(precision>=loggerNameBits.length){replacement=loggerName;}else{replacement=loggerNameBits.slice(loggerNameBits.length-precision).join(\".\");}}else{replacement=loggerName;}\r\nbreak;case\"d\":var dateFormat=PatternLayout.ISO8601_DATEFORMAT;if(specifier){dateFormat=specifier;if(dateFormat==\"ISO8601\"){dateFormat=PatternLayout.ISO8601_DATEFORMAT;}else if(dateFormat==\"ABSOLUTE\"){dateFormat=PatternLayout.ABSOLUTETIME_DATEFORMAT;}else if(dateFormat==\"DATE\"){dateFormat=PatternLayout.DATETIME_DATEFORMAT;}}\r\nreplacement=(new SimpleDateFormat(dateFormat)).format(loggingEvent.timeStamp);break;case\"f\":if(this.hasCustomFields()){var fieldIndex=0;if(specifier){fieldIndex=parseInt(specifier,10);if(isNaN(fieldIndex)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - should be a number\");}else if(fieldIndex===0){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - must be greater than zero\");}else if(fieldIndex>this.customFields.length){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - there aren't that many custom fields\");}else{fieldIndex=fieldIndex-1;}}\r\nvar val=this.customFields[fieldIndex].value;if(typeof val==\"function\"){val=val(this,loggingEvent);}\r\nreplacement=val;}\r\nbreak;case\"n\":replacement=newLine;break;case\"p\":replacement=loggingEvent.level.name;break;case\"r\":replacement=\"\"+loggingEvent.timeStamp.getDifference(applicationStartDate);break;case\"%\":replacement=\"%\";break;default:replacement=matchedString;break;}\r\nvar l;if(truncation){l=parseInt(truncation.substr(1),10);var strLen=replacement.length;if(l<strLen){replacement=replacement.substring(strLen-l,strLen);}}\r\nif(padding){if(padding.charAt(0)==\"-\"){l=parseInt(padding.substr(1),10);while(replacement.length<l){replacement+=\" \";}}else{l=parseInt(padding,10);while(replacement.length<l){replacement=\" \"+replacement;}}}\r\nformattedString+=replacement;}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};PatternLayout.prototype.ignoresThrowable=function(){return true;};PatternLayout.prototype.toString=function(){return\"PatternLayout\";};log4javascript.PatternLayout=PatternLayout;function AlertAppender(){}\r\nAlertAppender.prototype=new Appender();AlertAppender.prototype.layout=new SimpleLayout();AlertAppender.prototype.append=function(loggingEvent){alert(this.getLayout().formatWithException(loggingEvent));};AlertAppender.prototype.toString=function(){return\"AlertAppender\";};log4javascript.AlertAppender=AlertAppender;function BrowserConsoleAppender(){}\r\nBrowserConsoleAppender.prototype=new log4javascript.Appender();BrowserConsoleAppender.prototype.layout=new NullLayout();BrowserConsoleAppender.prototype.threshold=Level.DEBUG;BrowserConsoleAppender.prototype.append=function(loggingEvent){var appender=this;var getFormattedMessage=function(concatenate){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);return(typeof formattedMessage==\"string\")?(concatenate?formattedMessage:[formattedMessage]):(concatenate?formattedMessage.join(\" \"):formattedMessage);};var console=window.console;if(console&&console.log){var consoleMethodName;if(console.debug&&Level.DEBUG.isGreaterOrEqual(loggingEvent.level)){consoleMethodName=\"debug\";}else if(console.info&&Level.INFO.equals(loggingEvent.level)){consoleMethodName=\"info\";}else if(console.warn&&Level.WARN.equals(loggingEvent.level)){consoleMethodName=\"warn\";}else if(console.error&&loggingEvent.level.isGreaterOrEqual(Level.ERROR)){consoleMethodName=\"error\";}else{consoleMethodName=\"log\";}\r\nif(typeof console[consoleMethodName].apply==\"function\"){console[consoleMethodName].apply(console,getFormattedMessage(false));}else{console[consoleMethodName](getFormattedMessage(true));}}else if((typeof opera!=\"undefined\")&&opera.postError){opera.postError(getFormattedMessage(true));}};BrowserConsoleAppender.prototype.group=function(name){if(window.console&&window.console.group){window.console.group(name);}};BrowserConsoleAppender.prototype.groupEnd=function(){if(window.console&&window.console.groupEnd){window.console.groupEnd();}};BrowserConsoleAppender.prototype.toString=function(){return\"BrowserConsoleAppender\";};log4javascript.BrowserConsoleAppender=BrowserConsoleAppender;var xhrFactory=function(){return new XMLHttpRequest();};var xmlHttpFactories=[xhrFactory,function(){return new ActiveXObject(\"Msxml2.XMLHTTP\");},function(){return new ActiveXObject(\"Microsoft.XMLHTTP\");}];var withCredentialsSupported=false;var getXmlHttp=function(errorHandler){var xmlHttp=null,factory;for(var i=0,len=xmlHttpFactories.length;i<len;i++){factory=xmlHttpFactories[i];try{xmlHttp=factory();withCredentialsSupported=(factory==xhrFactory&&(\"withCredentials\"in xmlHttp));getXmlHttp=factory;return xmlHttp;}catch(e){}}\r\nif(errorHandler){errorHandler();}else{handleError(\"getXmlHttp: unable to obtain XMLHttpRequest object\");}};function isHttpRequestSuccessful(xmlHttp){return isUndefined(xmlHttp.status)||xmlHttp.status===0||(xmlHttp.status>=200&&xmlHttp.status<300)||xmlHttp.status==1223;}\r\nfunction AjaxAppender(url,withCredentials){var appender=this;var isSupported=true;if(!url){handleError(\"AjaxAppender: URL must be specified in constructor\");isSupported=false;}\r\nvar timed=this.defaults.timed;var waitForResponse=this.defaults.waitForResponse;var batchSize=this.defaults.batchSize;var timerInterval=this.defaults.timerInterval;var requestSuccessCallback=this.defaults.requestSuccessCallback;var failCallback=this.defaults.failCallback;var postVarName=this.defaults.postVarName;var sendAllOnUnload=this.defaults.sendAllOnUnload;var contentType=this.defaults.contentType;var sessionId=null;var queuedLoggingEvents=[];var queuedRequests=[];var headers=[];var sending=false;var initialized=false;function checkCanConfigure(configOptionName){if(initialized){handleError(\"AjaxAppender: configuration option '\"+\r\nconfigOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;}\r\nthis.getSessionId=function(){return sessionId;};this.setSessionId=function(sessionIdParam){sessionId=extractStringFromParam(sessionIdParam,null);this.layout.setCustomField(\"sessionid\",sessionId);};this.setLayout=function(layoutParam){if(checkCanConfigure(\"layout\")){this.layout=layoutParam;if(sessionId!==null){this.setSessionId(sessionId);}}};this.isTimed=function(){return timed;};this.setTimed=function(timedParam){if(checkCanConfigure(\"timed\")){timed=bool(timedParam);}};this.getTimerInterval=function(){return timerInterval;};this.setTimerInterval=function(timerIntervalParam){if(checkCanConfigure(\"timerInterval\")){timerInterval=extractIntFromParam(timerIntervalParam,timerInterval);}};this.isWaitForResponse=function(){return waitForResponse;};this.setWaitForResponse=function(waitForResponseParam){if(checkCanConfigure(\"waitForResponse\")){waitForResponse=bool(waitForResponseParam);}};this.getBatchSize=function(){return batchSize;};this.setBatchSize=function(batchSizeParam){if(checkCanConfigure(\"batchSize\")){batchSize=extractIntFromParam(batchSizeParam,batchSize);}};this.isSendAllOnUnload=function(){return sendAllOnUnload;};this.setSendAllOnUnload=function(sendAllOnUnloadParam){if(checkCanConfigure(\"sendAllOnUnload\")){sendAllOnUnload=extractBooleanFromParam(sendAllOnUnloadParam,sendAllOnUnload);}};this.setRequestSuccessCallback=function(requestSuccessCallbackParam){requestSuccessCallback=extractFunctionFromParam(requestSuccessCallbackParam,requestSuccessCallback);};this.setFailCallback=function(failCallbackParam){failCallback=extractFunctionFromParam(failCallbackParam,failCallback);};this.getPostVarName=function(){return postVarName;};this.setPostVarName=function(postVarNameParam){if(checkCanConfigure(\"postVarName\")){postVarName=extractStringFromParam(postVarNameParam,postVarName);}};this.getHeaders=function(){return headers;};this.addHeader=function(name,value){if(name.toLowerCase()==\"content-type\"){contentType=value;}else{headers.push({name:name,value:value});}};function sendAll(){if(isSupported&&enabled){sending=true;var currentRequestBatch;if(waitForResponse){if(queuedRequests.length>0){currentRequestBatch=queuedRequests.shift();sendRequest(preparePostData(currentRequestBatch),sendAll);}else{sending=false;if(timed){scheduleSending();}}}else{while((currentRequestBatch=queuedRequests.shift())){sendRequest(preparePostData(currentRequestBatch));}\r\nsending=false;if(timed){scheduleSending();}}}}\r\nthis.sendAll=sendAll;function sendAllRemaining(){var sendingAnything=false;if(isSupported&&enabled){var actualBatchSize=appender.getLayout().allowBatching()?batchSize:1;var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);if(queuedLoggingEvents.length>=actualBatchSize){queuedRequests.push(batchedLoggingEvents);batchedLoggingEvents=[];}}\r\nif(batchedLoggingEvents.length>0){queuedRequests.push(batchedLoggingEvents);}\r\nsendingAnything=(queuedRequests.length>0);waitForResponse=false;timed=false;sendAll();}\r\nreturn sendingAnything;}\r\nthis.sendAllRemaining=sendAllRemaining;function preparePostData(batchedLoggingEvents){var formattedMessages=[];var currentLoggingEvent;var postData=\"\";while((currentLoggingEvent=batchedLoggingEvents.shift())){formattedMessages.push(appender.getLayout().formatWithException(currentLoggingEvent));}\r\nif(batchedLoggingEvents.length==1){postData=formattedMessages.join(\"\");}else{postData=appender.getLayout().batchHeader+\r\nformattedMessages.join(appender.getLayout().batchSeparator)+\r\nappender.getLayout().batchFooter;}\r\nif(contentType==appender.defaults.contentType){postData=appender.getLayout().returnsPostData?postData:urlEncode(postVarName)+\"=\"+urlEncode(postData);if(postData.length>0){postData+=\"&\";}\r\npostData+=\"layout=\"+urlEncode(appender.getLayout().toString());}\r\nreturn postData;}\r\nfunction scheduleSending(){window.setTimeout(sendAll,timerInterval);}\r\nfunction xmlHttpErrorHandler(){var msg=\"AjaxAppender: could not create XMLHttpRequest object. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}}\r\nfunction sendRequest(postData,successCallback){try{var xmlHttp=getXmlHttp(xmlHttpErrorHandler);if(isSupported){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(isHttpRequestSuccessful(xmlHttp)){if(requestSuccessCallback){requestSuccessCallback(xmlHttp);}\r\nif(successCallback){successCallback(xmlHttp);}}else{var msg=\"AjaxAppender.append: XMLHttpRequest request to URL \"+\r\nurl+\" returned status code \"+xmlHttp.status;handleError(msg);if(failCallback){failCallback(msg);}}\r\nxmlHttp.onreadystatechange=emptyFunction;xmlHttp=null;}};xmlHttp.open(\"POST\",url,true);if(withCredentials&&withCredentialsSupported){xmlHttp.withCredentials=true;}\r\ntry{for(var i=0,header;header=headers[i++];){xmlHttp.setRequestHeader(header.name,header.value);}\r\nxmlHttp.setRequestHeader(\"Content-Type\",contentType);}catch(headerEx){var msg=\"AjaxAppender.append: your browser's XMLHttpRequest implementation\"+\" does not support setRequestHeader, therefore cannot post data. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}\r\nreturn;}\r\nxmlHttp.send(postData);}}catch(ex){var errMsg=\"AjaxAppender.append: error sending log message to \"+url;handleError(errMsg,ex);isSupported=false;if(failCallback){failCallback(errMsg+\". Details: \"+getExceptionStringRep(ex));}}}\r\nthis.append=function(loggingEvent){if(isSupported){if(!initialized){init();}\r\nqueuedLoggingEvents.push(loggingEvent);var actualBatchSize=this.getLayout().allowBatching()?batchSize:1;if(queuedLoggingEvents.length>=actualBatchSize){var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);}\r\nqueuedRequests.push(batchedLoggingEvents);if(!timed&&(!waitForResponse||(waitForResponse&&!sending))){sendAll();}}}};function init(){initialized=true;if(sendAllOnUnload){var oldBeforeUnload=window.onbeforeunload;window.onbeforeunload=function(){if(oldBeforeUnload){oldBeforeUnload();}\r\nsendAllRemaining();};}\r\nif(timed){scheduleSending();}}}\r\nAjaxAppender.prototype=new Appender();AjaxAppender.prototype.defaults={waitForResponse:false,timed:false,timerInterval:1000,batchSize:1,sendAllOnUnload:false,requestSuccessCallback:null,failCallback:null,postVarName:\"data\",contentType:\"application/x-www-form-urlencoded\"};AjaxAppender.prototype.layout=new HttpPostDataLayout();AjaxAppender.prototype.toString=function(){return\"AjaxAppender\";};log4javascript.AjaxAppender=AjaxAppender;function setCookie(name,value,days,path){var expires;path=path?\"; path=\"+path:\"\";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires=\"; expires=\"+date.toGMTString();}else{expires=\"\";}\r\ndocument.cookie=escape(name)+\"=\"+escape(value)+expires+path;}\r\nfunction getCookie(name){var nameEquals=escape(name)+\"=\";var ca=document.cookie.split(\";\");for(var i=0,len=ca.length;i<len;i++){var c=ca[i];while(c.charAt(0)===\" \"){c=c.substring(1,c.length);}\r\nif(c.indexOf(nameEquals)===0){return unescape(c.substring(nameEquals.length,c.length));}}\r\nreturn null;}\r\nfunction getBaseUrl(){var scripts=document.getElementsByTagName(\"script\");for(var i=0,len=scripts.length;i<len;++i){if(scripts[i].src.indexOf(\"log4javascript\")!=-1){var lastSlash=scripts[i].src.lastIndexOf(\"/\");return(lastSlash==-1)?\"\":scripts[i].src.substr(0,lastSlash+1);}}\r\nreturn null;}\r\nfunction isLoaded(win){try{return bool(win.loaded);}catch(ex){return false;}}\r\nvar ConsoleAppender;(function(){var getConsoleHtmlLines=function(){return['<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">','<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">','<head>','<title>log4javascript</title>','<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />','<!-- Make IE8 behave like IE7, having gone to all the trouble of making IE work -->','<meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\" />','<script type=\"text/javascript\">var isIe = false, isIePre7 = false;</script>','<!--[if IE]><script type=\"text/javascript\">isIe = true</script><![endif]-->','<!--[if lt IE 7]><script type=\"text/javascript\">isIePre7 = true</script><![endif]-->','<script type=\"text/javascript\">','//<![CDATA[','var loggingEnabled=true;var logQueuedEventsTimer=null;var logEntries=[];var logEntriesAndSeparators=[];var logItems=[];var renderDelay=100;var unrenderedLogItemsExist=false;var rootGroup,currentGroup=null;var loaded=false;var currentLogItem=null;var logMainContainer;function copyProperties(obj,props){for(var i in props){obj[i]=props[i];}}','function LogItem(){}','LogItem.prototype={mainContainer:null,wrappedContainer:null,unwrappedContainer:null,group:null,appendToLog:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].appendToLog();}','this.group.update();},doRemove:function(doUpdate,removeFromGroup){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].remove();}','this.unwrappedElementContainer=null;this.wrappedElementContainer=null;this.mainElementContainer=null;}','if(this.group&&removeFromGroup){this.group.removeChild(this,doUpdate);}','if(this===currentLogItem){currentLogItem=null;}},remove:function(doUpdate,removeFromGroup){this.doRemove(doUpdate,removeFromGroup);},render:function(){},accept:function(visitor){visitor.visit(this);},getUnwrappedDomContainer:function(){return this.group.unwrappedElementContainer.contentDiv;},getWrappedDomContainer:function(){return this.group.wrappedElementContainer.contentDiv;},getMainDomContainer:function(){return this.group.mainElementContainer.contentDiv;}};LogItem.serializedItemKeys={LOG_ENTRY:0,GROUP_START:1,GROUP_END:2};function LogItemContainerElement(){}','LogItemContainerElement.prototype={appendToLog:function(){var insertBeforeFirst=(newestAtTop&&this.containerDomNode.hasChildNodes());if(insertBeforeFirst){this.containerDomNode.insertBefore(this.mainDiv,this.containerDomNode.firstChild);}else{this.containerDomNode.appendChild(this.mainDiv);}}};function SeparatorElementContainer(containerDomNode){this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"separator\";this.mainDiv.innerHTML=\" \";}','SeparatorElementContainer.prototype=new LogItemContainerElement();SeparatorElementContainer.prototype.remove=function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;};function Separator(){this.rendered=false;}','Separator.prototype=new LogItem();copyProperties(Separator.prototype,{render:function(){var containerDomNode=this.group.contentDiv;if(isIe){this.unwrappedElementContainer=new SeparatorElementContainer(this.getUnwrappedDomContainer());this.wrappedElementContainer=new SeparatorElementContainer(this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new SeparatorElementContainer(this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;}});function GroupElementContainer(group,containerDomNode,isRoot,isWrapped){this.group=group;this.containerDomNode=containerDomNode;this.isRoot=isRoot;this.isWrapped=isWrapped;this.expandable=false;if(this.isRoot){if(isIe){this.contentDiv=logMainContainer.appendChild(document.createElement(\"div\"));this.contentDiv.id=this.isWrapped?\"log_wrapped\":\"log_unwrapped\";}else{this.contentDiv=logMainContainer;}}else{var groupElementContainer=this;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"group\";this.headingDiv=this.mainDiv.appendChild(document.createElement(\"div\"));this.headingDiv.className=\"groupheading\";this.expander=this.headingDiv.appendChild(document.createElement(\"span\"));this.expander.className=\"expander unselectable greyedout\";this.expander.unselectable=true;var expanderText=this.group.expanded?\"-\":\"+\";this.expanderTextNode=this.expander.appendChild(document.createTextNode(expanderText));this.headingDiv.appendChild(document.createTextNode(\" \"+this.group.name));this.contentDiv=this.mainDiv.appendChild(document.createElement(\"div\"));var contentCssClass=this.group.expanded?\"expanded\":\"collapsed\";this.contentDiv.className=\"groupcontent \"+contentCssClass;this.expander.onclick=function(){if(groupElementContainer.group.expandable){groupElementContainer.group.toggleExpanded();}};}}','GroupElementContainer.prototype=new LogItemContainerElement();copyProperties(GroupElementContainer.prototype,{toggleExpanded:function(){if(!this.isRoot){var oldCssClass,newCssClass,expanderText;if(this.group.expanded){newCssClass=\"expanded\";oldCssClass=\"collapsed\";expanderText=\"-\";}else{newCssClass=\"collapsed\";oldCssClass=\"expanded\";expanderText=\"+\";}','replaceClass(this.contentDiv,newCssClass,oldCssClass);this.expanderTextNode.nodeValue=expanderText;}},remove:function(){if(!this.isRoot){this.headingDiv=null;this.expander.onclick=null;this.expander=null;this.expanderTextNode=null;this.contentDiv=null;this.containerDomNode=null;this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;}},reverseChildren:function(){var node=null;var childDomNodes=[];while((node=this.contentDiv.firstChild)){this.contentDiv.removeChild(node);childDomNodes.push(node);}','while((node=childDomNodes.pop())){this.contentDiv.appendChild(node);}},update:function(){if(!this.isRoot){if(this.group.expandable){removeClass(this.expander,\"greyedout\");}else{addClass(this.expander,\"greyedout\");}}},clear:function(){if(this.isRoot){this.contentDiv.innerHTML=\"\";}}});function Group(name,isRoot,initiallyExpanded){this.name=name;this.group=null;this.isRoot=isRoot;this.initiallyExpanded=initiallyExpanded;this.elementContainers=[];this.children=[];this.expanded=initiallyExpanded;this.rendered=false;this.expandable=false;}','Group.prototype=new LogItem();copyProperties(Group.prototype,{addChild:function(logItem){this.children.push(logItem);logItem.group=this;},render:function(){if(isIe){var unwrappedDomContainer,wrappedDomContainer;if(this.isRoot){unwrappedDomContainer=logMainContainer;wrappedDomContainer=logMainContainer;}else{unwrappedDomContainer=this.getUnwrappedDomContainer();wrappedDomContainer=this.getWrappedDomContainer();}','this.unwrappedElementContainer=new GroupElementContainer(this,unwrappedDomContainer,this.isRoot,false);this.wrappedElementContainer=new GroupElementContainer(this,wrappedDomContainer,this.isRoot,true);this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{var mainDomContainer=this.isRoot?logMainContainer:this.getMainDomContainer();this.mainElementContainer=new GroupElementContainer(this,mainDomContainer,this.isRoot,false);this.elementContainers=[this.mainElementContainer];}','this.rendered=true;},toggleExpanded:function(){this.expanded=!this.expanded;for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].toggleExpanded();}},expand:function(){if(!this.expanded){this.toggleExpanded();}},accept:function(visitor){visitor.visitGroup(this);},reverseChildren:function(){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].reverseChildren();}}},update:function(){var previouslyExpandable=this.expandable;this.expandable=(this.children.length!==0);if(this.expandable!==previouslyExpandable){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].update();}}},flatten:function(){var visitor=new GroupFlattener();this.accept(visitor);return visitor.logEntriesAndSeparators;},removeChild:function(child,doUpdate){array_remove(this.children,child);child.group=null;if(doUpdate){this.update();}},remove:function(doUpdate,removeFromGroup){for(var i=0,len=this.children.length;i<len;i++){this.children[i].remove(false,false);}','this.children=[];this.update();if(this===currentGroup){currentGroup=this.group;}','this.doRemove(doUpdate,removeFromGroup);},serialize:function(items){items.push([LogItem.serializedItemKeys.GROUP_START,this.name]);for(var i=0,len=this.children.length;i<len;i++){this.children[i].serialize(items);}','if(this!==currentGroup){items.push([LogItem.serializedItemKeys.GROUP_END]);}},clear:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clear();}}});function LogEntryElementContainer(){}','LogEntryElementContainer.prototype=new LogItemContainerElement();copyProperties(LogEntryElementContainer.prototype,{remove:function(){this.doRemove();},doRemove:function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;this.contentElement=null;this.containerDomNode=null;},setContent:function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=content;}},setSearchMatch:function(isMatch){var oldCssClass=isMatch?\"searchnonmatch\":\"searchmatch\";var newCssClass=isMatch?\"searchmatch\":\"searchnonmatch\";replaceClass(this.mainDiv,newCssClass,oldCssClass);},clearSearch:function(){removeClass(this.mainDiv,\"searchmatch\");removeClass(this.mainDiv,\"searchnonmatch\");}});function LogEntryWrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.mainDiv.className=\"logentry wrapped \"+this.logEntry.level;this.contentElement=this.mainDiv;}','LogEntryWrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryWrappedElementContainer.prototype.setContent=function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=wrappedContent;}};function LogEntryUnwrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry unwrapped \"+this.logEntry.level;this.pre=this.mainDiv.appendChild(document.createElement(\"pre\"));this.pre.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.pre.className=\"unwrapped\";this.contentElement=this.pre;}','LogEntryUnwrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryUnwrappedElementContainer.prototype.remove=function(){this.doRemove();this.pre=null;};function LogEntryMainElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry nonielogentry \"+this.logEntry.level;this.contentElement=this.mainDiv.appendChild(document.createElement(\"span\"));this.contentElement.appendChild(document.createTextNode(this.logEntry.formattedMessage));}','LogEntryMainElementContainer.prototype=new LogEntryElementContainer();function LogEntry(level,formattedMessage){this.level=level;this.formattedMessage=formattedMessage;this.rendered=false;}','LogEntry.prototype=new LogItem();copyProperties(LogEntry.prototype,{render:function(){var logEntry=this;var containerDomNode=this.group.contentDiv;if(isIe){this.formattedMessage=this.formattedMessage.replace(/\\\\r\\\\n/g,\"\\\\r\");this.unwrappedElementContainer=new LogEntryUnwrappedElementContainer(this,this.getUnwrappedDomContainer());this.wrappedElementContainer=new LogEntryWrappedElementContainer(this,this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new LogEntryMainElementContainer(this,this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;},setContent:function(content,wrappedContent){if(content!=this.content){if(isIe&&(content!==this.formattedMessage)){content=content.replace(/\\\\r\\\\n/g,\"\\\\r\");}','for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setContent(content,wrappedContent);}','this.content=content;}},getSearchMatches:function(){var matches=[];var i,len;if(isIe){var unwrappedEls=getElementsByClass(this.unwrappedElementContainer.mainDiv,\"searchterm\",\"span\");var wrappedEls=getElementsByClass(this.wrappedElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=unwrappedEls.length;i<len;i++){matches[i]=new Match(this.level,null,unwrappedEls[i],wrappedEls[i]);}}else{var els=getElementsByClass(this.mainElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=els.length;i<len;i++){matches[i]=new Match(this.level,els[i]);}}','return matches;},setSearchMatch:function(isMatch){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setSearchMatch(isMatch);}},clearSearch:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clearSearch();}},accept:function(visitor){visitor.visitLogEntry(this);},serialize:function(items){items.push([LogItem.serializedItemKeys.LOG_ENTRY,this.level,this.formattedMessage]);}});function LogItemVisitor(){}','LogItemVisitor.prototype={visit:function(logItem){},visitParent:function(logItem){if(logItem.group){logItem.group.accept(this);}},visitChildren:function(logItem){for(var i=0,len=logItem.children.length;i<len;i++){logItem.children[i].accept(this);}},visitLogEntry:function(logEntry){this.visit(logEntry);},visitSeparator:function(separator){this.visit(separator);},visitGroup:function(group){this.visit(group);}};function GroupFlattener(){this.logEntriesAndSeparators=[];}','GroupFlattener.prototype=new LogItemVisitor();GroupFlattener.prototype.visitGroup=function(group){this.visitChildren(group);};GroupFlattener.prototype.visitLogEntry=function(logEntry){this.logEntriesAndSeparators.push(logEntry);};GroupFlattener.prototype.visitSeparator=function(separator){this.logEntriesAndSeparators.push(separator);};window.onload=function(){if(location.search){var queryBits=unescape(location.search).substr(1).split(\"&\"),nameValueBits;for(var i=0,len=queryBits.length;i<len;i++){nameValueBits=queryBits[i].split(\"=\");if(nameValueBits[0]==\"log4javascript_domain\"){document.domain=nameValueBits[1];break;}}}','logMainContainer=$(\"log\");if(isIePre7){addClass(logMainContainer,\"oldIe\");}','rootGroup=new Group(\"root\",true);rootGroup.render();currentGroup=rootGroup;setCommandInputWidth();setLogContainerHeight();toggleLoggingEnabled();toggleSearchEnabled();toggleSearchFilter();toggleSearchHighlight();applyFilters();checkAllLevels();toggleWrap();toggleNewestAtTop();toggleScrollToLatest();renderQueuedLogItems();loaded=true;$(\"command\").value=\"\";$(\"command\").autocomplete=\"off\";$(\"command\").onkeydown=function(evt){evt=getEvent(evt);if(evt.keyCode==10||evt.keyCode==13){evalCommandLine();stopPropagation(evt);}else if(evt.keyCode==27){this.value=\"\";this.focus();}else if(evt.keyCode==38&&commandHistory.length>0){currentCommandIndex=Math.max(0,currentCommandIndex-1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}else if(evt.keyCode==40&&commandHistory.length>0){currentCommandIndex=Math.min(commandHistory.length-1,currentCommandIndex+1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}};$(\"command\").onkeypress=function(evt){evt=getEvent(evt);if(evt.keyCode==38&&commandHistory.length>0&&evt.preventDefault){evt.preventDefault();}};$(\"command\").onkeyup=function(evt){evt=getEvent(evt);if(evt.keyCode==27&&evt.preventDefault){evt.preventDefault();this.focus();}};document.onkeydown=function keyEventHandler(evt){evt=getEvent(evt);switch(evt.keyCode){case 69:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){evalLastCommand();cancelKeyEvent(evt);return false;}','break;case 75:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusSearch();cancelKeyEvent(evt);return false;}','break;case 40:case 76:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusCommandLine();cancelKeyEvent(evt);return false;}','break;}};setTimeout(setLogContainerHeight,20);setShowCommandLine(showCommandLine);doSearch();};window.onunload=function(){if(mainWindowExists()){appender.unload();}','appender=null;};function toggleLoggingEnabled(){setLoggingEnabled($(\"enableLogging\").checked);}','function setLoggingEnabled(enable){loggingEnabled=enable;}','var appender=null;function setAppender(appenderParam){appender=appenderParam;}','function setShowCloseButton(showCloseButton){$(\"closeButton\").style.display=showCloseButton?\"inline\":\"none\";}','function setShowHideButton(showHideButton){$(\"hideButton\").style.display=showHideButton?\"inline\":\"none\";}','var newestAtTop=false;function LogItemContentReverser(){}','LogItemContentReverser.prototype=new LogItemVisitor();LogItemContentReverser.prototype.visitGroup=function(group){group.reverseChildren();this.visitChildren(group);};function setNewestAtTop(isNewestAtTop){var oldNewestAtTop=newestAtTop;var i,iLen,j,jLen;newestAtTop=Boolean(isNewestAtTop);if(oldNewestAtTop!=newestAtTop){var visitor=new LogItemContentReverser();rootGroup.accept(visitor);if(currentSearch){var currentMatch=currentSearch.matches[currentMatchIndex];var matchIndex=0;var matches=[];var actOnLogEntry=function(logEntry){var logEntryMatches=logEntry.getSearchMatches();for(j=0,jLen=logEntryMatches.length;j<jLen;j++){matches[matchIndex]=logEntryMatches[j];if(currentMatch&&logEntryMatches[j].equals(currentMatch)){currentMatchIndex=matchIndex;}','matchIndex++;}};if(newestAtTop){for(i=logEntries.length-1;i>=0;i--){actOnLogEntry(logEntries[i]);}}else{for(i=0,iLen=logEntries.length;i<iLen;i++){actOnLogEntry(logEntries[i]);}}','currentSearch.matches=matches;if(currentMatch){currentMatch.setCurrent();}}else if(scrollToLatest){doScrollToLatest();}}','$(\"newestAtTop\").checked=isNewestAtTop;}','function toggleNewestAtTop(){var isNewestAtTop=$(\"newestAtTop\").checked;setNewestAtTop(isNewestAtTop);}','var scrollToLatest=true;function setScrollToLatest(isScrollToLatest){scrollToLatest=isScrollToLatest;if(scrollToLatest){doScrollToLatest();}','$(\"scrollToLatest\").checked=isScrollToLatest;}','function toggleScrollToLatest(){var isScrollToLatest=$(\"scrollToLatest\").checked;setScrollToLatest(isScrollToLatest);}','function doScrollToLatest(){var l=logMainContainer;if(typeof l.scrollTop!=\"undefined\"){if(newestAtTop){l.scrollTop=0;}else{var latestLogEntry=l.lastChild;if(latestLogEntry){l.scrollTop=l.scrollHeight;}}}}','var closeIfOpenerCloses=true;function setCloseIfOpenerCloses(isCloseIfOpenerCloses){closeIfOpenerCloses=isCloseIfOpenerCloses;}','var maxMessages=null;function setMaxMessages(max){maxMessages=max;pruneLogEntries();}','var showCommandLine=false;function setShowCommandLine(isShowCommandLine){showCommandLine=isShowCommandLine;if(loaded){$(\"commandLine\").style.display=showCommandLine?\"block\":\"none\";setCommandInputWidth();setLogContainerHeight();}}','function focusCommandLine(){if(loaded){$(\"command\").focus();}}','function focusSearch(){if(loaded){$(\"searchBox\").focus();}}','function getLogItems(){var items=[];for(var i=0,len=logItems.length;i<len;i++){logItems[i].serialize(items);}','return items;}','function setLogItems(items){var loggingReallyEnabled=loggingEnabled;loggingEnabled=true;for(var i=0,len=items.length;i<len;i++){switch(items[i][0]){case LogItem.serializedItemKeys.LOG_ENTRY:log(items[i][1],items[i][2]);break;case LogItem.serializedItemKeys.GROUP_START:group(items[i][1]);break;case LogItem.serializedItemKeys.GROUP_END:groupEnd();break;}}','loggingEnabled=loggingReallyEnabled;}','function log(logLevel,formattedMessage){if(loggingEnabled){var logEntry=new LogEntry(logLevel,formattedMessage);logEntries.push(logEntry);logEntriesAndSeparators.push(logEntry);logItems.push(logEntry);currentGroup.addChild(logEntry);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function renderQueuedLogItems(){logQueuedEventsTimer=null;var pruned=pruneLogEntries();var initiallyHasMatches=currentSearch?currentSearch.hasMatches():false;for(var i=0,len=logItems.length;i<len;i++){if(!logItems[i].rendered){logItems[i].render();logItems[i].appendToLog();if(currentSearch&&(logItems[i]instanceof LogEntry)){currentSearch.applyTo(logItems[i]);}}}','if(currentSearch){if(pruned){if(currentSearch.hasVisibleMatches()){if(currentMatchIndex===null){setCurrentMatchIndex(0);}','displayMatches();}else{displayNoMatches();}}else if(!initiallyHasMatches&¤tSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}}','if(scrollToLatest){doScrollToLatest();}','unrenderedLogItemsExist=false;}','function pruneLogEntries(){if((maxMessages!==null)&&(logEntriesAndSeparators.length>maxMessages)){var numberToDelete=logEntriesAndSeparators.length-maxMessages;var prunedLogEntries=logEntriesAndSeparators.slice(0,numberToDelete);if(currentSearch){currentSearch.removeMatches(prunedLogEntries);}','var group;for(var i=0;i<numberToDelete;i++){group=logEntriesAndSeparators[i].group;array_remove(logItems,logEntriesAndSeparators[i]);array_remove(logEntries,logEntriesAndSeparators[i]);logEntriesAndSeparators[i].remove(true,true);if(group.children.length===0&&group!==currentGroup&&group!==rootGroup){array_remove(logItems,group);group.remove(true,true);}}','logEntriesAndSeparators=array_removeFromStart(logEntriesAndSeparators,numberToDelete);return true;}','return false;}','function group(name,startExpanded){if(loggingEnabled){initiallyExpanded=(typeof startExpanded===\"undefined\")?true:Boolean(startExpanded);var newGroup=new Group(name,false,initiallyExpanded);currentGroup.addChild(newGroup);currentGroup=newGroup;logItems.push(newGroup);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function groupEnd(){currentGroup=(currentGroup===rootGroup)?rootGroup:currentGroup.group;}','function mainPageReloaded(){currentGroup=rootGroup;var separator=new Separator();logEntriesAndSeparators.push(separator);logItems.push(separator);currentGroup.addChild(separator);}','function closeWindow(){if(appender&&mainWindowExists()){appender.close(true);}else{window.close();}}','function hide(){if(appender&&mainWindowExists()){appender.hide();}}','var mainWindow=window;var windowId=\"log4javascriptConsoleWindow_\"+new Date().getTime()+\"_\"+(\"\"+Math.random()).substr(2);function setMainWindow(win){mainWindow=win;mainWindow[windowId]=window;if(opener&&closeIfOpenerCloses){pollOpener();}}','function pollOpener(){if(closeIfOpenerCloses){if(mainWindowExists()){setTimeout(pollOpener,500);}else{closeWindow();}}}','function mainWindowExists(){try{return(mainWindow&&!mainWindow.closed&&mainWindow[windowId]==window);}catch(ex){}','return false;}','var logLevels=[\"TRACE\",\"DEBUG\",\"INFO\",\"WARN\",\"ERROR\",\"FATAL\"];function getCheckBox(logLevel){return $(\"switch_\"+logLevel);}','function getIeWrappedLogContainer(){return $(\"log_wrapped\");}','function getIeUnwrappedLogContainer(){return $(\"log_unwrapped\");}','function applyFilters(){for(var i=0;i<logLevels.length;i++){if(getCheckBox(logLevels[i]).checked){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}','updateSearchFromFilters();}','function toggleAllLevels(){var turnOn=$(\"switch_ALL\").checked;for(var i=0;i<logLevels.length;i++){getCheckBox(logLevels[i]).checked=turnOn;if(turnOn){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}}','function checkAllLevels(){for(var i=0;i<logLevels.length;i++){if(!getCheckBox(logLevels[i]).checked){getCheckBox(\"ALL\").checked=false;return;}}','getCheckBox(\"ALL\").checked=true;}','function clearLog(){rootGroup.clear();currentGroup=rootGroup;logEntries=[];logItems=[];logEntriesAndSeparators=[];doSearch();}','function toggleWrap(){var enable=$(\"wrap\").checked;if(enable){addClass(logMainContainer,\"wrap\");}else{removeClass(logMainContainer,\"wrap\");}','refreshCurrentMatch();}','var searchTimer=null;function scheduleSearch(){try{clearTimeout(searchTimer);}catch(ex){}','searchTimer=setTimeout(doSearch,500);}','function Search(searchTerm,isRegex,searchRegex,isCaseSensitive){this.searchTerm=searchTerm;this.isRegex=isRegex;this.searchRegex=searchRegex;this.isCaseSensitive=isCaseSensitive;this.matches=[];}','Search.prototype={hasMatches:function(){return this.matches.length>0;},hasVisibleMatches:function(){if(this.hasMatches()){for(var i=0;i<this.matches.length;i++){if(this.matches[i].isVisible()){return true;}}}','return false;},match:function(logEntry){var entryText=String(logEntry.formattedMessage);var matchesSearch=false;if(this.isRegex){matchesSearch=this.searchRegex.test(entryText);}else if(this.isCaseSensitive){matchesSearch=(entryText.indexOf(this.searchTerm)>-1);}else{matchesSearch=(entryText.toLowerCase().indexOf(this.searchTerm.toLowerCase())>-1);}','return matchesSearch;},getNextVisibleMatchIndex:function(){for(var i=currentMatchIndex+1;i<this.matches.length;i++){if(this.matches[i].isVisible()){return i;}}','for(i=0;i<=currentMatchIndex;i++){if(this.matches[i].isVisible()){return i;}}','return-1;},getPreviousVisibleMatchIndex:function(){for(var i=currentMatchIndex-1;i>=0;i--){if(this.matches[i].isVisible()){return i;}}','for(var i=this.matches.length-1;i>=currentMatchIndex;i--){if(this.matches[i].isVisible()){return i;}}','return-1;},applyTo:function(logEntry){var doesMatch=this.match(logEntry);if(doesMatch){logEntry.group.expand();logEntry.setSearchMatch(true);var logEntryContent;var wrappedLogEntryContent;var searchTermReplacementStartTag=\"<span class=\\\\\\\"searchterm\\\\\\\">\";var searchTermReplacementEndTag=\"<\"+\"/span>\";var preTagName=isIe?\"pre\":\"span\";var preStartTag=\"<\"+preTagName+\" class=\\\\\\\"pre\\\\\\\">\";var preEndTag=\"<\"+\"/\"+preTagName+\">\";var startIndex=0;var searchIndex,matchedText,textBeforeMatch;if(this.isRegex){var flags=this.isCaseSensitive?\"g\":\"gi\";var capturingRegex=new RegExp(\"(\"+this.searchRegex.source+\")\",flags);var rnd=(\"\"+Math.random()).substr(2);var startToken=\"%%s\"+rnd+\"%%\";var endToken=\"%%e\"+rnd+\"%%\";logEntryContent=logEntry.formattedMessage.replace(capturingRegex,startToken+\"$1\"+endToken);logEntryContent=escapeHtml(logEntryContent);var result;var searchString=logEntryContent;logEntryContent=\"\";wrappedLogEntryContent=\"\";while((searchIndex=searchString.indexOf(startToken,startIndex))>-1){var endTokenIndex=searchString.indexOf(endToken,searchIndex);matchedText=searchString.substring(searchIndex+startToken.length,endTokenIndex);textBeforeMatch=searchString.substring(startIndex,searchIndex);logEntryContent+=preStartTag+textBeforeMatch+preEndTag;logEntryContent+=searchTermReplacementStartTag+preStartTag+matchedText+','preEndTag+searchTermReplacementEndTag;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=endTokenIndex+endToken.length;}','logEntryContent+=preStartTag+searchString.substr(startIndex)+preEndTag;if(isIe){wrappedLogEntryContent+=searchString.substr(startIndex);}}else{logEntryContent=\"\";wrappedLogEntryContent=\"\";var searchTermReplacementLength=searchTermReplacementStartTag.length+','this.searchTerm.length+searchTermReplacementEndTag.length;var searchTermLength=this.searchTerm.length;var searchTermLowerCase=this.searchTerm.toLowerCase();var logTextLowerCase=logEntry.formattedMessage.toLowerCase();while((searchIndex=logTextLowerCase.indexOf(searchTermLowerCase,startIndex))>-1){matchedText=escapeHtml(logEntry.formattedMessage.substr(searchIndex,this.searchTerm.length));textBeforeMatch=escapeHtml(logEntry.formattedMessage.substring(startIndex,searchIndex));var searchTermReplacement=searchTermReplacementStartTag+','preStartTag+matchedText+preEndTag+searchTermReplacementEndTag;logEntryContent+=preStartTag+textBeforeMatch+preEndTag+searchTermReplacement;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=searchIndex+searchTermLength;}','var textAfterLastMatch=escapeHtml(logEntry.formattedMessage.substr(startIndex));logEntryContent+=preStartTag+textAfterLastMatch+preEndTag;if(isIe){wrappedLogEntryContent+=textAfterLastMatch;}}','logEntry.setContent(logEntryContent,wrappedLogEntryContent);var logEntryMatches=logEntry.getSearchMatches();this.matches=this.matches.concat(logEntryMatches);}else{logEntry.setSearchMatch(false);logEntry.setContent(logEntry.formattedMessage,logEntry.formattedMessage);}','return doesMatch;},removeMatches:function(logEntries){var matchesToRemoveCount=0;var currentMatchRemoved=false;var matchesToRemove=[];var i,iLen,j,jLen;for(i=0,iLen=this.matches.length;i<iLen;i++){for(j=0,jLen=logEntries.length;j<jLen;j++){if(this.matches[i].belongsTo(logEntries[j])){matchesToRemove.push(this.matches[i]);if(i===currentMatchIndex){currentMatchRemoved=true;}}}}','var newMatch=currentMatchRemoved?null:this.matches[currentMatchIndex];if(currentMatchRemoved){for(i=currentMatchIndex,iLen=this.matches.length;i<iLen;i++){if(this.matches[i].isVisible()&&!array_contains(matchesToRemove,this.matches[i])){newMatch=this.matches[i];break;}}}','for(i=0,iLen=matchesToRemove.length;i<iLen;i++){array_remove(this.matches,matchesToRemove[i]);matchesToRemove[i].remove();}','if(this.hasVisibleMatches()){if(newMatch===null){setCurrentMatchIndex(0);}else{var newMatchIndex=0;for(i=0,iLen=this.matches.length;i<iLen;i++){if(newMatch===this.matches[i]){newMatchIndex=i;break;}}','setCurrentMatchIndex(newMatchIndex);}}else{currentMatchIndex=null;displayNoMatches();}}};function getPageOffsetTop(el,container){var currentEl=el;var y=0;while(currentEl&¤tEl!=container){y+=currentEl.offsetTop;currentEl=currentEl.offsetParent;}','return y;}','function scrollIntoView(el){var logContainer=logMainContainer;if(!$(\"wrap\").checked){var logContainerLeft=logContainer.scrollLeft;var logContainerRight=logContainerLeft+logContainer.offsetWidth;var elLeft=el.offsetLeft;var elRight=elLeft+el.offsetWidth;if(elLeft<logContainerLeft||elRight>logContainerRight){logContainer.scrollLeft=elLeft-(logContainer.offsetWidth-el.offsetWidth)/2;}}','var logContainerTop=logContainer.scrollTop;var logContainerBottom=logContainerTop+logContainer.offsetHeight;var elTop=getPageOffsetTop(el)-getToolBarsHeight();var elBottom=elTop+el.offsetHeight;if(elTop<logContainerTop||elBottom>logContainerBottom){logContainer.scrollTop=elTop-(logContainer.offsetHeight-el.offsetHeight)/2;}}','function Match(logEntryLevel,spanInMainDiv,spanInUnwrappedPre,spanInWrappedDiv){this.logEntryLevel=logEntryLevel;this.spanInMainDiv=spanInMainDiv;if(isIe){this.spanInUnwrappedPre=spanInUnwrappedPre;this.spanInWrappedDiv=spanInWrappedDiv;}','this.mainSpan=isIe?spanInUnwrappedPre:spanInMainDiv;}','Match.prototype={equals:function(match){return this.mainSpan===match.mainSpan;},setCurrent:function(){if(isIe){addClass(this.spanInUnwrappedPre,\"currentmatch\");addClass(this.spanInWrappedDiv,\"currentmatch\");var elementToScroll=$(\"wrap\").checked?this.spanInWrappedDiv:this.spanInUnwrappedPre;scrollIntoView(elementToScroll);}else{addClass(this.spanInMainDiv,\"currentmatch\");scrollIntoView(this.spanInMainDiv);}},belongsTo:function(logEntry){if(isIe){return isDescendant(this.spanInUnwrappedPre,logEntry.unwrappedPre);}else{return isDescendant(this.spanInMainDiv,logEntry.mainDiv);}},setNotCurrent:function(){if(isIe){removeClass(this.spanInUnwrappedPre,\"currentmatch\");removeClass(this.spanInWrappedDiv,\"currentmatch\");}else{removeClass(this.spanInMainDiv,\"currentmatch\");}},isOrphan:function(){return isOrphan(this.mainSpan);},isVisible:function(){return getCheckBox(this.logEntryLevel).checked;},remove:function(){if(isIe){this.spanInUnwrappedPre=null;this.spanInWrappedDiv=null;}else{this.spanInMainDiv=null;}}};var currentSearch=null;var currentMatchIndex=null;function doSearch(){var searchBox=$(\"searchBox\");var searchTerm=searchBox.value;var isRegex=$(\"searchRegex\").checked;var isCaseSensitive=$(\"searchCaseSensitive\").checked;var i;if(searchTerm===\"\"){$(\"searchReset\").disabled=true;$(\"searchNav\").style.display=\"none\";removeClass(document.body,\"searching\");removeClass(searchBox,\"hasmatches\");removeClass(searchBox,\"nomatches\");for(i=0;i<logEntries.length;i++){logEntries[i].clearSearch();logEntries[i].setContent(logEntries[i].formattedMessage,logEntries[i].formattedMessage);}','currentSearch=null;setLogContainerHeight();}else{$(\"searchReset\").disabled=false;$(\"searchNav\").style.display=\"block\";var searchRegex;var regexValid;if(isRegex){try{searchRegex=isCaseSensitive?new RegExp(searchTerm,\"g\"):new RegExp(searchTerm,\"gi\");regexValid=true;replaceClass(searchBox,\"validregex\",\"invalidregex\");searchBox.title=\"Valid regex\";}catch(ex){regexValid=false;replaceClass(searchBox,\"invalidregex\",\"validregex\");searchBox.title=\"Invalid regex: \"+(ex.message?ex.message:(ex.description?ex.description:\"unknown error\"));return;}}else{searchBox.title=\"\";removeClass(searchBox,\"validregex\");removeClass(searchBox,\"invalidregex\");}','addClass(document.body,\"searching\");currentSearch=new Search(searchTerm,isRegex,searchRegex,isCaseSensitive);for(i=0;i<logEntries.length;i++){currentSearch.applyTo(logEntries[i]);}','setLogContainerHeight();if(currentSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}else{displayNoMatches();}}}','function updateSearchFromFilters(){if(currentSearch){if(currentSearch.hasMatches()){if(currentMatchIndex===null){currentMatchIndex=0;}','var currentMatch=currentSearch.matches[currentMatchIndex];if(currentMatch.isVisible()){displayMatches();setCurrentMatchIndex(currentMatchIndex);}else{currentMatch.setNotCurrent();var nextVisibleMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextVisibleMatchIndex>-1){setCurrentMatchIndex(nextVisibleMatchIndex);displayMatches();}else{displayNoMatches();}}}else{displayNoMatches();}}}','function refreshCurrentMatch(){if(currentSearch&¤tSearch.hasVisibleMatches()){setCurrentMatchIndex(currentMatchIndex);}}','function displayMatches(){replaceClass($(\"searchBox\"),\"hasmatches\",\"nomatches\");$(\"searchBox\").title=\"\"+currentSearch.matches.length+\" matches found\";$(\"searchNav\").style.display=\"block\";setLogContainerHeight();}','function displayNoMatches(){replaceClass($(\"searchBox\"),\"nomatches\",\"hasmatches\");$(\"searchBox\").title=\"No matches found\";$(\"searchNav\").style.display=\"none\";setLogContainerHeight();}','function toggleSearchEnabled(enable){enable=(typeof enable==\"undefined\")?!$(\"searchDisable\").checked:enable;$(\"searchBox\").disabled=!enable;$(\"searchReset\").disabled=!enable;$(\"searchRegex\").disabled=!enable;$(\"searchNext\").disabled=!enable;$(\"searchPrevious\").disabled=!enable;$(\"searchCaseSensitive\").disabled=!enable;$(\"searchNav\").style.display=(enable&&($(\"searchBox\").value!==\"\")&¤tSearch&¤tSearch.hasVisibleMatches())?\"block\":\"none\";if(enable){removeClass($(\"search\"),\"greyedout\");addClass(document.body,\"searching\");if($(\"searchHighlight\").checked){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}','if($(\"searchFilter\").checked){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','$(\"searchDisable\").checked=!enable;}else{addClass($(\"search\"),\"greyedout\");removeClass(document.body,\"searching\");removeClass(logMainContainer,\"searchhighlight\");removeClass(logMainContainer,\"searchfilter\");}','setLogContainerHeight();}','function toggleSearchFilter(){var enable=$(\"searchFilter\").checked;if(enable){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','refreshCurrentMatch();}','function toggleSearchHighlight(){var enable=$(\"searchHighlight\").checked;if(enable){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}}','function clearSearch(){$(\"searchBox\").value=\"\";doSearch();}','function searchNext(){if(currentSearch!==null&¤tMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var nextMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextMatchIndex>currentMatchIndex||confirm(\"Reached the end of the page. Start from the top?\")){setCurrentMatchIndex(nextMatchIndex);}}}','function searchPrevious(){if(currentSearch!==null&¤tMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var previousMatchIndex=currentSearch.getPreviousVisibleMatchIndex();if(previousMatchIndex<currentMatchIndex||confirm(\"Reached the start of the page. Continue from the bottom?\")){setCurrentMatchIndex(previousMatchIndex);}}}','function setCurrentMatchIndex(index){currentMatchIndex=index;currentSearch.matches[currentMatchIndex].setCurrent();}','function addClass(el,cssClass){if(!hasClass(el,cssClass)){if(el.className){el.className+=\" \"+cssClass;}else{el.className=cssClass;}}}','function hasClass(el,cssClass){if(el.className){var classNames=el.className.split(\" \");return array_contains(classNames,cssClass);}','return false;}','function removeClass(el,cssClass){if(hasClass(el,cssClass)){var existingClasses=el.className.split(\" \");var newClasses=[];for(var i=0,len=existingClasses.length;i<len;i++){if(existingClasses[i]!=cssClass){newClasses[newClasses.length]=existingClasses[i];}}','el.className=newClasses.join(\" \");}}','function replaceClass(el,newCssClass,oldCssClass){removeClass(el,oldCssClass);addClass(el,newCssClass);}','function getElementsByClass(el,cssClass,tagName){var elements=el.getElementsByTagName(tagName);var matches=[];for(var i=0,len=elements.length;i<len;i++){if(hasClass(elements[i],cssClass)){matches.push(elements[i]);}}','return matches;}','function $(id){return document.getElementById(id);}','function isDescendant(node,ancestorNode){while(node!=null){if(node===ancestorNode){return true;}','node=node.parentNode;}','return false;}','function isOrphan(node){var currentNode=node;while(currentNode){if(currentNode==document.body){return false;}','currentNode=currentNode.parentNode;}','return true;}','function escapeHtml(str){return str.replace(/&/g,\"&\").replace(/[<]/g,\"<\").replace(/>/g,\">\");}','function getWindowWidth(){if(window.innerWidth){return window.innerWidth;}else if(document.documentElement&&document.documentElement.clientWidth){return document.documentElement.clientWidth;}else if(document.body){return document.body.clientWidth;}','return 0;}','function getWindowHeight(){if(window.innerHeight){return window.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight;}else if(document.body){return document.body.clientHeight;}','return 0;}','function getToolBarsHeight(){return $(\"switches\").offsetHeight;}','function getChromeHeight(){var height=getToolBarsHeight();if(showCommandLine){height+=$(\"commandLine\").offsetHeight;}','return height;}','function setLogContainerHeight(){if(logMainContainer){var windowHeight=getWindowHeight();$(\"body\").style.height=getWindowHeight()+\"px\";logMainContainer.style.height=\"\"+','Math.max(0,windowHeight-getChromeHeight())+\"px\";}}','function setCommandInputWidth(){if(showCommandLine){$(\"command\").style.width=\"\"+Math.max(0,$(\"commandLineContainer\").offsetWidth-','($(\"evaluateButton\").offsetWidth+13))+\"px\";}}','window.onresize=function(){setCommandInputWidth();setLogContainerHeight();};if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}','return this.length;};}','if(!Array.prototype.pop){Array.prototype.pop=function(){if(this.length>0){var val=this[this.length-1];this.length=this.length-1;return val;}};}','if(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}','this.length=this.length-1;return firstItem;}};}','if(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}','var itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}','return itemsDeleted;};}','function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}','if(index>=0){arr.splice(index,1);return index;}else{return false;}}','function array_removeFromStart(array,numberToRemove){if(Array.prototype.splice){array.splice(0,numberToRemove);}else{for(var i=numberToRemove,len=array.length;i<len;i++){array[i-numberToRemove]=array[i];}','array.length=array.length-numberToRemove;}','return array;}','function array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}','return false;}','function getErrorMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}','return\"\"+ex;}','function moveCaretToEnd(input){if(input.setSelectionRange){input.focus();var length=input.value.length;input.setSelectionRange(length,length);}else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.select();}','input.focus();}','function stopPropagation(evt){if(evt.stopPropagation){evt.stopPropagation();}else if(typeof evt.cancelBubble!=\"undefined\"){evt.cancelBubble=true;}}','function getEvent(evt){return evt?evt:event;}','function getTarget(evt){return evt.target?evt.target:evt.srcElement;}','function getRelatedTarget(evt){if(evt.relatedTarget){return evt.relatedTarget;}else if(evt.srcElement){switch(evt.type){case\"mouseover\":return evt.fromElement;case\"mouseout\":return evt.toElement;default:return evt.srcElement;}}}','function cancelKeyEvent(evt){evt.returnValue=false;stopPropagation(evt);}','function evalCommandLine(){var expr=$(\"command\").value;evalCommand(expr);$(\"command\").value=\"\";}','function evalLastCommand(){if(lastCommand!=null){evalCommand(lastCommand);}}','var lastCommand=null;var commandHistory=[];var currentCommandIndex=0;function evalCommand(expr){if(appender){appender.evalCommandAndAppend(expr);}else{var prefix=\">>> \"+expr+\"\\\\r\\\\n\";try{log(\"INFO\",prefix+eval(expr));}catch(ex){log(\"ERROR\",prefix+\"Error: \"+getErrorMessage(ex));}}','if(expr!=commandHistory[commandHistory.length-1]){commandHistory.push(expr);if(appender){appender.storeCommandHistory(commandHistory);}}','currentCommandIndex=(expr==commandHistory[currentCommandIndex])?currentCommandIndex+1:commandHistory.length;lastCommand=expr;}','//]]>','</script>','<style type=\"text/css\">','body{background-color:white;color:black;padding:0;margin:0;font-family:tahoma,verdana,arial,helvetica,sans-serif;overflow:hidden}div#switchesContainer input{margin-bottom:0}div.toolbar{border-top:solid #ffffff 1px;border-bottom:solid #aca899 1px;background-color:#f1efe7;padding:3px 5px;font-size:68.75%}div.toolbar,div#search input{font-family:tahoma,verdana,arial,helvetica,sans-serif}div.toolbar input.button{padding:0 5px;font-size:100%}div.toolbar input.hidden{display:none}div#switches input#clearButton{margin-left:20px}div#levels label{font-weight:bold}div#levels label,div#options label{margin-right:5px}div#levels label#wrapLabel{font-weight:normal}div#search label{margin-right:10px}div#search label.searchboxlabel{margin-right:0}div#search input{font-size:100%}div#search input.validregex{color:green}div#search input.invalidregex{color:red}div#search input.nomatches{color:white;background-color:#ff6666}div#search input.nomatches{color:white;background-color:#ff6666}div#searchNav{display:none}div#commandLine{display:none}div#commandLine input#command{font-size:100%;font-family:Courier New,Courier}div#commandLine input#evaluateButton{}*.greyedout{color:gray !important;border-color:gray !important}*.greyedout *.alwaysenabled{color:black}*.unselectable{-khtml-user-select:none;-moz-user-select:none;user-select:none}div#log{font-family:Courier New,Courier;font-size:75%;width:100%;overflow:auto;clear:both;position:relative}div.group{border-color:#cccccc;border-style:solid;border-width:1px 0 1px 1px;overflow:visible}div.oldIe div.group,div.oldIe div.group *,div.oldIe *.logentry{height:1%}div.group div.groupheading span.expander{border:solid black 1px;font-family:Courier New,Courier;font-size:0.833em;background-color:#eeeeee;position:relative;top:-1px;color:black;padding:0 2px;cursor:pointer;cursor:hand;height:1%}div.group div.groupcontent{margin-left:10px;padding-bottom:2px;overflow:visible}div.group div.expanded{display:block}div.group div.collapsed{display:none}*.logentry{overflow:visible;display:none;white-space:pre}span.pre{white-space:pre}pre.unwrapped{display:inline !important}pre.unwrapped pre.pre,div.wrapped pre.pre{display:inline}div.wrapped pre.pre{white-space:normal}div.wrapped{display:none}body.searching *.logentry span.currentmatch{color:white !important;background-color:green !important}body.searching div.searchhighlight *.logentry span.searchterm{color:black;background-color:yellow}div.wrap *.logentry{white-space:normal !important;border-width:0 0 1px 0;border-color:#dddddd;border-style:dotted}div.wrap #log_wrapped,#log_unwrapped{display:block}div.wrap #log_unwrapped,#log_wrapped{display:none}div.wrap *.logentry span.pre{overflow:visible;white-space:normal}div.wrap *.logentry pre.unwrapped{display:none}div.wrap *.logentry span.wrapped{display:inline}div.searchfilter *.searchnonmatch{display:none !important}div#log *.TRACE,label#label_TRACE{color:#666666}div#log *.DEBUG,label#label_DEBUG{color:green}div#log *.INFO,label#label_INFO{color:#000099}div#log *.WARN,label#label_WARN{color:#999900}div#log *.ERROR,label#label_ERROR{color:red}div#log *.FATAL,label#label_FATAL{color:#660066}div.TRACE#log *.TRACE,div.DEBUG#log *.DEBUG,div.INFO#log *.INFO,div.WARN#log *.WARN,div.ERROR#log *.ERROR,div.FATAL#log *.FATAL{display:block}div#log div.separator{background-color:#cccccc;margin:5px 0;line-height:1px}','</style>','</head>','<body id=\"body\">','<div id=\"switchesContainer\">','<div id=\"switches\">','<div id=\"levels\" class=\"toolbar\">','Filters:','<input type=\"checkbox\" id=\"switch_TRACE\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide trace messages\" /><label for=\"switch_TRACE\" id=\"label_TRACE\">trace</label>','<input type=\"checkbox\" id=\"switch_DEBUG\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide debug messages\" /><label for=\"switch_DEBUG\" id=\"label_DEBUG\">debug</label>','<input type=\"checkbox\" id=\"switch_INFO\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide info messages\" /><label for=\"switch_INFO\" id=\"label_INFO\">info</label>','<input type=\"checkbox\" id=\"switch_WARN\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide warn messages\" /><label for=\"switch_WARN\" id=\"label_WARN\">warn</label>','<input type=\"checkbox\" id=\"switch_ERROR\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide error messages\" /><label for=\"switch_ERROR\" id=\"label_ERROR\">error</label>','<input type=\"checkbox\" id=\"switch_FATAL\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide fatal messages\" /><label for=\"switch_FATAL\" id=\"label_FATAL\">fatal</label>','<input type=\"checkbox\" id=\"switch_ALL\" onclick=\"toggleAllLevels(); applyFilters()\" checked=\"checked\" title=\"Show/hide all messages\" /><label for=\"switch_ALL\" id=\"label_ALL\">all</label>','</div>','<div id=\"search\" class=\"toolbar\">','<label for=\"searchBox\" class=\"searchboxlabel\">Search:</label> <input type=\"text\" id=\"searchBox\" onclick=\"toggleSearchEnabled(true)\" onkeyup=\"scheduleSearch()\" size=\"20\" />','<input type=\"button\" id=\"searchReset\" disabled=\"disabled\" value=\"Reset\" onclick=\"clearSearch()\" class=\"button\" title=\"Reset the search\" />','<input type=\"checkbox\" id=\"searchRegex\" onclick=\"doSearch()\" title=\"If checked, search is treated as a regular expression\" /><label for=\"searchRegex\">Regex</label>','<input type=\"checkbox\" id=\"searchCaseSensitive\" onclick=\"doSearch()\" title=\"If checked, search is case sensitive\" /><label for=\"searchCaseSensitive\">Match case</label>','<input type=\"checkbox\" id=\"searchDisable\" onclick=\"toggleSearchEnabled()\" title=\"Enable/disable search\" /><label for=\"searchDisable\" class=\"alwaysenabled\">Disable</label>','<div id=\"searchNav\">','<input type=\"button\" id=\"searchNext\" disabled=\"disabled\" value=\"Next\" onclick=\"searchNext()\" class=\"button\" title=\"Go to the next matching log entry\" />','<input type=\"button\" id=\"searchPrevious\" disabled=\"disabled\" value=\"Previous\" onclick=\"searchPrevious()\" class=\"button\" title=\"Go to the previous matching log entry\" />','<input type=\"checkbox\" id=\"searchFilter\" onclick=\"toggleSearchFilter()\" title=\"If checked, non-matching log entries are filtered out\" /><label for=\"searchFilter\">Filter</label>','<input type=\"checkbox\" id=\"searchHighlight\" onclick=\"toggleSearchHighlight()\" title=\"Highlight matched search terms\" /><label for=\"searchHighlight\" class=\"alwaysenabled\">Highlight all</label>','</div>','</div>','<div id=\"options\" class=\"toolbar\">','Options:','<input type=\"checkbox\" id=\"enableLogging\" onclick=\"toggleLoggingEnabled()\" checked=\"checked\" title=\"Enable/disable logging\" /><label for=\"enableLogging\" id=\"enableLoggingLabel\">Log</label>','<input type=\"checkbox\" id=\"wrap\" onclick=\"toggleWrap()\" title=\"Enable / disable word wrap\" /><label for=\"wrap\" id=\"wrapLabel\">Wrap</label>','<input type=\"checkbox\" id=\"newestAtTop\" onclick=\"toggleNewestAtTop()\" title=\"If checked, causes newest messages to appear at the top\" /><label for=\"newestAtTop\" id=\"newestAtTopLabel\">Newest at the top</label>','<input type=\"checkbox\" id=\"scrollToLatest\" onclick=\"toggleScrollToLatest()\" checked=\"checked\" title=\"If checked, window automatically scrolls to a new message when it is added\" /><label for=\"scrollToLatest\" id=\"scrollToLatestLabel\">Scroll to latest</label>','<input type=\"button\" id=\"clearButton\" value=\"Clear\" onclick=\"clearLog()\" class=\"button\" title=\"Clear all log messages\" />','<input type=\"button\" id=\"hideButton\" value=\"Hide\" onclick=\"hide()\" class=\"hidden button\" title=\"Hide the console\" />','<input type=\"button\" id=\"closeButton\" value=\"Close\" onclick=\"closeWindow()\" class=\"hidden button\" title=\"Close the window\" />','</div>','</div>','</div>','<div id=\"log\" class=\"TRACE DEBUG INFO WARN ERROR FATAL\"></div>','<div id=\"commandLine\" class=\"toolbar\">','<div id=\"commandLineContainer\">','<input type=\"text\" id=\"command\" title=\"Enter a JavaScript command here and hit return or press \\'Evaluate\\'\" />','<input type=\"button\" id=\"evaluateButton\" value=\"Evaluate\" class=\"button\" title=\"Evaluate the command\" onclick=\"evalCommandLine()\" />','</div>','</div>','</body>','</html>',''];};var defaultCommandLineFunctions=[];ConsoleAppender=function(){};var consoleAppenderIdCounter=1;ConsoleAppender.prototype=new Appender();ConsoleAppender.prototype.create=function(inPage,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,focusConsoleWindow){var appender=this;var initialized=false;var consoleWindowCreated=false;var consoleWindowLoaded=false;var consoleClosed=false;var queuedLoggingEvents=[];var isSupported=true;var consoleAppenderId=consoleAppenderIdCounter++;initiallyMinimized=extractBooleanFromParam(initiallyMinimized,this.defaults.initiallyMinimized);lazyInit=extractBooleanFromParam(lazyInit,this.defaults.lazyInit);useDocumentWrite=extractBooleanFromParam(useDocumentWrite,this.defaults.useDocumentWrite);var newestMessageAtTop=this.defaults.newestMessageAtTop;var scrollToLatestMessage=this.defaults.scrollToLatestMessage;width=width?width:this.defaults.width;height=height?height:this.defaults.height;var maxMessages=this.defaults.maxMessages;var showCommandLine=this.defaults.showCommandLine;var commandLineObjectExpansionDepth=this.defaults.commandLineObjectExpansionDepth;var showHideButton=this.defaults.showHideButton;var showCloseButton=this.defaults.showCloseButton;this.setLayout(this.defaults.layout);var init,createWindow,safeToAppend,getConsoleWindow,open;var appenderName=inPage?\"InPageAppender\":\"PopUpAppender\";var checkCanConfigure=function(configOptionName){if(consoleWindowCreated){handleError(appenderName+\": configuration option '\"+configOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;};var consoleWindowExists=function(){return(consoleWindowLoaded&&isSupported&&!consoleClosed);};this.isNewestMessageAtTop=function(){return newestMessageAtTop;};this.setNewestMessageAtTop=function(newestMessageAtTopParam){newestMessageAtTop=bool(newestMessageAtTopParam);if(consoleWindowExists()){getConsoleWindow().setNewestAtTop(newestMessageAtTop);}};this.isScrollToLatestMessage=function(){return scrollToLatestMessage;};this.setScrollToLatestMessage=function(scrollToLatestMessageParam){scrollToLatestMessage=bool(scrollToLatestMessageParam);if(consoleWindowExists()){getConsoleWindow().setScrollToLatest(scrollToLatestMessage);}};this.getWidth=function(){return width;};this.setWidth=function(widthParam){if(checkCanConfigure(\"width\")){width=extractStringFromParam(widthParam,width);}};this.getHeight=function(){return height;};this.setHeight=function(heightParam){if(checkCanConfigure(\"height\")){height=extractStringFromParam(heightParam,height);}};this.getMaxMessages=function(){return maxMessages;};this.setMaxMessages=function(maxMessagesParam){maxMessages=extractIntFromParam(maxMessagesParam,maxMessages);if(consoleWindowExists()){getConsoleWindow().setMaxMessages(maxMessages);}};this.isShowCommandLine=function(){return showCommandLine;};this.setShowCommandLine=function(showCommandLineParam){showCommandLine=bool(showCommandLineParam);if(consoleWindowExists()){getConsoleWindow().setShowCommandLine(showCommandLine);}};this.isShowHideButton=function(){return showHideButton;};this.setShowHideButton=function(showHideButtonParam){showHideButton=bool(showHideButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowHideButton(showHideButton);}};this.isShowCloseButton=function(){return showCloseButton;};this.setShowCloseButton=function(showCloseButtonParam){showCloseButton=bool(showCloseButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowCloseButton(showCloseButton);}};this.getCommandLineObjectExpansionDepth=function(){return commandLineObjectExpansionDepth;};this.setCommandLineObjectExpansionDepth=function(commandLineObjectExpansionDepthParam){commandLineObjectExpansionDepth=extractIntFromParam(commandLineObjectExpansionDepthParam,commandLineObjectExpansionDepth);};var minimized=initiallyMinimized;this.isInitiallyMinimized=function(){return initiallyMinimized;};this.setInitiallyMinimized=function(initiallyMinimizedParam){if(checkCanConfigure(\"initiallyMinimized\")){initiallyMinimized=bool(initiallyMinimizedParam);minimized=initiallyMinimized;}};this.isUseDocumentWrite=function(){return useDocumentWrite;};this.setUseDocumentWrite=function(useDocumentWriteParam){if(checkCanConfigure(\"useDocumentWrite\")){useDocumentWrite=bool(useDocumentWriteParam);}};function QueuedLoggingEvent(loggingEvent,formattedMessage){this.loggingEvent=loggingEvent;this.levelName=loggingEvent.level.name;this.formattedMessage=formattedMessage;}\r\nQueuedLoggingEvent.prototype.append=function(){getConsoleWindow().log(this.levelName,this.formattedMessage);};function QueuedGroup(name,initiallyExpanded){this.name=name;this.initiallyExpanded=initiallyExpanded;}\r\nQueuedGroup.prototype.append=function(){getConsoleWindow().group(this.name,this.initiallyExpanded);};function QueuedGroupEnd(){}\r\nQueuedGroupEnd.prototype.append=function(){getConsoleWindow().groupEnd();};var checkAndAppend=function(){safeToAppend();if(!initialized){init();}else if(consoleClosed&&reopenWhenClosed){createWindow();}\r\nif(safeToAppend()){appendQueuedLoggingEvents();}};this.append=function(loggingEvent){if(isSupported){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);queuedLoggingEvents.push(new QueuedLoggingEvent(loggingEvent,formattedMessage));checkAndAppend();}};this.group=function(name,initiallyExpanded){if(isSupported){queuedLoggingEvents.push(new QueuedGroup(name,initiallyExpanded));checkAndAppend();}};this.groupEnd=function(){if(isSupported){queuedLoggingEvents.push(new QueuedGroupEnd());checkAndAppend();}};var appendQueuedLoggingEvents=function(){while(queuedLoggingEvents.length>0){queuedLoggingEvents.shift().append();}\r\nif(focusConsoleWindow){getConsoleWindow().focus();}};this.setAddedToLogger=function(logger){this.loggers.push(logger);if(enabled&&!lazyInit){init();}};this.clear=function(){if(consoleWindowExists()){getConsoleWindow().clearLog();}\r\nqueuedLoggingEvents.length=0;};this.focus=function(){if(consoleWindowExists()){getConsoleWindow().focus();}};this.focusCommandLine=function(){if(consoleWindowExists()){getConsoleWindow().focusCommandLine();}};this.focusSearch=function(){if(consoleWindowExists()){getConsoleWindow().focusSearch();}};var commandWindow=window;this.getCommandWindow=function(){return commandWindow;};this.setCommandWindow=function(commandWindowParam){commandWindow=commandWindowParam;};this.executeLastCommand=function(){if(consoleWindowExists()){getConsoleWindow().evalLastCommand();}};var commandLayout=new PatternLayout(\"%m\");this.getCommandLayout=function(){return commandLayout;};this.setCommandLayout=function(commandLayoutParam){commandLayout=commandLayoutParam;};this.evalCommandAndAppend=function(expr){var commandReturnValue={appendResult:true,isError:false};var commandOutput=\"\";try{var result,i;if(!commandWindow.eval&&commandWindow.execScript){commandWindow.execScript(\"null\");}\r\nvar commandLineFunctionsHash={};for(i=0,len=commandLineFunctions.length;i<len;i++){commandLineFunctionsHash[commandLineFunctions[i][0]]=commandLineFunctions[i][1];}\r\nvar objectsToRestore=[];var addObjectToRestore=function(name){objectsToRestore.push([name,commandWindow[name]]);};addObjectToRestore(\"appender\");commandWindow.appender=appender;addObjectToRestore(\"commandReturnValue\");commandWindow.commandReturnValue=commandReturnValue;addObjectToRestore(\"commandLineFunctionsHash\");commandWindow.commandLineFunctionsHash=commandLineFunctionsHash;var addFunctionToWindow=function(name){addObjectToRestore(name);commandWindow[name]=function(){return this.commandLineFunctionsHash[name](appender,arguments,commandReturnValue);};};for(i=0,len=commandLineFunctions.length;i<len;i++){addFunctionToWindow(commandLineFunctions[i][0]);}\r\nif(commandWindow===window&&commandWindow.execScript){addObjectToRestore(\"evalExpr\");addObjectToRestore(\"result\");window.evalExpr=expr;commandWindow.execScript(\"window.result=eval(window.evalExpr);\");result=window.result;}else{result=commandWindow.eval(expr);}\r\ncommandOutput=isUndefined(result)?result:formatObjectExpansion(result,commandLineObjectExpansionDepth);for(i=0,len=objectsToRestore.length;i<len;i++){commandWindow[objectsToRestore[i][0]]=objectsToRestore[i][1];}}catch(ex){commandOutput=\"Error evaluating command: \"+getExceptionStringRep(ex);commandReturnValue.isError=true;}\r\nif(commandReturnValue.appendResult){var message=\">>> \"+expr;if(!isUndefined(commandOutput)){message+=newLine+commandOutput;}\r\nvar level=commandReturnValue.isError?Level.ERROR:Level.INFO;var loggingEvent=new LoggingEvent(null,new Date(),level,[message],null);var mainLayout=this.getLayout();this.setLayout(commandLayout);this.append(loggingEvent);this.setLayout(mainLayout);}};var commandLineFunctions=defaultCommandLineFunctions.concat([]);this.addCommandLineFunction=function(functionName,commandLineFunction){commandLineFunctions.push([functionName,commandLineFunction]);};var commandHistoryCookieName=\"log4javascriptCommandHistory\";this.storeCommandHistory=function(commandHistory){setCookie(commandHistoryCookieName,commandHistory.join(\",\"));};var writeHtml=function(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i<len;i++){doc.writeln(lines[i]);}\r\ndoc.close();};this.setEventTypes([\"load\",\"unload\"]);var consoleWindowLoadHandler=function(){var win=getConsoleWindow();win.setAppender(appender);win.setNewestAtTop(newestMessageAtTop);win.setScrollToLatest(scrollToLatestMessage);win.setMaxMessages(maxMessages);win.setShowCommandLine(showCommandLine);win.setShowHideButton(showHideButton);win.setShowCloseButton(showCloseButton);win.setMainWindow(window);var storedValue=getCookie(commandHistoryCookieName);if(storedValue){win.commandHistory=storedValue.split(\",\");win.currentCommandIndex=win.commandHistory.length;}\r\nappender.dispatchEvent(\"load\",{\"win\":win});};this.unload=function(){logLog.debug(\"unload \"+this+\", caller: \"+this.unload.caller);if(!consoleClosed){logLog.debug(\"really doing unload \"+this);consoleClosed=true;consoleWindowLoaded=false;consoleWindowCreated=false;appender.dispatchEvent(\"unload\",{});}};var pollConsoleWindow=function(windowTest,interval,successCallback,errorMessage){function doPoll(){try{if(consoleClosed){clearInterval(poll);}\r\nif(windowTest(getConsoleWindow())){clearInterval(poll);successCallback();}}catch(ex){clearInterval(poll);isSupported=false;handleError(errorMessage,ex);}}\r\nvar poll=setInterval(doPoll,interval);};var getConsoleUrl=function(){var documentDomainSet=(document.domain!=location.hostname);return useDocumentWrite?\"\":getBaseUrl()+\"console.html\"+\r\n(documentDomainSet?\"?log4javascript_domain=\"+escape(document.domain):\"\");};if(inPage){var containerElement=null;var cssProperties=[];this.addCssProperty=function(name,value){if(checkCanConfigure(\"cssProperties\")){cssProperties.push([name,value]);}};var windowCreationStarted=false;var iframeContainerDiv;var iframeId=uniqueId+\"_InPageAppender_\"+consoleAppenderId;this.hide=function(){if(initialized&&consoleWindowCreated){if(consoleWindowExists()){getConsoleWindow().$(\"command\").blur();}\r\niframeContainerDiv.style.display=\"none\";minimized=true;}};this.show=function(){if(initialized){if(consoleWindowCreated){iframeContainerDiv.style.display=\"block\";this.setShowCommandLine(showCommandLine);minimized=false;}else if(!windowCreationStarted){createWindow(true);}}};this.isVisible=function(){return!minimized&&!consoleClosed;};this.close=function(fromButton){if(!consoleClosed&&(!fromButton||confirm(\"This will permanently remove the console from the page. No more messages will be logged. Do you wish to continue?\"))){iframeContainerDiv.parentNode.removeChild(iframeContainerDiv);this.unload();}};open=function(){var initErrorMessage=\"InPageAppender.open: unable to create console iframe\";function finalInit(){try{if(!initiallyMinimized){appender.show();}\r\nconsoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nfunction writeToDocument(){try{var windowTest=function(win){return isLoaded(win);};if(useDocumentWrite){writeHtml(getConsoleWindow().document);}\r\nif(windowTest(getConsoleWindow())){finalInit();}else{pollConsoleWindow(windowTest,100,finalInit,initErrorMessage);}}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nminimized=false;iframeContainerDiv=containerElement.appendChild(document.createElement(\"div\"));iframeContainerDiv.style.width=width;iframeContainerDiv.style.height=height;iframeContainerDiv.style.border=\"solid gray 1px\";for(var i=0,len=cssProperties.length;i<len;i++){iframeContainerDiv.style[cssProperties[i][0]]=cssProperties[i][1];}\r\nvar iframeSrc=useDocumentWrite?\"\":\" src='\"+getConsoleUrl()+\"'\";iframeContainerDiv.innerHTML=\"<iframe id='\"+iframeId+\"' name='\"+iframeId+\"' width='100%' height='100%' frameborder='0'\"+iframeSrc+\" scrolling='no'></iframe>\";consoleClosed=false;var iframeDocumentExistsTest=function(win){try{return bool(win)&&bool(win.document);}catch(ex){return false;}};if(iframeDocumentExistsTest(getConsoleWindow())){writeToDocument();}else{pollConsoleWindow(iframeDocumentExistsTest,100,writeToDocument,initErrorMessage);}\r\nconsoleWindowCreated=true;};createWindow=function(show){if(show||!initiallyMinimized){var pageLoadHandler=function(){if(!container){containerElement=document.createElement(\"div\");containerElement.style.position=\"fixed\";containerElement.style.left=\"0\";containerElement.style.right=\"0\";containerElement.style.bottom=\"0\";document.body.appendChild(containerElement);appender.addCssProperty(\"borderWidth\",\"1px 0 0 0\");appender.addCssProperty(\"zIndex\",1000000);open();}else{try{var el=document.getElementById(container);if(el.nodeType==1){containerElement=el;}\r\nopen();}catch(ex){handleError(\"InPageAppender.init: invalid container element '\"+container+\"' supplied\",ex);}}};if(pageLoaded&&container&&container.appendChild){containerElement=container;open();}else if(pageLoaded){pageLoadHandler();}else{log4javascript.addEventListener(\"load\",pageLoadHandler);}\r\nwindowCreationStarted=true;}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){var iframe=window.frames[iframeId];if(iframe){return iframe;}};safeToAppend=function(){if(isSupported&&!consoleClosed){if(consoleWindowCreated&&!consoleWindowLoaded&&getConsoleWindow()&&isLoaded(getConsoleWindow())){consoleWindowLoaded=true;}\r\nreturn consoleWindowLoaded;}\r\nreturn false;};}else{var useOldPopUp=appender.defaults.useOldPopUp;var complainAboutPopUpBlocking=appender.defaults.complainAboutPopUpBlocking;var reopenWhenClosed=this.defaults.reopenWhenClosed;this.isUseOldPopUp=function(){return useOldPopUp;};this.setUseOldPopUp=function(useOldPopUpParam){if(checkCanConfigure(\"useOldPopUp\")){useOldPopUp=bool(useOldPopUpParam);}};this.isComplainAboutPopUpBlocking=function(){return complainAboutPopUpBlocking;};this.setComplainAboutPopUpBlocking=function(complainAboutPopUpBlockingParam){if(checkCanConfigure(\"complainAboutPopUpBlocking\")){complainAboutPopUpBlocking=bool(complainAboutPopUpBlockingParam);}};this.isFocusPopUp=function(){return focusConsoleWindow;};this.setFocusPopUp=function(focusPopUpParam){focusConsoleWindow=bool(focusPopUpParam);};this.isReopenWhenClosed=function(){return reopenWhenClosed;};this.setReopenWhenClosed=function(reopenWhenClosedParam){reopenWhenClosed=bool(reopenWhenClosedParam);};this.close=function(){logLog.debug(\"close \"+this);try{popUp.close();this.unload();}catch(ex){}};this.hide=function(){logLog.debug(\"hide \"+this);if(consoleWindowExists()){this.close();}};this.show=function(){logLog.debug(\"show \"+this);if(!consoleWindowCreated){open();}};this.isVisible=function(){return safeToAppend();};var popUp;open=function(){var windowProperties=\"width=\"+width+\",height=\"+height+\",status,resizable\";var frameInfo=\"\";try{var frameEl=window.frameElement;if(frameEl){frameInfo=\"_\"+frameEl.tagName+\"_\"+(frameEl.name||frameEl.id||\"\");}}catch(e){frameInfo=\"_inaccessibleParentFrame\";}\r\nvar windowName=\"PopUp_\"+location.host.replace(/[^a-z0-9]/gi,\"_\")+\"_\"+consoleAppenderId+frameInfo;if(!useOldPopUp||!useDocumentWrite){windowName=windowName+\"_\"+uniqueId;}\r\nvar checkPopUpClosed=function(win){if(consoleClosed){return true;}else{try{return bool(win)&&win.closed;}catch(ex){}}\r\nreturn false;};var popUpClosedCallback=function(){if(!consoleClosed){appender.unload();}};function finalInit(){getConsoleWindow().setCloseIfOpenerCloses(!useOldPopUp||!useDocumentWrite);consoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();pollConsoleWindow(checkPopUpClosed,500,popUpClosedCallback,\"PopUpAppender.checkPopUpClosed: error checking pop-up window\");}\r\ntry{popUp=window.open(getConsoleUrl(),windowName,windowProperties);consoleClosed=false;consoleWindowCreated=true;if(popUp&&popUp.document){if(useDocumentWrite&&useOldPopUp&&isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{if(useDocumentWrite){writeHtml(popUp.document);}\r\nvar popUpLoadedTest=function(win){return bool(win)&&isLoaded(win);};if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow(popUpLoadedTest,100,finalInit,\"PopUpAppender.init: unable to create console window\");}}}else{isSupported=false;logLog.warn(\"PopUpAppender.init: pop-ups blocked, please unblock to use PopUpAppender\");if(complainAboutPopUpBlocking){handleError(\"log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.\");}}}catch(ex){handleError(\"PopUpAppender.init: error creating pop-up\",ex);}};createWindow=function(){if(!initiallyMinimized){open();}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){return popUp;};safeToAppend=function(){if(isSupported&&!isUndefined(popUp)&&!consoleClosed){if(popUp.closed||(consoleWindowLoaded&&isUndefined(popUp.closed))){appender.unload();logLog.debug(\"PopUpAppender: pop-up closed\");return false;}\r\nif(!consoleWindowLoaded&&isLoaded(popUp)){consoleWindowLoaded=true;}}\r\nreturn isSupported&&consoleWindowLoaded&&!consoleClosed;};}\r\nthis.getConsoleWindow=getConsoleWindow;};ConsoleAppender.addGlobalCommandLineFunction=function(functionName,commandLineFunction){defaultCommandLineFunctions.push([functionName,commandLineFunction]);};function PopUpAppender(lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(false,null,lazyInit,initiallyMinimized,useDocumentWrite,width,height,this.defaults.focusPopUp);}\r\nPopUpAppender.prototype=new ConsoleAppender();PopUpAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,focusPopUp:false,lazyInit:true,useOldPopUp:true,complainAboutPopUpBlocking:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"600\",height:\"400\",reopenWhenClosed:false,maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:true,useDocumentWrite:true};PopUpAppender.prototype.toString=function(){return\"PopUpAppender\";};log4javascript.PopUpAppender=PopUpAppender;function InPageAppender(container,lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(true,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,false);}\r\nInPageAppender.prototype=new ConsoleAppender();InPageAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,lazyInit:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"100%\",height:\"220px\",maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:false,showLogEntryDeleteButtons:true,useDocumentWrite:true};InPageAppender.prototype.toString=function(){return\"InPageAppender\";};log4javascript.InPageAppender=InPageAppender;log4javascript.InlineAppender=InPageAppender;})();function padWithSpaces(str,len){if(str.length<len){var spaces=[];var numberOfSpaces=Math.max(0,len-str.length);for(var i=0;i<numberOfSpaces;i++){spaces[i]=\" \";}\r\nstr+=spaces.join(\"\");}\r\nreturn str;}\r\n(function(){function dir(obj){var maxLen=0;for(var p in obj){maxLen=Math.max(toStr(p).length,maxLen);}\r\nvar propList=[];for(p in obj){var propNameStr=\" \"+padWithSpaces(toStr(p),maxLen+2);var propVal;try{propVal=splitIntoLines(toStr(obj[p])).join(padWithSpaces(newLine,maxLen+6));}catch(ex){propVal=\"[Error obtaining property. Details: \"+getExceptionMessage(ex)+\"]\";}\r\npropList.push(propNameStr+propVal);}\r\nreturn propList.join(newLine);}\r\nvar nodeTypes={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};var preFormattedElements=[\"script\",\"pre\"];var emptyElements=[\"br\",\"img\",\"hr\",\"param\",\"link\",\"area\",\"input\",\"col\",\"base\",\"meta\"];var indentationUnit=\" \";function getXhtml(rootNode,includeRootNode,indentation,startNewLine,preformatted){includeRootNode=(typeof includeRootNode==\"undefined\")?true:!!includeRootNode;if(typeof indentation!=\"string\"){indentation=\"\";}\r\nstartNewLine=!!startNewLine;preformatted=!!preformatted;var xhtml;function isWhitespace(node){return((node.nodeType==nodeTypes.TEXT_NODE)&&/^[ \\t\\r\\n]*$/.test(node.nodeValue));}\r\nfunction fixAttributeValue(attrValue){return attrValue.toString().replace(/&/g,\"&\").replace(/</g,\"<\").replace(/\"/g,\""\");}\r\nfunction getStyleAttributeValue(el){var stylePairs=el.style.cssText.split(\";\");var styleValue=\"\";for(var j=0,len=stylePairs.length;j<len;j++){var nameValueBits=stylePairs[j].split(\":\");var props=[];if(!/^\\s*$/.test(nameValueBits[0])){props.push(trim(nameValueBits[0]).toLowerCase()+\":\"+trim(nameValueBits[1]));}\r\nstyleValue=props.join(\";\");}\r\nreturn styleValue;}\r\nfunction getNamespace(el){if(el.prefix){return el.prefix;}else if(el.outerHTML){var regex=new RegExp(\"<([^:]+):\"+el.tagName+\"[^>]*>\",\"i\");if(regex.test(el.outerHTML)){return RegExp.$1.toLowerCase();}}\r\nreturn\"\";}\r\nvar lt=\"<\";var gt=\">\";var i,len;if(includeRootNode&&rootNode.nodeType!=nodeTypes.DOCUMENT_FRAGMENT_NODE){switch(rootNode.nodeType){case nodeTypes.ELEMENT_NODE:var tagName=rootNode.tagName.toLowerCase();xhtml=startNewLine?newLine+indentation:\"\";xhtml+=lt;var prefix=getNamespace(rootNode);var hasPrefix=!!prefix;if(hasPrefix){xhtml+=prefix+\":\";}\r\nxhtml+=tagName;for(i=0,len=rootNode.attributes.length;i<len;i++){var currentAttr=rootNode.attributes[i];if(!currentAttr.specified||currentAttr.nodeValue===null||currentAttr.nodeName.toLowerCase()===\"style\"||typeof currentAttr.nodeValue!==\"string\"||currentAttr.nodeName.indexOf(\"_moz\")===0){continue;}\r\nxhtml+=\" \"+currentAttr.nodeName.toLowerCase()+\"=\\\"\";xhtml+=fixAttributeValue(currentAttr.nodeValue);xhtml+=\"\\\"\";}\r\nif(rootNode.style.cssText){var styleValue=getStyleAttributeValue(rootNode);if(styleValue!==\"\"){xhtml+=\" style=\\\"\"+getStyleAttributeValue(rootNode)+\"\\\"\";}}\r\nif(array_contains(emptyElements,tagName)||(hasPrefix&&!rootNode.hasChildNodes())){xhtml+=\"/\"+gt;}else{xhtml+=gt;var childStartNewLine=!(rootNode.childNodes.length===1&&rootNode.childNodes[0].nodeType===nodeTypes.TEXT_NODE);var childPreformatted=array_contains(preFormattedElements,tagName);for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit,childStartNewLine,childPreformatted);}\r\nvar endTag=lt+\"/\"+tagName+gt;xhtml+=childStartNewLine?newLine+indentation+endTag:endTag;}\r\nreturn xhtml;case nodeTypes.TEXT_NODE:if(isWhitespace(rootNode)){xhtml=\"\";}else{if(preformatted){xhtml=rootNode.nodeValue;}else{var lines=splitIntoLines(trim(rootNode.nodeValue));var trimmedLines=[];for(i=0,len=lines.length;i<len;i++){trimmedLines[i]=trim(lines[i]);}\r\nxhtml=trimmedLines.join(newLine+indentation);}\r\nif(startNewLine){xhtml=newLine+indentation+xhtml;}}\r\nreturn xhtml;case nodeTypes.CDATA_SECTION_NODE:return\"<![CDA\"+\"TA[\"+rootNode.nodeValue+\"]\"+\"]>\"+newLine;case nodeTypes.DOCUMENT_NODE:xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation);}\r\nreturn xhtml;default:return\"\";}}else{xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit);}\r\nreturn xhtml;}}\r\nfunction createCommandLineFunctions(){ConsoleAppender.addGlobalCommandLineFunction(\"$\",function(appender,args,returnValue){return document.getElementById(args[0]);});ConsoleAppender.addGlobalCommandLineFunction(\"dir\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=dir(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"dirxml\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=getXhtml(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"cd\",function(appender,args,returnValue){var win,message;if(args.length===0||args[0]===\"\"){win=window;message=\"Command line set to run in main window\";}else{if(args[0].window==args[0]){win=args[0];message=\"Command line set to run in frame '\"+args[0].name+\"'\";}else{win=window.frames[args[0]];if(win){message=\"Command line set to run in frame '\"+args[0]+\"'\";}else{returnValue.isError=true;message=\"Frame '\"+args[0]+\"' does not exist\";win=appender.getCommandWindow();}}}\r\nappender.setCommandWindow(win);return message;});ConsoleAppender.addGlobalCommandLineFunction(\"clear\",function(appender,args,returnValue){returnValue.appendResult=false;appender.clear();});ConsoleAppender.addGlobalCommandLineFunction(\"keys\",function(appender,args,returnValue){var keys=[];for(var k in args[0]){keys.push(k);}\r\nreturn keys;});ConsoleAppender.addGlobalCommandLineFunction(\"values\",function(appender,args,returnValue){var values=[];for(var k in args[0]){try{values.push(args[0][k]);}catch(ex){logLog.warn(\"values(): Unable to obtain value for key \"+k+\". Details: \"+getExceptionMessage(ex));}}\r\nreturn values;});ConsoleAppender.addGlobalCommandLineFunction(\"expansionDepth\",function(appender,args,returnValue){var expansionDepth=parseInt(args[0],10);if(isNaN(expansionDepth)||expansionDepth<0){returnValue.isError=true;return\"\"+args[0]+\" is not a valid expansion depth\";}else{appender.setCommandLineObjectExpansionDepth(expansionDepth);return\"Object expansion depth set to \"+expansionDepth;}});}\r\nfunction init(){createCommandLineFunctions();}\r\ninit();})();function createDefaultLogger(){var logger=log4javascript.getLogger(defaultLoggerName);var a=new log4javascript.PopUpAppender();logger.addAppender(a);return logger;}\r\nlog4javascript.setDocumentReady=function(){pageLoaded=true;log4javascript.dispatchEvent(\"load\",{});};if(window.addEventListener){window.addEventListener(\"load\",log4javascript.setDocumentReady,false);}else if(window.attachEvent){window.attachEvent(\"onload\",log4javascript.setDocumentReady);}else{var oldOnload=window.onload;if(typeof window.onload!=\"function\"){window.onload=log4javascript.setDocumentReady;}else{window.onload=function(evt){if(oldOnload){oldOnload(evt);}\r\nlog4javascript.setDocumentReady();};}}\r\nreturn log4javascript;},this);\r\n","/**\n * lite-url - Small, JS lib that uses regex for parsing a URL into it's component parts.\n * @version v1.0.5\n * @link https://github.com/sadams/lite-url\n * @license BSD-3-Clause\n */\n(function(){\"use strict\";function r(r,n,t){var e=r.split(n),o=e.shift();return t(o,e.join(n))}function n(n){var t={hash:\"\",host:\"\",hostname:\"\",origin:\"\",pathname:\"\",protocol:\"\",search:\"\",password:\"\",username:\"\",port:\"\"};return r(n,\"#\",function(n,e){e&&(t.hash=e?\"#\"+e:\"\"),r(n,\"?\",function(n,e){e&&(t.search=\"?\"+e),n&&r(n,\"//\",function(n,e){t.protocol=n,r(e,\"/\",function(n,e){t.pathname=\"/\"+(e||\"\"),(t.protocol||n)&&(t.origin=t.protocol+\"//\"+n),r(n,\"@\",function(n,e){if(e){var o=n.split(\":\");t.username=o[0],t.password=o[1]}else e=n;t.host=e,r(e,\":\",function(r,n){t.hostname=r,n&&(t.port=n)})})})})})}),t.href=t.origin+t.pathname+t.search+t.hash,t}function t(r){var n={},t=r.search;if(t){t=t.replace(new RegExp(\"\\\\?\"),\"\");var e=t.split(\"&\");for(var o in e)if(e.hasOwnProperty(o)&&e[o]){var i=e[o].split(\"=\");n[i[0]]=i[1]}}return n}function e(r){var e=i[r];return\"undefined\"!=typeof e?e:(e=n(r),e.params=t(e),i[r]=e,e)}var o=this,i={};return e.changeQueryParser=function(r){t=r},\"undefined\"!=typeof exports?(\"undefined\"!=typeof module&&module.exports&&(exports=module.exports=e),exports.liteURL=e):o.liteURL=e,e}).call(this);\n","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adapter/adapter.js\n # Provides an empty object for later loaded adapter objects\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n/*!\n * J1 Adapter\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function ( j1, window ) {\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the adapter object\n // -------------------------------------------------------------------------\n _init_: function () {\n return;\n } // END _init_\n\n }; // END return\n\n})( j1, window );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/j1_template/core.js\n # Provides an empty object for later loaded core objects\n #\n # Product/Info:\n # https://jekyll.one\n # http://getbootstrap.com/\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// module.exports = function core ( options ) {\n/*!\n * J1 Core\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function (options) {\n\n // ---------------------------------------------------------------------------\n // Global variables\n // ---------------------------------------------------------------------------\n // var messageCatalog = {};\n // var state;\n // var logger;\n // var logText;\n\n // ---------------------------------------------------------------------------\n // Default settings\n // ---------------------------------------------------------------------------\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n var state = 'loaded';\n\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the core object\n // -------------------------------------------------------------------------\n _init_: function (options) {\n\n //\n // Place handling of options here\n //\n\n return;\n }, // END _init_\n\n // -------------------------------------------------------------------------\n // Returns the current (processing) state of the module\n // -------------------------------------------------------------------------\n getState: function () {\n return state;\n }, // END state\n\n // -------------------------------------------------------------------------\n // isMobile\n // Return true if the current platform is a mobile device\n // -------------------------------------------------------------------------\n isMobile: function (ua_name) {\n var mobile = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(a.substr(0,4))) mobile = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return mobile;\n }, // END isMobile\n\n // -------------------------------------------------------------------------\n // Clear button for input fields (forms)\n // -------------------------------------------------------------------------\n bsFormClearButton: function () {\n// $('.position-relative :input').on('keydown focus', function() {\n $(':input').on('keydown focus change mouseover', function() {\n if ($(this).val().length > 0) {\n $(this).nextAll('.form-clear').removeClass('d-none');\n }\n }).on('keydown keyup blur', function() {\n if ($(this).val().length === 0) {\n $(this).nextAll('.form-clear').addClass('d-none');\n }\n });\n\n // $('.form-clear').on('click', function() {\n // $(this).addClass('d-none').prevAll(':input').val('');\n // // hide|clear results from top search\n // $('#search-results').hide();\n // $('#search-results').html('');\n // });\n }, // END bsFormClearButton\n\n // -------------------------------------------------------------------------\n // Initialize Backdrops on all <p> elements of class \"dropcap\"\n // -------------------------------------------------------------------------\n createDropCap: function () {\n\n // add class dropcap\n $('.paragraph.dropcap').children('p').addClass('dropcap');\n\n //\n if ($('p.dropcap').length) {\n $('p.dropcap').each(function() {\n var $p = $(this);\n var text = $.trim($p.text());\n var firstLetter = text[0];\n var marginalDropCap = '<span class=\"j1-dropcap\">' + firstLetter + '</span>';\n\n $p.html(text.replace(firstLetter, marginalDropCap));\n });\n }\n } // END createDropCap\n\n }; // end return (object)\n\n//})( jQuery, window );\n})(); // END IFFE\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/navigator/navigator.js\n # Provides all JavaScript core functions for J1 Navigator\n #\n # Product/Info:\n # https://jekyll.one\n # https://github.com/adamnurdin01/navigator\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 adamnurdin01\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Bootsnav is licensed under MIT License.\n # See: https://github.com/adamnurdin01/navigator\n #\n # -----------------------------------------------------------------------------\n # NOTE:\n # jadams, 2020-06-21:\n # J1 Navigator needs a general revision on BS4 code and functionalities\n # Current, only base function are tested with BS4 (was coded for BS3)\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// TODO: Height of dropdowns are to be limited in general\n\n// -----------------------------------------------------------------------------\n// Navigator core registered as 'j1.core.navigator'\n// -----------------------------------------------------------------------------\n\nmodule.exports = function navigator ( options ) {\n\n // ---------------------------------------------------------------------------\n // global vars\n // ---------------------------------------------------------------------------\n var message = {};\n var state;\n var logger;\n var logText;\n\n // -----------------------------------------------------------------------\n // default settings\n // -----------------------------------------------------------------------\n var settings = $.extend ({\n foo: 'bar',\n bar: 'foo',\n }, options );\n\n // ---------------------------------------------------------------------------\n // main object\n // ---------------------------------------------------------------------------\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function( defaultOptions, menuOptions ) {\n logger = log4javascript.getLogger('j1.core.navigator');\n logText = 'core is being initialized';\n\n logger.info(logText);\n this.manageDropdownMenu(defaultOptions, menuOptions);\n this.navbarSticky();\n this.eventHandler(defaultOptions); // jadams, 2021-07-03: initialize events early\n\n message.type = 'command';\n message.action = 'core_initialized';\n message.text = 'navigator core initialized';\n j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n\n return true;\n },\n\n // -------------------------------------------------------------------------\n // event handler\n // -------------------------------------------------------------------------\n eventHandler: function(options) {\n var defaultOptions = options;\n var logger = log4javascript.getLogger('j1.core.navigator.eventHandler');\n var $getNav = $('nav.navbar.navigator');\n var json_data;\n\n // const seeMe = 'https://smee.io/wlNIFNiJN0GClm2';\n // const middleware = 'localhost:5000/state';\n // const web_server_dev = 'http://localhost:41000/status';\n // const utility_server = 'http://localhost:41001/git?request=pull';\n // var sender = seeMe;\n // var payload;\n\n // if (j1.checkUserAgent('IE') || j1.checkUserAgent('Edge')) {\n // logger.warn('HTML5 server side events (SSE) not supported for: ' + userAgent);\n // logger.warn('Middleware messages disabled');\n // } else {\n // const middleware_status = new EventSource(sender);\n //\n // // -----------------------------------------------------------------------\n // // middleware event handler ( SSE currently NOT used)\n // // -----------------------------------------------------------------------\n // middleware_status.onmessage = (event) => {\n // const payload = JSON.parse(event.data);\n //\n // logger.debug('middleware: event received');\n //\n // json_data = JSON.stringify(payload, undefined, 2);\n // logText = 'payload: ' + json_data;\n // logger.debug(logText);\n //\n // message.type = 'command';\n // message.action = 'status';\n // message.text = payload;\n // j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n //\n // return true;\n // }; // END event onMessage\n // }\n\n // bind click event to all links with \"#\" to suppress default action\n // See: https://stackoverflow.com/questions/134845/which-href-value-should-i-use-for-javascript-links-or-javascriptvoid0\n //\n $('a[href=\"#\"]').click(function(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n logger.info('bound click event to \"#\", suppress default action');\n });\n\n // -----------------------------------------------------------------------\n // Navbar Sticky\n // -----------------------------------------------------------------------\n var navSticky = $getNav.hasClass('navbar-sticky');\n if( navSticky ){\n // Wraped navigation\n $getNav.wrap('<div class=\\'wrap-sticky\\'></div>');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Center\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('brand-center') ){\n var postsArr = new Array();\n var index = $('nav.brand-center');\n var $postsList = index.find('ul.navbar-nav');\n\n //Create array of all posts in lists\n index.find('ul.navbar-nav > li').each(function(){\n postsArr.push($(this).html());\n });\n\n // Split the array at this point. The original array is altered.\n var firstList = postsArr.splice(0, Math.round(postsArr.length / 2));\n var secondList = postsArr;\n var ListHTML = '';\n\n var createHTML = function(list) {\n ListHTML = '';\n for (var i = 0; i < list.length; i++) {\n ListHTML += '<li>' + list[i] + '</li>';\n }\n };\n\n // Generate HTML for first list\n createHTML(firstList);\n $postsList.html(ListHTML);\n index.find('ul.nav').first().addClass('navbar-left');\n\n // Generate HTML for second list\n createHTML(secondList);\n //Create new list after original one\n $postsList.after('<ul class=\"nav navbar-nav\"></ul>').next().html(ListHTML);\n index.find('ul.nav').last().addClass('navbar-right');\n\n // Wrap navigation menu\n index.find('ul.nav.navbar-left').wrap('<div class=\\'col_half left\\'></div>');\n index.find('ul.nav.navbar-right').wrap('<div class=\\'col_half right\\'></div>');\n\n // Selection Class\n index.find('ul.navbar-nav > li').each(function() {\n var dropDown = $('ul.dropdown-menu', this),\n megaMenu = $('ul.megamenu-content', this);\n dropDown.closest('li').addClass('dropdown');\n megaMenu.closest('li').addClass('megamenu-fw');\n });\n }\n\n // -----------------------------------------------------------------------\n // Menu Center\n // -----------------------------------------------------------------------\n if( $getNav.find('ul.nav').hasClass('navbar-center')) {\n $getNav.addClass('menu-center');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Full\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')) {\n // Add Class to body\n $('nav.navbar.navigator').find('ul.nav').wrap('<div class=\\'wrap-full-menu\\'></div>');\n $('.wrap-full-menu').wrap('<div class=\\'nav-full\\'></div>');\n $('ul.nav.navbar-nav').prepend('<li class=\\'close-full-menu\\'><a href=\\'#\\'><i class=\\'mdi mdi-close\\'></i></a></li>');\n } else if( $getNav.hasClass('navbar-mobile') ) {\n $getNav.removeClass('no-full');\n } else {\n $getNav.addClass('no-full');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Fixed\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('no-background') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('no-background');\n } else {\n $('.navbar-fixed').addClass('no-background');\n }\n });\n }\n\n if( $getNav.hasClass('navbar-transparent') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('navbar-transparent');\n $('.navbar-fixed').addClass('navbar-scrolled');\n } else {\n $('.navbar-fixed').removeClass('navbar-scrolled');\n $('.navbar-fixed').addClass('navbar-transparent');\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Toggle Search\n // https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery\n // https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\n // https://stackoverflow.com/questions/5963669/whats-the-difference-between-event-stoppropagation-and-event-preventdefault\n // -----------------------------------------------------------------------\n// $('nav.navbar.navigator .attr-nav').each(function() {\n $('.attr-nav').each(function() {\n logger.debug('register OPEN event|s for QuickSearch');\n $('li.search > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action OPEN');\n $('html,body').animate({scrollTop: 0}, 0);\n $('.top-search').slideToggle('slow', 'swing', function() {\n if ( $('.top-search').is(':visible') ) {\n // disable scrolling (desktop)\n $('body').addClass('stop-scrolling');\n // disable scrolling (mobile)\n $('body').bind('touchmove', function(e){e.preventDefault();});\n // disable navbar\n $('#' + defaultOptions.nav_bar.container_id).hide();\n } else {\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n }\n });\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n logger.debug('register CLOSE event|s for QuickSearch');\n $('.input-group-addon.close-search').on('click', function(e) {\n e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action CLOSE');\n $('.top-search').slideUp('slow', 'swing');\n $('html,body').animate({scrollTop: 0}, 0);\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n e.stopPropagation(); // don't bubble up the event\n });\n\n // -----------------------------------------------------------------------\n // Toggle Translator SHOW|HIDE\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n logger.debug('register SHOW|HIDE event|s for J1 Translator');\n $('li.translator > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n // window.location.reload(true);\n logger.debug('toggle translator icon SHOW|HIDE');\n // See: https://api.jquery.com/toggle/\n // With no parameters, the .toggle() method simply toggles the visibility of elements\n $('#google_translate_element').toggle();\n if ($('#google_translate_element').css('display') !== 'none') {\n $('html,body').animate({scrollTop: 0}, 'slow');\n }\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n\n // -----------------------------------------------------------------------\n // Wrapper\n // -----------------------------------------------------------------------\n $('body').wrapInner( '<div class=\\'wrapper\\'></div>');\n\n }, // end event\n\n // -------------------------------------------------------------------------\n // Manage the Menu Dropdowns for Desktop|Mobile\n // -------------------------------------------------------------------------\n manageDropdownMenu : function( defaultOptions, menuOptions ) {\n\n var navDefaultOptions = defaultOptions;\n var navMenuOptions = menuOptions;\n\n var $getNav = $('nav.navbar.navigator');\n var $windowOrientation = window.matchMedia('(orientation: landscape)').matches ? 'landscape' : 'portrait';\n var $getWindow = $(window).width();\n var $getNavWidth = $('nav').width();\n var $getIn = $getNav.find('ul.nav').data('in');\n var $getOut = $getNav.find('ul.nav').data('out');\n\n var menuSelector = '#' +navMenuOptions.xhr_container_id+ '.collapse';\n var delayMenuOpen = navMenuOptions.delay_menu_open;\n\n var $menu;\n var breakPoint;\n var $dropDown;\n var timeoutHandle;\n\n // BS4 @media MAX breakpoints\n // NOTE: a media query is always a range\n // -----------------------------------------------------------------------\n var gridBreakpoint_lg = 992; // bs-breakpoint-lg\n var gridBreakpoint_md = 768; // bs-breakpoint-md\n var gridBreakpoint_sm = 576; // bs-breakpoint-sm\n\n // BS4 @media MIN breakpoints\n // -----------------------------------------------------------------------\n // NOTE: a media query is always a range\n // var gridBreakpoint_lg = 991;\n // var gridBreakpoint_md = 767;\n // var gridBreakpoint_sm = 575;\n\n // @media ranges\n // -----------------------------------------------------------------------\n var small_range = {min: '0em', max: '40em'}; /* 0, 640px */\n var medium_range = {min: '40.063em', max: '64em'}; /* 641px, 1024px */\n var large_range = {min: '64.063em', max: '90em'}; /* 1025px, 1440px */\n var xlarge_range = {min: '90.063em', max: '120em'}; /* 1441px, 1920px */\n var xxlarge_range = {min: '120.063em'}; /* 1921px */\n\n\n // jadams, 2019-05-01: Set Media Breakpoint for Desktop|Mobile Navigation\n if ( navDefaultOptions.nav_bar.media_breakpoint === 'lg' ) {\n breakPoint = gridBreakpoint_lg;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'md' ) {\n breakPoint = gridBreakpoint_md;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'sm' ) {\n breakPoint = gridBreakpoint_sm;\n } else{\n breakPoint = gridBreakpoint_lg;\n }\n\n // -----------------------------------------------------------------------\n // Tablet or Mobile\n // NOTE:\n // Managing the mobile menu is moved to MMenu Plugin\n // Only base functions like QuickLinks are managed by\n // J1 Navigator\n // -----------------------------------------------------------------------\n // MIN media breakpoint\n if ( $getWindow <= breakPoint ) {\n\n // Collapse Navbar\n $(menuSelector).addClass('navbar-collapse');\n $(menuSelector).removeClass('show'); //\n $('#navigator_nav_quicklinks').addClass('show');\n\n // Enable click Quicklink Navigation\n $('nav.navbar.navigator .attr-nav').each(function() {\n $('.dropdown-menu', this).removeClass('animated');\n $('li.dropdown', this).off('mouseenter');\n $('li.dropdown', this).off('mouseleave');\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n $(this).closest('li.dropdown').find('.dropdown-menu').first().stop().fadeToggle();\n $('.navbar-toggle').each(function(){\n $('.mdi', this).removeClass('mdi-close');\n $('.mdi', this).addClass('mdi-menu');\n $('.navbar-collapse').removeClass('in');\n $('.navbar-collapse').removeClass('open');\n });\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).stop().fadeOut();\n $('li.dropdown', this).removeClass('open');\n // return false;\n });\n });\n\n $('#desktop_menu').hide();\n\n // -----------------------------------------------------------------------\n // Desktop Navigation does NOT work on physical devices like iPad|Pro\n // Config DISABLED\n //\n// } else if ( $getWindow > breakPoint || $getWindow <= 1024 && $windowOrientation == 'portrait' ) {\n } else if ( $getWindow > breakPoint ) {\n // -----------------------------------------------------------------------\n // Desktop\n // -----------------------------------------------------------------------\n $('#navigator_nav_quicklinks').removeClass('show');\n $('#desktop_menu').show();\n\n // jadams, 2021-03-05: manage dropdown menus\n // ---------------------------------------------------------------------\n\n $('.dropdown-menu > li').on('mouseenter', function(){\n if ($('body').hasClass('stop-scrolling')){\n return false;\n } else {\n $('body').addClass('stop-scrolling');\n }\n });\n\n $('.dropdown-menu > li').on('mouseleave', function(){\n // stop scrolling if top search or any (mmenu) drawer is opened\n if ($('body').hasClass('stop-scrolling')){\n $('body').removeClass('stop-scrolling');\n }\n });\n\n // limit the dropdown menu lenght if needed\n $('.dropdown-menu > li').hover(function() {\n var $container = $(this);\n var $list = $container.find('ul');\n\n // limit LAST menu ONLY\n //\n if ( $list.length == 1 ) {\n $list.addClass('scrollable-menu');\n }\n });\n\n // jadams, 2021-03-06: Enable|Show Desktop Menu|s\n //\n $(menuSelector).removeClass('navbar-collapse');\n $(menuSelector).addClass('show');\n\n // Navbar Sidebar\n // jadams, 2021-03-05: Sidebar NOT used anymore\n\n // Open Desktop Menu|s on hover\n //\n $('nav.navbar.navigator ul.nav').each(function() {\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.megamenu-fw', this).each(function(){\n $('.title', this).off('click');\n $('a.dropdown-toggle', this).off('click');\n $('.content').removeClass('animated');\n });\n $('.dropdown-menu', this).addClass('animated');\n\n $('li.dropdown', this).on('mouseenter', function(){\n $menu = $('.dropdown-menu', this).eq(0);\n $dropDown = $(this);\n\n $menu.removeClass($getOut);\n $menu.removeClass('open');\n $dropDown.addClass('open');\n // Get|Set the timeout object to delay the dropdown open\n timeoutHandle = window.setTimeout(function () {\n if ($dropDown.hasClass('open')){\n $menu.stop().fadeIn().addClass($getIn);\n $menu.addClass('open');\n $dropDown.addClass('open');\n }\n }, delayMenuOpen);\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n $(this).removeClass('open').removeClass('open');\n\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n\n $(this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle);\n $('li.dropdown', this).removeClass('open');\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n }); // END Desktop Menu\n\n } // end Desktop\n\n // -----------------------------------------------------------------------\n // Hover Open on Quicklink Navigation\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.dropdown-menu', this).addClass('animated');\n $('li.dropdown', this).on('mouseenter', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getOut);\n $('.dropdown-menu', this).eq(0).stop().fadeIn().addClass($getIn);\n $(this).addClass('open');\n //return false;\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $(this).removeClass('open');\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $('li.dropdown', this).removeClass('open');\n //return false;\n });\n });\n\n // -----------------------------------------------------------------------\n // Fullscreen Menu\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')){\n var windowHeight = $(window).height(),\n windowWidth = $(window).width();\n\n $('.nav-full').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('width', windowWidth + 'px');\n\n $('.navbar-collapse').addClass('animated');\n $('.navbar-toggle').each(function(){\n var getId = $(this).data('target');\n $(this).off('click');\n $(this).on('click', function(e){\n e.preventDefault();\n $(getId).removeClass($getOut);\n $(getId).addClass('in');\n $(getId).addClass($getIn);\n // e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n\n $('li.close-full-menu').on('click', function(e){\n e.preventDefault();\n $(getId).addClass($getOut);\n setTimeout(function(){\n $(getId).removeClass('in');\n $(getId).removeClass($getIn);\n }, 500);\n //e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n });\n }\n }, // end manageDropdownMenu\n\n // -------------------------------------------------------------------------\n // Sticky Navbar\n // -------------------------------------------------------------------------\n navbarSticky : function() {\n var $getNav = $('nav.navbar.navigator'),\n navSticky = $getNav.hasClass('navbar-sticky');\n\n if (navSticky) {\n // Set Height Navigation\n var $getHeight = $getNav.height();\n $('.wrap-sticky').height($getHeight);\n\n // Windown on scroll\n var getOffset = $('.wrap-sticky').offset().top;\n $(window).on('scroll', function(){\n var scrollTop = $(window).scrollTop();\n if(scrollTop > getOffset){\n $getNav.addClass('sticked');\n }else {\n $getNav.removeClass('sticked');\n }\n });\n }\n }, // end navbarSticky\n\n // -------------------------------------------------------------------------\n // updateSidebar\n // Note:\n // -------------------------------------------------------------------------\n updateSidebar: function (user_data) {\n var logger = log4javascript.getLogger('j1.core.navigator.updateSidebar');\n var json_message;\n\n// json_message = JSON.stringify(user_data, undefined, 2); // multiline\n json_message = JSON.stringify(user_data);\n logText = 'user state data: ' + json_message;\n logger.debug(logText);\n\n // Replace Macro placeholders to values\n j1.resolveMacros(user_data);\n // Replace Macro values only\n j1.updateMacros(user_data);\n\n return true;\n\n }, // END updateSidebar\n\n }; // end return (object)\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~200_template_js/js/asciidoctor/asciidoctor.js\n # Provides JS functions to (dynamically) modify Asciidoctor HTML elements\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # NOTE:\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* global window */\n\n// TODO:\n\n// -----------------------------------------------------------------------------\n// J1 Asciidoctor registered as \"asciidoctor\"\n// -----------------------------------------------------------------------------\n/*!\n * J1 Asciidoctor\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = function asciidoctor (options) {\n\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function (options) {\n\n var moduleOptions = options;\n var logger = log4javascript.getLogger('j1.core.asciidoctor');\n\n var moduleDefaults = {\n dummyOption: false, // placeholder\n };\n var options = $.extend(moduleDefaults,moduleOptions);\n\n logText = 'J1 Asciidoctor is being initialized';\n logger.info(logText);\n\n this.callouts();\n\n }, // end initializer\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n // see: https://stackoverflow.com/questions/19393493/add-colgroup-for-each-table-column\n callouts: function( options ) {\n var colgroupList = '';\n\n // If the colist does not have a <colgroup> structure\n //\n \tif($('.colist > table > colgroup').length == 0) {\n colgroupList += '<!-- [INFO ] [j1.core.asciidoctor ] [ place a colgroup dynamically ] -->' + '\\n';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n \t\t$(\".colist > table\").prepend(colgroupList);\n }\n\n }, // end callouts\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n conums: function( options ) {\n var dependencies_met_page_finished = setInterval(function() {\n if (j1.getState() == 'finished') {\n // If the colist does not have a <colgroup> structure\n \tif($('.colist > table > colgroup').length == 0) {\n\n \t\tvar colgroupList = '';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n\n \t\t$(\".colist > table\").prepend(colgroupList);\n clearInterval(dependencies_met_page_finished);\n \t}\n }\n });\n }, // end conums\n\n }; // END return\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/scroll-smooth/scroll-smooth.js\n # Provides Javascript functions for smooth scrolling\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2020 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint indent: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// scrollSmooth core registered as \"scrollSmooth\"\n// -----------------------------------------------------------------------------\nmodule.exports = function scrollSmooth ( options ) {\n\n // Default settings\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n // -----------------------------------------------------------------------\n // Helper functions\n // -----------------------------------------------------------------------\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'));\n }\n\n function isCssSmoothScrollSupported () {\n return 'scrollBehavior' in document.documentElement.style;\n }\n\n return {\n // -------------------------------------------------------------------------\n // Initialize scrollSmooth\n // -------------------------------------------------------------------------\n scroll: function ( target, options ) {\n\n var logger;\n var logText;\n\n logger = log4javascript.getLogger('j1.core.scrollSmooth');\n\n // indicator|check currently NOT used\n // if (isCssSmoothScrollSupported()) { }\n\n logText = 'run module scrollSmooth';\n logger.info(logText);\n\n var duration = options.duration;\n var offset = options.offset;\n\n // var pageUrl = options.location.hash\n // ? stripHash(options.location.href)\n // : options.location.href;\n\n this.scrollTo(target, {\n duration: duration,\n offset: offset,\n callback: null\n });\n\n logText = 'scrollSmooth finished';\n logger.info(logText);\n },\n\n // -------------------------------------------------------------------------\n // scrollTo\n // -------------------------------------------------------------------------\n scrollTo: function ( target, options ) {\n var start = window.pageYOffset;\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n };\n\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]');\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target;\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration;\n var timeStart;\n var timeElapsed;\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time); });\n function loop (time) {\n timeElapsed = time - timeStart;\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) { requestAnimationFrame(loop); } else { end(); }\n }\n\n function end () {\n window.scrollTo(0, start + distance);\n\n // jadams, 2020-07-04: on (some?) mobile devices, the navbar\n // background is NOT switched (always?) correctly on a\n // page RELOAD.\n //\n // Solution: scroll the page one pixel back and forth (trigger)\n // to get the right position for the Toccer and adjust the\n // Navigator to display the (tranparent) navbar correctly based\n // on their onscroll events registered.\n //\n $(window).scrollTop($(window).scrollTop()+1);\n $(window).scrollTop($(window).scrollTop()-1);\n\n if (typeof opt.callback === 'function') { opt.callback(); }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n }\n } // END scrollTo\n\n }; // END return\n}( jQuery );\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n'use strict';\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nmodule.exports = anime;\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/tocbot.js\n # Tocbot v4.12.0 implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # rules:\n # \"eslint:tocbot\": \"eslint --ignore-path .eslintignore src/tocbot/js\"\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\n/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root))\n } else if (typeof exports === 'object') {\n module.exports = factory(root)\n } else {\n root.tocbot = factory(root)\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n 'use strict'\n\n // Default options.\n var defaultOptions = require('./default-options.js')\n // Object to store current options.\n var options = {}\n // Object for public APIs.\n var tocbot = {}\n\n var BuildHtml = require('./build-html.js')\n var ParseContent = require('./parse-content.js')\n var updateTocScroll = require('./update-toc-scroll.js')\n // Keep these variables at top scope once options are passed in.\n var buildHtml\n var parseContent\n\n // Just return if its not a browser.\n var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener // Feature test\n if (typeof window === 'undefined' && !supports) {\n return\n }\n var headingsArray\n\n // From: https://github.com/Raynos/xtend\n var hasOwnProperty = Object.prototype.hasOwnProperty\n function extend () {\n var target = {}\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n }\n\n // From: https://remysharp.com/2010/07/21/throttling-function-calls\n function throttle (fn, threshold, scope) {\n threshold || (threshold = 250)\n var last\n var deferTimer\n return function () {\n var context = scope || this\n var now = +new Date()\n var args = arguments\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer)\n deferTimer = setTimeout(function () {\n last = now\n fn.apply(context, args)\n }, threshold)\n } else {\n last = now\n fn.apply(context, args)\n }\n }\n }\n\n /**\n * Destroy tocbot.\n */\n tocbot.destroy = function () {\n if (!options.skipRendering) {\n // Clear HTML.\n try {\n document.querySelector(options.tocSelector).innerHTML = ''\n } catch (e) {\n console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n }\n }\n\n // Remove event listeners.\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false)\n }\n } else {\n document.removeEventListener('scroll', this._scrollListener, false)\n document.removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.removeEventListener('click', this._clickListener, false)\n }\n }\n }\n\n /**\n * Initialize tocbot.\n * @param {object} customOptions\n */\n tocbot.init = function (customOptions) {\n // feature test\n if (!supports) {\n return\n }\n\n // Merge defaults with user options.\n // Set to options variable at the top.\n options = extend(defaultOptions, customOptions || {})\n this.options = options\n this.state = {}\n\n // Init smooth scroll if enabled (default).\n if (options.scrollSmooth) {\n options.duration = options.scrollSmoothDuration\n options.offset = options.scrollSmoothOffset\n tocbot.scrollSmooth = require('./scroll-smooth').initSmoothScrolling(options)\n }\n\n // Pass options to these modules.\n buildHtml = BuildHtml(options)\n parseContent = ParseContent(options)\n\n // For testing purposes.\n this._buildHtml = buildHtml\n this._parseContent = parseContent\n\n // Destroy it if it exists first.\n tocbot.destroy()\n\n // Get headings array.\n headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector)\n // Return if no headings are found.\n if (headingsArray === null) {\n return\n }\n\n // Build nested headings array.\n var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray)\n var nestedHeadings = nestedHeadingsObj.nest\n\n // Render.\n if (!options.skipRendering) {\n buildHtml.render(options.tocSelector, nestedHeadings)\n }\n\n // Update Sidebar and bind listeners.\n this._scrollListener = throttle(function (e) {\n buildHtml.updateToc(headingsArray)\n !options.disableTocScrollSync && updateTocScroll(options)\n var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0\n if ((e && (e.eventPhase === 0 || e.currentTarget === null)) || isTop) {\n buildHtml.updateToc(headingsArray)\n if (options.scrollEndCallback) {\n options.scrollEndCallback(e)\n }\n }\n }, options.throttleTimeout)\n this._scrollListener()\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false)\n } else {\n document.addEventListener('scroll', this._scrollListener, false)\n document.addEventListener('resize', this._scrollListener, false)\n }\n\n // Bind click listeners to disable animation.\n var timeout = null\n this._clickListener = throttle(function (event) {\n if (options.scrollSmooth) {\n buildHtml.disableTocAnimation(event)\n }\n buildHtml.updateToc(headingsArray)\n // Timeout to re-enable the animation.\n timeout && clearTimeout(timeout)\n timeout = setTimeout(function () {\n buildHtml.enableTocAnimation()\n }, options.scrollSmoothDuration)\n }, options.throttleTimeout)\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false)\n } else {\n document.addEventListener('click', this._clickListener, false)\n }\n\n return this\n }\n\n /**\n * Refresh tocbot.\n */\n tocbot.refresh = function (customOptions) {\n tocbot.destroy()\n tocbot.init(customOptions || this.options)\n }\n\n // Make tocbot available globally.\n root.tocbot = tocbot\n\n return tocbot\n})\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = {\n // Where to render the table of contents.\n tocSelector: '.js-toc',\n // Where to grab the headings to build the table of contents.\n contentSelector: '.js-toc-content',\n // Which headings to grab inside of the contentSelector element.\n headingSelector: 'h1, h2, h3',\n // Headings that match the ignoreSelector will be skipped.\n ignoreSelector: '.js-toc-ignore',\n // For headings inside relative or absolute positioned containers within content\n hasInnerContainers: false,\n // Main class to add to links.\n linkClass: 'toc-link',\n // Extra classes to add to links.\n extraLinkClasses: '',\n // Class to add to active links,\n // the link corresponding to the top most heading on the page.\n activeLinkClass: 'is-active-link',\n // Main class to add to lists.\n listClass: 'toc-list',\n // Extra classes to add to lists.\n extraListClasses: '',\n // Class that gets added when a list should be collapsed.\n isCollapsedClass: 'is-collapsed',\n // Class that gets added when a list should be able\n // to be collapsed but isn't necessarily collapsed.\n collapsibleClass: 'is-collapsible',\n // Class to add to list items.\n listItemClass: 'toc-list-item',\n // Class to add to active list items.\n activeListItemClass: 'is-active-li',\n // How many heading levels should not be collapsed.\n // For example, number 6 will show everything since\n // there are only 6 heading levels and number 0 will collapse them all.\n // The sections that are hidden will open\n // and close as you scroll to headings within them.\n collapseDepth: 0,\n // Smooth scrolling enabled.\n scrollSmooth: true,\n // Smooth scroll duration.\n scrollSmoothDuration: 420,\n // Smooth scroll offset.\n scrollSmoothOffset: 0,\n // Callback for scroll end.\n scrollEndCallback: function (e) {},\n // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n headingsOffset: 1,\n // Timeout between events firing to make sure it's\n // not too rapid (for performance reasons).\n throttleTimeout: 50,\n // Element to add the positionFixedClass to.\n positionFixedSelector: null,\n // Fixed position class to add to make sidebar fixed after scrolling\n // down past the fixedSidebarOffset.\n positionFixedClass: 'is-position-fixed',\n // fixedSidebarOffset can be any number but by default is set\n // to auto which sets the fixedSidebarOffset to the sidebar\n // element's offsetTop from the top of the document on init.\n fixedSidebarOffset: 'auto',\n // includeHtml can be set to true to include the HTML markup from the\n // heading node instead of just including the textContent.\n includeHtml: false,\n // onclick function to apply to all links in toc. will be called with\n // the event as the first parameter, and this can be used to stop,\n // propagation, prevent default or perform action\n onClick: function (e) {},\n // orderedList can be set to false to generate unordered lists (ul)\n // instead of ordered lists (ol)\n orderedList: true,\n // If there is a fixed article scroll container, set to calculate titles' offset\n scrollContainer: null,\n // prevent ToC DOM rendering if it's already rendered by an external system\n skipRendering: false,\n // Optional callback to change heading labels.\n // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n // function (string) => string\n headingLabelCallback: false,\n // ignore headings that are hidden in DOM\n ignoreHiddenElements: false,\n // Optional callback to modify properties of parsed headings.\n // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n // Function has to return the same or modified obj.\n // The heading will be excluded from TOC if nothing is returned.\n // function (object, HTMLElement) => object | void\n headingObjectCallback: null,\n // Set the base path, useful if you use a `base` tag in `head`.\n basePath: '',\n // Only takes affect when `tocSelector` is scrolling,\n // keep the toc scroll position in sync with the content.\n disableTocScrollSync: false,\n};\n","/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function (options) {\n var forEach = [].forEach\n var some = [].some\n var body = document.body\n var currentlyHighlighting = true\n var SPACE_CHAR = ' '\n\n /**\n * Create link and list elements.\n * @param {Object} d\n * @param {HTMLElement} container\n * @return {HTMLElement}\n */\n function createEl (d, container) {\n var link = container.appendChild(createLink(d))\n if (d.children.length) {\n var list = createList(d.isCollapsed)\n d.children.forEach(function (child) {\n createEl(child, list)\n })\n link.appendChild(list)\n }\n }\n\n /**\n * Render nested heading array data into a given selector.\n * @param {String} selector\n * @param {Array} data\n * @return {HTMLElement}\n */\n function render (selector, data) {\n var collapsed = false\n var container = createList(collapsed)\n\n data.forEach(function (d) {\n createEl(d, container)\n })\n\n var parent = document.querySelector(selector)\n\n // Return if no parent is found.\n if (parent === null) {\n return\n }\n\n // Remove existing child if it exists.\n if (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n\n // Just return the parent and don't append the list if no links are found.\n if (data.length === 0) {\n return parent\n }\n\n // Append the Elements that have been created\n return parent.appendChild(container)\n }\n\n /**\n * Create link element.\n * @param {Object} data\n * @return {HTMLElement}\n */\n function createLink (data) {\n var item = document.createElement('li')\n var a = document.createElement('a')\n if (options.listItemClass) {\n item.setAttribute('class', options.listItemClass)\n }\n\n if (options.onClick) {\n a.onclick = options.onClick\n }\n\n if (options.includeHtml && data.childNodes.length) {\n forEach.call(data.childNodes, function (node) {\n a.appendChild(node.cloneNode(true))\n })\n } else {\n // Default behavior.\n a.textContent = data.textContent\n }\n a.setAttribute('href', options.basePath + '#' + data.id)\n a.setAttribute('class', options.linkClass +\n SPACE_CHAR + 'node-name--' + data.nodeName +\n SPACE_CHAR + options.extraLinkClasses)\n item.appendChild(a)\n return item\n }\n\n /**\n * Create list element.\n * @param {Boolean} isCollapsed\n * @return {HTMLElement}\n */\n function createList (isCollapsed) {\n var listElement = (options.orderedList) ? 'ol' : 'ul'\n var list = document.createElement(listElement)\n var classes = options.listClass +\n SPACE_CHAR + options.extraListClasses\n if (isCollapsed) {\n classes += SPACE_CHAR + options.collapsibleClass\n classes += SPACE_CHAR + options.isCollapsedClass\n }\n list.setAttribute('class', classes)\n return list\n }\n\n /**\n * Update fixed sidebar class.\n * @return {HTMLElement}\n */\n function updateFixedSidebarClass () {\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n var posFixedEl = document.querySelector(options.positionFixedSelector)\n\n if (options.fixedSidebarOffset === 'auto') {\n options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop\n }\n\n if (top > options.fixedSidebarOffset) {\n if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n posFixedEl.className += SPACE_CHAR + options.positionFixedClass\n }\n } else {\n posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('')\n }\n }\n\n /**\n * Get top position of heading\n * @param {HTMLElement}\n * @return {integer} position\n */\n function getHeadingTopPos (obj) {\n var position = 0\n if (obj !== document.querySelector(options.contentSelector && obj != null)) {\n position = obj.offsetTop\n if (options.hasInnerContainers) { position += getHeadingTopPos(obj.offsetParent) }\n }\n return position\n }\n\n /**\n * Update TOC highlighting and collapsed groups\n */\n function updateToc (headingsArray) {\n // If a fixed content container was set\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n\n // Add fixed class at offset\n if (options.positionFixedSelector) {\n updateFixedSidebarClass()\n }\n\n // Get the most TOP heading currently visible on the page to\n // identify what element to be highlighted\n var headings = headingsArray;\n var topHeader;\n var headingTopPos;\n\n // Using some instead of each so that we can escape early\n if (currentlyHighlighting &&\n document.querySelector(options.tocSelector) !== null &&\n headings.length > 0) {\n some.call(headings, function (heading, i) {\n headingTopPos = getHeadingTopPos(heading)\n if (headingTopPos > top + options.headingsOffset + 10) {\n // Don't allow negative index value\n // var index = (i === 0) ? i : i - 1;\n // topHeader = headings[index];\n // jadams, index correction seems NOT needed\n topHeader = headings[i];\n return true\n } else if (i === headings.length - 1) {\n // This allows scrolling for the last heading on the page\n topHeader = headings[headings.length - 1]\n return true\n }\n })\n\n // Remove the active class from the other tocLinks.\n var tocLinks = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.linkClass)\n forEach.call(tocLinks, function (tocLink) {\n tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('')\n })\n var tocLis = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listItemClass)\n forEach.call(tocLis, function (tocLi) {\n tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('')\n })\n\n // Add the active class to the active tocLink.\n var activeTocLink = document.querySelector(options.tocSelector)\n .querySelector('.' + options.linkClass +\n '.node-name--' + topHeader.nodeName +\n '[href=\"' + options.basePath + '#' + topHeader.id.replace(/([ #;&,.+*~':\"!^$[\\]()=>|/@])/g, '\\\\$1') + '\"]')\n if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n activeTocLink.className += SPACE_CHAR + options.activeLinkClass\n }\n var li = activeTocLink.parentNode\n if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n li.className += SPACE_CHAR + options.activeListItemClass\n }\n\n var tocLists = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass)\n\n // Collapse the other collapsible lists.\n forEach.call(tocLists, function (list) {\n if (list.className.indexOf(options.isCollapsedClass) === -1) {\n list.className += SPACE_CHAR + options.isCollapsedClass\n }\n })\n\n // Expand the active link's collapsible list and its sibling if applicable.\n if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n }\n removeCollapsedFromParents(activeTocLink.parentNode.parentNode)\n }\n }\n\n /**\n * Remove collpased class from parent elements.\n * @param {HTMLElement} element\n * @return {HTMLElement}\n */\n function removeCollapsedFromParents (element) {\n if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n return removeCollapsedFromParents(element.parentNode.parentNode)\n }\n return element\n }\n\n /**\n * Disable TOC Animation when a link is clicked.\n * @param {Event} event\n */\n function disableTocAnimation (event) {\n var target = event.target || event.srcElement\n if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n return\n }\n // Bind to tocLink clicks to temporarily disable highlighting\n // while smoothScroll is animating.\n currentlyHighlighting = false\n }\n\n /**\n * Enable TOC Animation.\n */\n function enableTocAnimation () {\n currentlyHighlighting = true\n }\n\n return {\n enableTocAnimation: enableTocAnimation,\n disableTocAnimation: disableTocAnimation,\n render: render,\n updateToc: updateToc\n }\n}\n","/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function parseContent (options) {\n var reduce = [].reduce\n\n /**\n * Get the last item in an array and return a reference to it.\n * @param {Array} array\n * @return {Object}\n */\n function getLastItem (array) {\n return array[array.length - 1]\n }\n\n /**\n * Get heading level for a heading dom node.\n * @param {HTMLElement} heading\n * @return {Number}\n */\n function getHeadingLevel (heading) {\n return +heading.nodeName.split('H').join('')\n }\n\n /**\n * Get important properties from a heading element and store in a plain object.\n * @param {HTMLElement} heading\n * @return {Object}\n */\n function getHeadingObject (heading) {\n // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n // first time heading is real DOM node element, second time it is obj\n // that is causing problem so I am processing only original DOM node\n if (!(heading instanceof window.HTMLElement)) return heading\n\n if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n return null\n }\n\n var obj = {\n id: heading.id,\n children: [],\n nodeName: heading.nodeName,\n headingLevel: getHeadingLevel(heading),\n textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n }\n\n if (options.includeHtml) {\n obj.childNodes = heading.childNodes\n }\n\n if (options.headingObjectCallback) {\n return options.headingObjectCallback(obj, heading)\n }\n\n return obj\n }\n\n /**\n * Add a node to the nested array.\n * @param {Object} node\n * @param {Array} nest\n * @return {Array}\n */\n function addNode (node, nest) {\n var obj = getHeadingObject(node)\n var level = obj.headingLevel\n var array = nest\n var lastItem = getLastItem(array)\n var lastItemLevel = lastItem\n ? lastItem.headingLevel\n : 0\n var counter = level - lastItemLevel\n\n while (counter > 0) {\n lastItem = getLastItem(array)\n if (lastItem && lastItem.children !== undefined) {\n array = lastItem.children\n }\n counter--\n }\n\n if (level >= options.collapseDepth) {\n obj.isCollapsed = true\n }\n\n array.push(obj)\n return array\n }\n\n /**\n * Select headings in content area, exclude any selector in options.ignoreSelector\n * @param {String} contentSelector\n * @param {Array} headingSelector\n * @return {Array}\n */\n function selectHeadings (contentSelector, headingSelector) {\n var selectors = headingSelector\n if (options.ignoreSelector) {\n selectors = headingSelector.split(',')\n .map(function mapSelectors (selector) {\n return selector.trim() + ':not(' + options.ignoreSelector + ')'\n })\n }\n try {\n return document.querySelector(contentSelector)\n .querySelectorAll(selectors)\n } catch (e) {\n console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n return null\n }\n }\n\n /**\n * Nest headings array into nested arrays with 'children' property.\n * @param {Array} headingsArray\n * @return {Object}\n */\n function nestHeadingsArray (headingsArray) {\n return reduce.call(headingsArray, function reducer (prev, curr) {\n var currentHeading = getHeadingObject(curr)\n if (currentHeading) {\n addNode(currentHeading, prev.nest)\n }\n return prev\n }, {\n nest: []\n })\n }\n\n return {\n nestHeadingsArray: nestHeadingsArray,\n selectHeadings: selectHeadings\n }\n}\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function updateTocScroll(options) {\n var toc = document.querySelector(options.tocSelector);\n if (toc && toc.scrollHeight > toc.clientHeight) {\n var activeItem = toc.querySelector('.' + options.activeListItemClass);\n if (activeItem) {\n toc.scrollTop = activeItem.offsetTop;\n }\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/scroll-smooth/index.js\n # Scroll-Smooth (Tocbot v4.12.0) implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-redeclare: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n/* globals location, requestAnimationFrame */\n\nexports.initSmoothScrolling = initSmoothScrolling\n\nfunction initSmoothScrolling (options) {\n if (isCssSmoothSCrollSupported()) { }\n\n var duration = options.duration\n var offset = options.offset\n\n var pageUrl = location.hash\n ? stripHash(location.href)\n : location.href\n\n delegatedLinkHijacking()\n\n function delegatedLinkHijacking () {\n document.body.addEventListener('click', onClick, false)\n\n function onClick (e) {\n if (\n !isInPageLink(e.target) ||\n e.target.className.indexOf('no-smooth-scroll') > -1 ||\n (e.target.href.charAt(e.target.href.length - 2) === '#' &&\n e.target.href.charAt(e.target.href.length - 1) === '!') ||\n e.target.className.indexOf(options.linkClass) === -1) {\n return\n }\n\n // Don't prevent default or hash doesn't change.\n // e.preventDefault()\n\n jump(e.target.hash, {\n duration: duration,\n offset: offset,\n callback: function () {\n setFocus(e.target.hash)\n }\n })\n }\n }\n\n function isInPageLink (n) {\n return n.tagName.toLowerCase() === 'a' &&\n (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') &&\n (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl)\n }\n\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'))\n }\n\n function isCssSmoothSCrollSupported () {\n return 'scrollBehavior' in document.documentElement.style\n }\n\n // Adapted from:\n // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n function setFocus (hash) {\n var element = document.getElementById(hash.substring(1))\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1\n }\n\n element.focus()\n }\n }\n}\n\nfunction jump (target, options) {\n var start = window.pageYOffset\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n }\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration\n var timeStart\n var timeElapsed\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time) })\n function loop (time) {\n timeElapsed = time - timeStart\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration))\n\n if (timeElapsed < duration) { requestAnimationFrame(loop) } else { end() }\n }\n\n function end () {\n window.scrollTo(0, start + distance)\n\n if (typeof opt.callback === 'function') { opt.callback() }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adoc_result_viewer/view_results.js\n # Provides JavaScript functions displaying results for Asciidoctor\n # example block\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # TODO: Improve lanuage settings\n # TODO: Improve auto-hide functionality for the results block\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* global $ */\n// -----------------------------------------------------------------------------\n\nvar timeoutHandle;\n// var language = 'de';\nvar language = document.documentElement.lang;\n\nfunction toggle_result_block(result_block) {\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n result_block.prev().toggleClass('stacked');\n result_block.toggle();\n\n // jadams: Improve auto-hide functionality for the results block\n //\n // timeoutHandle = window.setTimeout(function () {\n // result_block.hide();\n // }, 5000);\n}\n\nfunction insert_result_links() {\n $('.result').each(function(idx, node) {\n var view_result_link;\n var result_block = $(node);\n var title_div = result_block.prev().find('.title');\n\n if (language == 'en') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n } else if (language == 'de') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Anzeige umschalten\" data-original-title=\"toggle results\">Anzeige</span></div>');\n } else {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n }\n\n title_div.append(view_result_link);\n view_result_link.on('click', function(event) {\n event.preventDefault();\n toggle_result_block(result_block);\n });\n });\n}\n\n$(insert_result_links);\n"],"sourceRoot":""}
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///(webpack)/buildin/global.js","webpack:///./js/deepl-translator/src/languages.js","webpack:///./template.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/log4javascript/log4javascript.js","webpack:///./node_modules/lite-url/dist/lite-url.min.js","webpack:///./node_modules/platform/platform.js","webpack:///(webpack)/buildin/module.js","webpack:///./js/adapter/adapter.js","webpack:///./js/anime/anime.js","webpack:///./js/core/core.js","webpack:///./js/navigator/navigator.js","webpack:///./js/asciidoctor/asciidoctor.js","webpack:///./js/scroll-smooth/scroll-smooth.js","webpack:///./js/deepl-translator/index.js","webpack:///./js/deepl-translator/src/deepl-translator.js","webpack:///./js/deepl-translator/src/validators.js","webpack:///./js/deepl-translator/src/deepl-api-helper.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/buffer/index.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/base64-js/index.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/ieee754/index.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/isarray/index.js","webpack:///./js/deepl-translator/shims/client-request-helper.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/os-browserify/browser.js","webpack:///./js/tocbot/tocbot.js","webpack:///./js/tocbot/default-options.js","webpack:///./js/tocbot/build-html.js","webpack:///./js/tocbot/parse-content.js","webpack:///./js/tocbot/update-toc-scroll.js","webpack:///./js/tocbot/scroll-smooth/index.js","webpack:///./js/adoc_result_viewer/view_results.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","window","EN","DE","FR","ES","IT","NL","PL","Cookies","require","log4javascript","liteURL","platform","j1","adapter","anime","core","navigator","asciidoctor","scrollSmooth","deeplTranslator","factory","OldCookies","api","noConflict","extend","result","arguments","length","attributes","decode","replace","decodeURIComponent","init","converter","set","document","path","defaults","expires","Date","toUTCString","JSON","stringify","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","split","cookie","json","jar","cookies","parts","slice","join","charAt","read","parse","getJSON","remove","withConverter","isUndefined","obj","EventSupport","Array","push","len","shift","firstItem","splice","startIndex","deleteCount","itemsAfterDeleted","itemsDeleted","argumentsArray","itemsToAppend","concat","eventTypes","eventListeners","setEventTypes","eventTypesParam","handleError","addEventListener","eventType","listener","array_contains","removeEventListener","array_remove","dispatchEvent","eventArgs","listeners","applicationStartDate","uniqueId","getTime","Math","floor","random","emptyFunction","newLine","pageLoaded","Log4JavaScript","toStr","toString","getExceptionMessage","ex","message","description","getUrlFileName","url","lastSlashIndex","max","lastIndexOf","substr","getExceptionStringRep","exStr","lineNumber","fileName","localEx","logLog","warn","showStackTraces","stack","bool","Boolean","trim","str","splitIntoLines","text","version","edition","urlEncode","arr","val","index","extractBooleanFromParam","param","defaultValue","extractStringFromParam","extractIntFromParam","parseInt","isNaN","extractFunctionFromParam","isError","err","Error","apply","args","methodName","argsStrings","script","returnValue","eval","quietMode","debugMessages","setQuietMode","numberOfErrors","alertAllErrors","setAlertAllErrors","debug","displayDebug","alert","exception","error","alertMessage","enabled","log4javascript_disabled","setEnabled","enable","isEnabled","useTimeStampsInMilliseconds","setTimeStampsInMilliseconds","timeStampsInMilliseconds","isTimeStampsInMilliseconds","evalInScope","expr","setShowStackTraces","show","Level","level","Timer","INFO","start","equals","isGreaterOrEqual","ALL","Number","MIN_VALUE","TRACE","DEBUG","WARN","ERROR","FATAL","OFF","MAX_VALUE","getElapsedTime","anonymousLoggerName","defaultLoggerName","nullLoggerName","rootLoggerName","Logger","parent","children","appenders","loggerLevel","isRoot","isNull","appenderCache","appenderCacheInvalidated","addChild","childLogger","invalidateAppenderCache","additive","getAdditivity","setAdditivity","additivity","valueChanged","addAppender","appender","Appender","setAddedToLogger","removeAppender","setRemovedFromLogger","removeAllAppenders","appenderCount","getEffectiveAppenders","parentEffectiveAppenders","log","params","getEffectiveLevel","finalParamIndex","lastParam","messages","loggingEvent","LoggingEvent","callAppenders","effectiveAppenders","doAppend","setLevel","getLevel","logger","group","initiallyExpanded","groupEnd","timers","time","timeEnd","timer","milliseconds","assert","trace","info","fatal","isEnabledFor","isTraceEnabled","isDebugEnabled","isInfoEnabled","isWarnEnabled","isErrorEnabled","isFatalEnabled","isEntryPoint","loggers","loggerNames","ROOT_LOGGER_DEFAULT_LEVEL","rootLogger","getRootLogger","getLogger","loggerName","parentLogger","lastDotIndex","parentLoggerName","substring","defaultLogger","getDefaultLogger","createDefaultLogger","nullLogger","getNullLogger","resetConfiguration","timeStamp","timeStampInMilliseconds","timeStampInSeconds","getMilliseconds","getThrowableStrRep","getCombinedMessages","Layout","loggerKey","timeStampKey","millisecondsKey","levelKey","messageKey","exceptionKey","urlKey","batchHeader","batchFooter","batchSeparator","returnsPostData","overrideTimeStampsSetting","format","ignoresThrowable","getContentType","allowBatching","getTimeStampValue","getDataValues","combineMessages","dataValues","location","href","hasCustomFields","customFields","setKeys","setCustomField","fieldUpdated","formatWithException","formatted","SimpleDateFormat","SimpleLayout","NullLayout","XmlLayout","escapeNewLines","JsonLayout","readable","colon","tab","lineBreak","HttpPostDataLayout","formatObjectExpansion","depth","indentation","objectsExpanded","doFormat","childDepth","childIndentation","childLines","expansion","childExpansion","formatString","lines","j","jLen","PatternLayout","pattern","DEFAULT_CONVERSION_PATTERN","AlertAppender","BrowserConsoleAppender","layout","threshold","append","setLayout","getLayout","setThreshold","getThreshold","isCombinedMessages","escapeCdata","formatMessage","isReadable","formatValue","prefix","expand","formattedValue","valType","childPrefix","queryBits","regex","monthNames","dayNames","types","G","y","M","w","W","D","F","E","a","H","k","K","h","S","Z","newDateAtMidnight","year","month","day","setMilliseconds","getDifference","date","isBefore","getUTCTime","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getTimeSince","getPreviousSunday","midday","previousSunday","getDay","getWeekInYear","minimalDaysInFirstWeek","startOfYear","weekInYear","getWeekInMonth","startOfMonth","weekInMonth","getDayInYear","setMinimalDaysInFirstWeek","days","getMinimalDaysInFirstWeek","padWithZeroes","formatText","data","numberOfLetters","minLength","formatNumber","formattedString","searchString","exec","quotedString","patternLetters","otherLetters","otherCharacters","patternLetter","rawData","getTimezoneOffset","absData","abs","hours","minutes","TTCC_CONVERSION_PATTERN","ISO8601_DATEFORMAT","DATETIME_DATEFORMAT","ABSOLUTETIME_DATEFORMAT","matchedString","padding","truncation","conversionCharacter","specifier","replacement","precision","loggerNameBits","dateFormat","fieldIndex","strLen","consoleMethodName","getFormattedMessage","concatenate","formattedMessage","console","opera","postError","xhrFactory","XMLHttpRequest","xmlHttpFactories","ActiveXObject","withCredentialsSupported","getXmlHttp","errorHandler","xmlHttp","ConsoleAppender","isHttpRequestSuccessful","status","AjaxAppender","withCredentials","isSupported","timed","waitForResponse","batchSize","timerInterval","requestSuccessCallback","failCallback","postVarName","sendAllOnUnload","contentType","sessionId","queuedLoggingEvents","queuedRequests","headers","sending","initialized","checkCanConfigure","configOptionName","sendAll","currentRequestBatch","sendRequest","preparePostData","scheduleSending","sendAllRemaining","sendingAnything","currentLoggingEvent","actualBatchSize","batchedLoggingEvents","formattedMessages","postData","setTimeout","xmlHttpErrorHandler","msg","successCallback","onreadystatechange","readyState","open","header","setRequestHeader","headerEx","send","errMsg","getSessionId","setSessionId","sessionIdParam","layoutParam","isTimed","setTimed","timedParam","getTimerInterval","setTimerInterval","timerIntervalParam","isWaitForResponse","setWaitForResponse","waitForResponseParam","getBatchSize","setBatchSize","batchSizeParam","isSendAllOnUnload","setSendAllOnUnload","sendAllOnUnloadParam","setRequestSuccessCallback","requestSuccessCallbackParam","setFailCallback","failCallbackParam","getPostVarName","setPostVarName","postVarNameParam","getHeaders","addHeader","toLowerCase","oldBeforeUnload","onbeforeunload","setCookie","setTime","toGMTString","getCookie","nameEquals","ca","indexOf","unescape","getBaseUrl","scripts","getElementsByTagName","src","lastSlash","isLoaded","win","loaded","padWithSpaces","spaces","numberOfSpaces","PopUpAppender","defaultCommandLineFunctions","consoleAppenderIdCounter","lazyInit","initiallyMinimized","useDocumentWrite","width","height","focusPopUp","InPageAppender","container","inPage","focusConsoleWindow","consoleWindowCreated","consoleWindowLoaded","consoleClosed","consoleAppenderId","newestMessageAtTop","scrollToLatestMessage","createWindow","safeToAppend","getConsoleWindow","maxMessages","showCommandLine","commandLineObjectExpansionDepth","showHideButton","showCloseButton","appenderName","consoleWindowExists","isNewestMessageAtTop","setNewestMessageAtTop","newestMessageAtTopParam","setNewestAtTop","isScrollToLatestMessage","setScrollToLatestMessage","scrollToLatestMessageParam","setScrollToLatest","getWidth","setWidth","widthParam","getHeight","setHeight","heightParam","getMaxMessages","setMaxMessages","maxMessagesParam","isShowCommandLine","setShowCommandLine","showCommandLineParam","isShowHideButton","setShowHideButton","showHideButtonParam","isShowCloseButton","setShowCloseButton","showCloseButtonParam","getCommandLineObjectExpansionDepth","setCommandLineObjectExpansionDepth","commandLineObjectExpansionDepthParam","minimized","QueuedLoggingEvent","levelName","QueuedGroup","QueuedGroupEnd","isInitiallyMinimized","setInitiallyMinimized","initiallyMinimizedParam","isUseDocumentWrite","setUseDocumentWrite","useDocumentWriteParam","checkAndAppend","reopenWhenClosed","appendQueuedLoggingEvents","focus","clear","clearLog","focusCommandLine","focusSearch","commandWindow","getCommandWindow","setCommandWindow","commandWindowParam","executeLastCommand","evalLastCommand","commandLayout","getCommandLayout","setCommandLayout","commandLayoutParam","evalCommandAndAppend","commandReturnValue","appendResult","commandOutput","execScript","commandLineFunctionsHash","commandLineFunctions","objectsToRestore","addObjectToRestore","addFunctionToWindow","evalExpr","mainLayout","addCommandLineFunction","functionName","commandLineFunction","storeCommandHistory","commandHistory","writeHtml","doc","writeln","close","consoleWindowLoadHandler","setAppender","setMainWindow","storedValue","currentCommandIndex","unload","caller","pollConsoleWindow","windowTest","interval","errorMessage","poll","setInterval","clearInterval","getConsoleUrl","documentDomainSet","domain","hostname","containerElement","cssProperties","addCssProperty","iframeContainerDiv","windowCreationStarted","iframeId","hide","$","blur","style","display","isVisible","fromButton","confirm","parentNode","removeChild","initErrorMessage","finalInit","writeToDocument","appendChild","createElement","border","iframeSrc","innerHTML","iframeDocumentExistsTest","pageLoadHandler","el","getElementById","nodeType","position","left","right","bottom","body","iframe","frames","popUp","useOldPopUp","complainAboutPopUpBlocking","isUseOldPopUp","setUseOldPopUp","useOldPopUpParam","isComplainAboutPopUpBlocking","setComplainAboutPopUpBlocking","complainAboutPopUpBlockingParam","isFocusPopUp","setFocusPopUp","focusPopUpParam","isReopenWhenClosed","setReopenWhenClosed","reopenWhenClosedParam","windowProperties","frameInfo","frameEl","frameElement","tagName","id","windowName","host","checkPopUpClosed","closed","popUpClosedCallback","setCloseIfOpenerCloses","mainPageReloaded","addGlobalCommandLineFunction","showLogEntryDeleteButtons","InlineAppender","dir","maxLen","propList","propVal","propNameStr","nodeTypes","preFormattedElements","emptyElements","getXhtml","rootNode","includeRootNode","startNewLine","preformatted","xhtml","node","getStyleAttributeValue","stylePairs","cssText","styleValue","nameValueBits","props","childNodes","outerHTML","RegExp","$1","hasPrefix","currentAttr","specified","nodeValue","nodeName","hasChildNodes","childStartNewLine","childPreformatted","endTag","lt","trimmedLines","keys","values","expansionDepth","setDocumentReady","attachEvent","oldOnload","onload","evt","hash","origin","pathname","protocol","search","password","username","port","changeQueryParser","objectTypes","root","freeExports","freeModule","freeGlobal","global","self","maxSafeInteger","pow","reOpera","objectProto","capitalize","string","toUpperCase","forOwn","callback","getClassOf","qualify","reduce","array","accumulator","each","ua","context","isCustomContext","nav","userAgent","isSpecialCasedOS","type","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","operamini","operaClass","arch","prerelease","useFeatures","guess","label","guesses","getName","product","getProduct","manufacturer","getManufacturer","os","cleanupOS","getOS","getVersion","patterns","unshift","parseFloat","runtime","flash","system","Capabilities","phantom","major","minor","patch","documentMode","toFixed","lang","System","getProperty","process","browser","versions","electron","nw","appMinorVersion","external","family","architecture","cpuClass","webpackPolyfill","deprecate","paths","_init_","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","loop","direction","autoplay","timelineOffset","defaultTweenSettings","duration","delay","endDelay","easing","round","validTransforms","cache","CSS","springs","minMax","min","stringContains","applyArguments","func","is","isArray","pth","svg","SVGElement","inp","HTMLInputElement","dom","fnc","und","hex","rgb","hsl","col","parseEasingParameters","match","map","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","b","solver","progress","exp","cos","sin","cached","elapsed","rest","steps","ceil","eases","functionEasings","bezier","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","forEach","easeIn","parseEasings","ease","selectString","querySelectorAll","filterArray","thisArg","flattenArray","toArray","NodeList","HTMLCollection","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","target","total","getAttribute","prop","convertPxToUnit","unit","tempEl","parentEl","factor","offsetWidth","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","Map","getTransformValue","propName","defaultVal","getTransformUnit","list","getOriginalTargetValue","getRelativeValue","to","from","operator","u","validateValue","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","getBoundingClientRect","viewBoxAttr","viewBox","getPathProgress","point","offset","getPointAtLength","p0","atan2","decomposeValue","rgx","original","numbers","strings","parseTargets","targets","item","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","v","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","end","isPath","isColor","setProgressValue","css","attribute","setAttribute","manual","last","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","raf","activeInstances","pausedInstances","engine","play","requestAnimationFrame","step","activeInstancesLength","activeInstance","paused","instanceIndex","tick","cancelAnimationFrame","startTime","lastTime","now","childrenLength","resolve","makePromise","instance","promise","Promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","pause","reverse","restart","removeTargetsFromAnimations","targetsArray","hidden","ins","running","childAnimations","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","add","instanceParams","tlIndex","insParams","tlDuration","options","foo","bar","getState","isMobile","ua_name","mobile","vendor","bsFormClearButton","on","nextAll","removeClass","addClass","createDropCap","$p","firstLetter","marginalDropCap","html","logText","defaultOptions","menuOptions","manageDropdownMenu","navbarSticky","eventHandler","action","sendMessage","$getNav","click","preventDefault","hasClass","wrap","postsArr","$postsList","find","firstList","secondList","ListHTML","createHTML","first","after","next","dropDown","megaMenu","closest","prepend","navbarHeighth","outerHeight","scrollTop","animate","slideToggle","nav_bar","container_id","unbind","slideUp","stopPropagation","toggle","wrapInner","$menu","breakPoint","$dropDown","timeoutHandle","navDefaultOptions","navMenuOptions","$getWindow","matchMedia","matches","$getIn","$getOut","menuSelector","xhr_container_id","delayMenuOpen","delay_menu_open","media_breakpoint","off","stop","fadeToggle","fadeOut","hover","$list","eq","fadeIn","clearTimeout","windowHeight","windowWidth","getId","$getHeight","getOffset","top","updateSidebar","user_data","json_message","resolveMacros","updateMacros","jQuery","moduleOptions","dummyOption","callouts","colgroupList","conums","dependencies_met_page_finished","scroll","scrollTo","timeStart","timeElapsed","pageYOffset","opt","tgt","querySelector","decodeURI","distance","documentElement","languages","validateText","validateSourceLanguage","validateTargetLanguage","validateSourceTargetLanguage","validateBeginning","splitSentences","getTranslation","getAlternatives","EOL","validateInputs","validationArray","all","then","validationResults","errors","filter","validationResult","reject","translate","targetLanguage","sourceLanguage","valid","transformSplitSentencesResponse","paragraphs","resolvedSourceLanguage","paragraph","transformTranslationResponse","translatedParagraphs","unique","current","translation","response","target_lang","source_lang","translations","beams","postprocessed_sentence","splitted_texts","texts","lang_is_confident","translateWithAlternatives","beginning","translationAlternatives","detectLanguage","languageCode","languageName","code","wordAlternatives","res","alternatives","alt","request","getRequestOptions","postBody","method","Buffer","byteLength","jsonrpc","jobs","kind","raw_en_sentence","de_sentence_beginning","user_preferred_langs","source_lang_user_selected","priority","getHandleJobsBody","lang_user_selected","getSplitSentencesBody","source_lang_computed","getAlternativesBody","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","TypeError","ArrayBuffer","byteOffset","undefined","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","copy","buffer","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","xhr","responseText","endianness","loadavg","uptime","freemem","totalmem","cpus","release","appVersion","networkInterfaces","getNetworkInterfaces","tmpdir","tmpDir","homedir","define","buildHtml","parseContent","headingsArray","tocbot","BuildHtml","ParseContent","updateTocScroll","supports","destroy","skipRendering","tocSelector","scrollContainer","_scrollListener","_clickListener","customOptions","source","state","scrollSmoothDuration","scrollSmoothOffset","initSmoothScrolling","_buildHtml","_parseContent","selectHeadings","contentSelector","headingSelector","nestedHeadings","nestHeadingsArray","nest","render","throttle","updateToc","disableTocScrollSync","isTop","scrollingElement","eventPhase","currentTarget","scrollEndCallback","throttleTimeout","timeout","event","disableTocAnimation","enableTocAnimation","refresh","fn","scope","deferTimer","ignoreSelector","hasInnerContainers","linkClass","extraLinkClasses","activeLinkClass","listClass","extraListClasses","isCollapsedClass","collapsibleClass","listItemClass","activeListItemClass","collapseDepth","headingsOffset","positionFixedSelector","positionFixedClass","fixedSidebarOffset","includeHtml","onClick","orderedList","headingLabelCallback","ignoreHiddenElements","headingObjectCallback","basePath","currentlyHighlighting","createEl","link","onclick","cloneNode","textContent","createLink","createList","isCollapsed","listElement","classes","srcElement","className","selector","firstChild","posFixedEl","offsetTop","updateFixedSidebarClass","topHeader","headings","heading","getHeadingTopPos","offsetParent","tocLinks","tocLink","tocLis","tocLi","activeTocLink","li","tocLists","nextSibling","removeCollapsedFromParents","element","getLastItem","getHeadingLevel","getHeadingObject","HTMLElement","offsetHeight","headingLevel","prev","curr","currentHeading","lastItem","counter","addNode","selectors","toc","scrollHeight","clientHeight","activeItem","pageUrl","stripHash","jump","tabIndex","language","idx","view_result_link","result_block","title_div","toggleClass","toggle_result_block"],"mappings":"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","file":"template.js","sourcesContent":[" \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"/assets/themes/j1/core/js\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = {\n EN: 'English',\n DE: 'German',\n FR: 'French',\n ES: 'Spanish',\n IT: 'Italian',\n NL: 'Dutch',\n PL: 'Polish',\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/src/template.js\n # J1 Template Javascript Core library\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n #\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* global window */\n\n// -----------------------------------------------------------------------------\n// Import SASS sources for HMR\n// -----------------------------------------------------------------------------\n// import '../100_template_css/scss/theme_uno/components/_footer.scss';\n// import '../100_template_css/theme_uno.css'; // <-- yes, also require (s)css. This is a Webpack thing\n\n// Core Libraries - imported|required from NODE|NPM modules\n// -----------------------------------------------------------------------------\n//\n// Following objects (framework modules) are *conditionaly* forced to be\n// exposed for run-time to the global namespace (window) by WP config\n// file (expose-loader):\n// jQuery\n// Popper ('popper.js/dist/umd/popper', https://github.com/twbs/bootstrap/issues/23381)\n// -----------------------------------------------------------------------------\n\n// Core Utilities (moved to modules)\n// -----------------------------------------------------------------------------\n// Following objects (native node modules) are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.Cookies = require('js-cookie');\nwindow.log4javascript = require('log4javascript');\nwindow.liteURL = require('lite-url');\nwindow.platform = require('platform');\n\n// Core Libraries - build|required from SOURCE\n// -----------------------------------------------------------------------------\n\n// Following source objects|modules are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.j1.adapter = require('./js/adapter/adapter.js');\nwindow.j1.anime = require('./js/anime/anime.js'); // added for fam\nwindow.j1.core = require('./js/core/core.js');\nwindow.j1.core.navigator = require('./js/navigator/navigator.js');\nwindow.j1.core.asciidoctor = require('./js/asciidoctor/asciidoctor.js');\nwindow.j1.core.scrollSmooth = require('./js/scroll-smooth/scroll-smooth.js');\n\nwindow.deeplTranslator = require('./js/deepl-translator');\n\n// window.j1.fam = require('./js/fam/fam.js'); // cannot used until NOT rewritten to jQuery\n\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n//const Bootstrap = require('./js/bootstrap/bootstrap.js');\n//const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js');\nconst J1Tocbot = require('./js/tocbot/tocbot.js');\n//const J1ThemeSwitcher = require('./js/bs_theme_switcher/switcher.js');\n// const J1MmenuLight = require('./js/mmenu-light/mmenu.js');\n\n// Passing log data over Internet|SeeMe (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.log4javascript = require('./js/logger/client/webhook.js');\n\n// BMD Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// window.bootstrapMaterialDesign = require('./js/bmd/js/bmd.js');\n\n// Github Webhooks (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.webhooks = require('./js/webhooks/octokit/client.js');\n\n\n// Test|Custom modules (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1promiseTest = require('./js/custom/test_promises.js');\n// window.j1Example = require('./js/custom/example_module.js');\n\n// BS Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n// const Bootstrap = require('./js/bootstrap/bootstrap.js');\n\n// const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js'); // Buffer Kack\n// const J1Tocbot = require('./js/tocbot/tocbot.js');\n\n// Backstretch (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the namespace of jQuery ($).\n// -----------------------------------------------------------------------------\n// const J1Attics = require('./js/backstretch/backstretch.js');\n\n// Additional Vanilla JS helpers\n// -----------------------------------------------------------------------------\nconst J1AdocResultViewer = require('./js/adoc_result_viewer/view_results.js');\n// const MSIEPolyfills = require('./js/polyfills/ms-ie.js');\n\n// HMR messages (currently NOT used)\n// -----------------------------------------------------------------------------\n// if (module.hot) {\n// var logtext;\n// var stat;\n// var stat=module.hot.status();\n//\n// logtext='[INFO ] [HMR ] [Hot Module Replacement enabled]';\n// console.log(logtext);\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n//\n// module.hot.accept('./template.js', function() {\n// console.log('[HMR] Accepting the updated template.js module!');\n// });\n//\n// module.hot.accept('../100_template_css/theme_uno.scss', function () {\n// console.log('[HMR] Accepting the updated style.css module!');\n// require('../100_template_css/theme_uno.scss')\n// })\n//\n// React to the current status...\n// module.hot.addStatusHandler(status => {\n// stat=module.hot.status();\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n// });\n//}\n\n// -----------------------------------------------------------------------------\n// END\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\r\n * Copyright 2015 Tim Down.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n\r\n(function(factory,root){if(typeof define==\"function\"&&define.amd){define(factory);}else if(typeof module!=\"undefined\"&&typeof exports==\"object\"){module.exports=factory();}else{root.log4javascript=factory();}})(function(){if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}\r\nreturn this.length;};}\r\nif(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}\r\nthis.length=this.length-1;return firstItem;}};}\r\nif(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}\r\nvar itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}\r\nreturn itemsDeleted;};}\r\nfunction isUndefined(obj){return typeof obj==\"undefined\";}\r\nfunction EventSupport(){}\r\nEventSupport.prototype={eventTypes:[],eventListeners:{},setEventTypes:function(eventTypesParam){if(eventTypesParam instanceof Array){this.eventTypes=eventTypesParam;this.eventListeners={};for(var i=0,len=this.eventTypes.length;i<len;i++){this.eventListeners[this.eventTypes[i]]=[];}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: setEventTypes: eventTypes parameter must be an Array\");}},addEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: no event called '\"+eventType+\"'\");}\r\nthis.eventListeners[eventType].push(listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: listener must be a function\");}},removeEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: no event called '\"+eventType+\"'\");}\r\narray_remove(this.eventListeners[eventType],listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: listener must be a function\");}},dispatchEvent:function(eventType,eventArgs){if(array_contains(this.eventTypes,eventType)){var listeners=this.eventListeners[eventType];for(var i=0,len=listeners.length;i<len;i++){listeners[i](this,eventType,eventArgs);}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: dispatchEvent: no event called '\"+eventType+\"'\");}}};var applicationStartDate=new Date();var uniqueId=\"log4javascript_\"+applicationStartDate.getTime()+\"_\"+\r\nMath.floor(Math.random()*100000000);var emptyFunction=function(){};var newLine=\"\\r\\n\";var pageLoaded=false;function Log4JavaScript(){}\r\nLog4JavaScript.prototype=new EventSupport();var log4javascript=new Log4JavaScript();log4javascript.version=\"1.4.13\";log4javascript.edition=\"log4javascript\";function toStr(obj){if(obj&&obj.toString){return obj.toString();}else{return String(obj);}}\r\nfunction getExceptionMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}else{return toStr(ex);}}\r\nfunction getUrlFileName(url){var lastSlashIndex=Math.max(url.lastIndexOf(\"/\"),url.lastIndexOf(\"\\\\\"));return url.substr(lastSlashIndex+1);}\r\nfunction getExceptionStringRep(ex){if(ex){var exStr=\"Exception: \"+getExceptionMessage(ex);try{if(ex.lineNumber){exStr+=\" on line number \"+ex.lineNumber;}\r\nif(ex.fileName){exStr+=\" in file \"+getUrlFileName(ex.fileName);}}catch(localEx){logLog.warn(\"Unable to obtain file and line information for error\");}\r\nif(showStackTraces&&ex.stack){exStr+=newLine+\"Stack trace:\"+newLine+ex.stack;}\r\nreturn exStr;}\r\nreturn null;}\r\nfunction bool(obj){return Boolean(obj);}\r\nfunction trim(str){return str.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\");}\r\nfunction splitIntoLines(text){var text2=text.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");return text2.split(\"\\n\");}\r\nvar urlEncode=(typeof window.encodeURIComponent!=\"undefined\")?function(str){return encodeURIComponent(str);}:function(str){return escape(str).replace(/\\+/g,\"%2B\").replace(/\"/g,\"%22\").replace(/'/g,\"%27\").replace(/\\//g,\"%2F\").replace(/=/g,\"%3D\");};function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}\r\nif(index>=0){arr.splice(index,1);return true;}else{return false;}}\r\nfunction array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}\r\nreturn false;}\r\nfunction extractBooleanFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return bool(param);}}\r\nfunction extractStringFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return String(param);}}\r\nfunction extractIntFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{try{var value=parseInt(param,10);return isNaN(value)?defaultValue:value;}catch(ex){logLog.warn(\"Invalid int param \"+param,ex);return defaultValue;}}}\r\nfunction extractFunctionFromParam(param,defaultValue){if(typeof param==\"function\"){return param;}else{return defaultValue;}}\r\nfunction isError(err){return(err instanceof Error);}\r\nif(!Function.prototype.apply){Function.prototype.apply=function(obj,args){var methodName=\"__apply__\";if(typeof obj[methodName]!=\"undefined\"){methodName+=String(Math.random()).substr(2);}\r\nobj[methodName]=this;var argsStrings=[];for(var i=0,len=args.length;i<len;i++){argsStrings[i]=\"args[\"+i+\"]\";}\r\nvar script=\"obj.\"+methodName+\"(\"+argsStrings.join(\",\")+\")\";var returnValue=eval(script);delete obj[methodName];return returnValue;};}\r\nif(!Function.prototype.call){Function.prototype.call=function(obj){var args=[];for(var i=1,len=arguments.length;i<len;i++){args[i-1]=arguments[i];}\r\nreturn this.apply(obj,args);};}\r\nvar logLog={quietMode:false,debugMessages:[],setQuietMode:function(quietMode){this.quietMode=bool(quietMode);},numberOfErrors:0,alertAllErrors:false,setAlertAllErrors:function(alertAllErrors){this.alertAllErrors=alertAllErrors;},debug:function(message){this.debugMessages.push(message);},displayDebug:function(){alert(this.debugMessages.join(newLine));},warn:function(message,exception){},error:function(message,exception){if(++this.numberOfErrors==1||this.alertAllErrors){if(!this.quietMode){var alertMessage=\"log4javascript error: \"+message;if(exception){alertMessage+=newLine+newLine+\"Original error: \"+getExceptionStringRep(exception);}\r\nalert(alertMessage);}}}};log4javascript.logLog=logLog;log4javascript.setEventTypes([\"load\",\"error\"]);function handleError(message,exception){logLog.error(message,exception);log4javascript.dispatchEvent(\"error\",{\"message\":message,\"exception\":exception});}\r\nlog4javascript.handleError=handleError;var enabled=!((typeof log4javascript_disabled!=\"undefined\")&&log4javascript_disabled);log4javascript.setEnabled=function(enable){enabled=bool(enable);};log4javascript.isEnabled=function(){return enabled;};var useTimeStampsInMilliseconds=true;log4javascript.setTimeStampsInMilliseconds=function(timeStampsInMilliseconds){useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);};log4javascript.isTimeStampsInMilliseconds=function(){return useTimeStampsInMilliseconds;};log4javascript.evalInScope=function(expr){return eval(expr);};var showStackTraces=false;log4javascript.setShowStackTraces=function(show){showStackTraces=bool(show);};var Level=function(level,name){this.level=level;this.name=name;};Level.prototype={toString:function(){return this.name;},equals:function(level){return this.level==level.level;},isGreaterOrEqual:function(level){return this.level>=level.level;}};Level.ALL=new Level(Number.MIN_VALUE,\"ALL\");Level.TRACE=new Level(10000,\"TRACE\");Level.DEBUG=new Level(20000,\"DEBUG\");Level.INFO=new Level(30000,\"INFO\");Level.WARN=new Level(40000,\"WARN\");Level.ERROR=new Level(50000,\"ERROR\");Level.FATAL=new Level(60000,\"FATAL\");Level.OFF=new Level(Number.MAX_VALUE,\"OFF\");log4javascript.Level=Level;function Timer(name,level){this.name=name;this.level=isUndefined(level)?Level.INFO:level;this.start=new Date();}\r\nTimer.prototype.getElapsedTime=function(){return new Date().getTime()-this.start.getTime();};var anonymousLoggerName=\"[anonymous]\";var defaultLoggerName=\"[default]\";var nullLoggerName=\"[null]\";var rootLoggerName=\"root\";function Logger(name){this.name=name;this.parent=null;this.children=[];var appenders=[];var loggerLevel=null;var isRoot=(this.name===rootLoggerName);var isNull=(this.name===nullLoggerName);var appenderCache=null;var appenderCacheInvalidated=false;this.addChild=function(childLogger){this.children.push(childLogger);childLogger.parent=this;childLogger.invalidateAppenderCache();};var additive=true;this.getAdditivity=function(){return additive;};this.setAdditivity=function(additivity){var valueChanged=(additive!=additivity);additive=additivity;if(valueChanged){this.invalidateAppenderCache();}};this.addAppender=function(appender){if(isNull){handleError(\"Logger.addAppender: you may not add an appender to the null logger\");}else{if(appender instanceof log4javascript.Appender){if(!array_contains(appenders,appender)){appenders.push(appender);appender.setAddedToLogger(this);this.invalidateAppenderCache();}}else{handleError(\"Logger.addAppender: appender supplied ('\"+\r\ntoStr(appender)+\"') is not a subclass of Appender\");}}};this.removeAppender=function(appender){array_remove(appenders,appender);appender.setRemovedFromLogger(this);this.invalidateAppenderCache();};this.removeAllAppenders=function(){var appenderCount=appenders.length;if(appenderCount>0){for(var i=0;i<appenderCount;i++){appenders[i].setRemovedFromLogger(this);}\r\nappenders.length=0;this.invalidateAppenderCache();}};this.getEffectiveAppenders=function(){if(appenderCache===null||appenderCacheInvalidated){var parentEffectiveAppenders=(isRoot||!this.getAdditivity())?[]:this.parent.getEffectiveAppenders();appenderCache=parentEffectiveAppenders.concat(appenders);appenderCacheInvalidated=false;}\r\nreturn appenderCache;};this.invalidateAppenderCache=function(){appenderCacheInvalidated=true;for(var i=0,len=this.children.length;i<len;i++){this.children[i].invalidateAppenderCache();}};this.log=function(level,params){if(enabled&&level.isGreaterOrEqual(this.getEffectiveLevel())){var exception;var finalParamIndex=params.length-1;var lastParam=params[finalParamIndex];if(params.length>1&&isError(lastParam)){exception=lastParam;finalParamIndex--;}\r\nvar messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}\r\nvar loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);this.callAppenders(loggingEvent);}};this.callAppenders=function(loggingEvent){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].doAppend(loggingEvent);}};this.setLevel=function(level){if(isRoot&&level===null){handleError(\"Logger.setLevel: you cannot set the level of the root logger to null\");}else if(level instanceof Level){loggerLevel=level;}else{handleError(\"Logger.setLevel: level supplied to logger \"+\r\nthis.name+\" is not an instance of log4javascript.Level\");}};this.getLevel=function(){return loggerLevel;};this.getEffectiveLevel=function(){for(var logger=this;logger!==null;logger=logger.parent){var level=logger.getLevel();if(level!==null){return level;}}};this.group=function(name,initiallyExpanded){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].group(name,initiallyExpanded);}}};this.groupEnd=function(){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].groupEnd();}}};var timers={};this.time=function(name,level){if(enabled){if(isUndefined(name)){handleError(\"Logger.time: a name for the timer must be supplied\");}else if(level&&!(level instanceof Level)){handleError(\"Logger.time: level supplied to timer \"+\r\nname+\" is not an instance of log4javascript.Level\");}else{timers[name]=new Timer(name,level);}}};this.timeEnd=function(name){if(enabled){if(isUndefined(name)){handleError(\"Logger.timeEnd: a name for the timer must be supplied\");}else if(timers[name]){var timer=timers[name];var milliseconds=timer.getElapsedTime();this.log(timer.level,[\"Timer \"+toStr(name)+\" completed in \"+milliseconds+\"ms\"]);delete timers[name];}else{logLog.warn(\"Logger.timeEnd: no timer found with name \"+name);}}};this.assert=function(expr){if(enabled&&!expr){var args=[];for(var i=1,len=arguments.length;i<len;i++){args.push(arguments[i]);}\r\nargs=(args.length>0)?args:[\"Assertion Failure\"];args.push(newLine);args.push(expr);this.log(Level.ERROR,args);}};this.toString=function(){return\"Logger[\"+this.name+\"]\";};}\r\nLogger.prototype={trace:function(){this.log(Level.TRACE,arguments);},debug:function(){this.log(Level.DEBUG,arguments);},info:function(){this.log(Level.INFO,arguments);},warn:function(){this.log(Level.WARN,arguments);},error:function(){this.log(Level.ERROR,arguments);},fatal:function(){this.log(Level.FATAL,arguments);},isEnabledFor:function(level){return level.isGreaterOrEqual(this.getEffectiveLevel());},isTraceEnabled:function(){return this.isEnabledFor(Level.TRACE);},isDebugEnabled:function(){return this.isEnabledFor(Level.DEBUG);},isInfoEnabled:function(){return this.isEnabledFor(Level.INFO);},isWarnEnabled:function(){return this.isEnabledFor(Level.WARN);},isErrorEnabled:function(){return this.isEnabledFor(Level.ERROR);},isFatalEnabled:function(){return this.isEnabledFor(Level.FATAL);}};Logger.prototype.trace.isEntryPoint=true;Logger.prototype.debug.isEntryPoint=true;Logger.prototype.info.isEntryPoint=true;Logger.prototype.warn.isEntryPoint=true;Logger.prototype.error.isEntryPoint=true;Logger.prototype.fatal.isEntryPoint=true;var loggers={};var loggerNames=[];var ROOT_LOGGER_DEFAULT_LEVEL=Level.DEBUG;var rootLogger=new Logger(rootLoggerName);rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);log4javascript.getRootLogger=function(){return rootLogger;};log4javascript.getLogger=function(loggerName){if(typeof loggerName!=\"string\"){loggerName=anonymousLoggerName;logLog.warn(\"log4javascript.getLogger: non-string logger name \"+\r\ntoStr(loggerName)+\" supplied, returning anonymous logger\");}\r\nif(loggerName==rootLoggerName){handleError(\"log4javascript.getLogger: root logger may not be obtained by name\");}\r\nif(!loggers[loggerName]){var logger=new Logger(loggerName);loggers[loggerName]=logger;loggerNames.push(loggerName);var lastDotIndex=loggerName.lastIndexOf(\".\");var parentLogger;if(lastDotIndex>-1){var parentLoggerName=loggerName.substring(0,lastDotIndex);parentLogger=log4javascript.getLogger(parentLoggerName);}else{parentLogger=rootLogger;}\r\nparentLogger.addChild(logger);}\r\nreturn loggers[loggerName];};var defaultLogger=null;log4javascript.getDefaultLogger=function(){if(!defaultLogger){defaultLogger=createDefaultLogger();}\r\nreturn defaultLogger;};var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger(nullLoggerName);nullLogger.setLevel(Level.OFF);}\r\nreturn nullLogger;};log4javascript.resetConfiguration=function(){rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);loggers={};};var LoggingEvent=function(logger,timeStamp,level,messages,exception){this.logger=logger;this.timeStamp=timeStamp;this.timeStampInMilliseconds=timeStamp.getTime();this.timeStampInSeconds=Math.floor(this.timeStampInMilliseconds/1000);this.milliseconds=this.timeStamp.getMilliseconds();this.level=level;this.messages=messages;this.exception=exception;};LoggingEvent.prototype={getThrowableStrRep:function(){return this.exception?getExceptionStringRep(this.exception):\"\";},getCombinedMessages:function(){return(this.messages.length==1)?this.messages[0]:this.messages.join(newLine);},toString:function(){return\"LoggingEvent[\"+this.level+\"]\";}};log4javascript.LoggingEvent=LoggingEvent;var Layout=function(){};Layout.prototype={defaults:{loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\"},loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\",batchHeader:\"\",batchFooter:\"\",batchSeparator:\"\",returnsPostData:false,overrideTimeStampsSetting:false,useTimeStampsInMilliseconds:null,format:function(){handleError(\"Layout.format: layout supplied has no format() method\");},ignoresThrowable:function(){handleError(\"Layout.ignoresThrowable: layout supplied has no ignoresThrowable() method\");},getContentType:function(){return\"text/plain\";},allowBatching:function(){return true;},setTimeStampsInMilliseconds:function(timeStampsInMilliseconds){this.overrideTimeStampsSetting=true;this.useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);},isTimeStampsInMilliseconds:function(){return this.overrideTimeStampsSetting?this.useTimeStampsInMilliseconds:useTimeStampsInMilliseconds;},getTimeStampValue:function(loggingEvent){return this.isTimeStampsInMilliseconds()?loggingEvent.timeStampInMilliseconds:loggingEvent.timeStampInSeconds;},getDataValues:function(loggingEvent,combineMessages){var dataValues=[[this.loggerKey,loggingEvent.logger.name],[this.timeStampKey,this.getTimeStampValue(loggingEvent)],[this.levelKey,loggingEvent.level.name],[this.urlKey,window.location.href],[this.messageKey,combineMessages?loggingEvent.getCombinedMessages():loggingEvent.messages]];if(!this.isTimeStampsInMilliseconds()){dataValues.push([this.millisecondsKey,loggingEvent.milliseconds]);}\r\nif(loggingEvent.exception){dataValues.push([this.exceptionKey,getExceptionStringRep(loggingEvent.exception)]);}\r\nif(this.hasCustomFields()){for(var i=0,len=this.customFields.length;i<len;i++){var val=this.customFields[i].value;if(typeof val===\"function\"){val=val(this,loggingEvent);}\r\ndataValues.push([this.customFields[i].name,val]);}}\r\nreturn dataValues;},setKeys:function(loggerKey,timeStampKey,levelKey,messageKey,exceptionKey,urlKey,millisecondsKey){this.loggerKey=extractStringFromParam(loggerKey,this.defaults.loggerKey);this.timeStampKey=extractStringFromParam(timeStampKey,this.defaults.timeStampKey);this.levelKey=extractStringFromParam(levelKey,this.defaults.levelKey);this.messageKey=extractStringFromParam(messageKey,this.defaults.messageKey);this.exceptionKey=extractStringFromParam(exceptionKey,this.defaults.exceptionKey);this.urlKey=extractStringFromParam(urlKey,this.defaults.urlKey);this.millisecondsKey=extractStringFromParam(millisecondsKey,this.defaults.millisecondsKey);},setCustomField:function(name,value){var fieldUpdated=false;for(var i=0,len=this.customFields.length;i<len;i++){if(this.customFields[i].name===name){this.customFields[i].value=value;fieldUpdated=true;}}\r\nif(!fieldUpdated){this.customFields.push({\"name\":name,\"value\":value});}},hasCustomFields:function(){return(this.customFields.length>0);},formatWithException:function(loggingEvent){var formatted=this.format(loggingEvent);if(loggingEvent.exception&&this.ignoresThrowable()){formatted+=loggingEvent.getThrowableStrRep();}\r\nreturn formatted;},toString:function(){handleError(\"Layout.toString: all layouts must override this method\");}};log4javascript.Layout=Layout;var Appender=function(){};Appender.prototype=new EventSupport();Appender.prototype.layout=new PatternLayout();Appender.prototype.threshold=Level.ALL;Appender.prototype.loggers=[];Appender.prototype.doAppend=function(loggingEvent){if(enabled&&loggingEvent.level.level>=this.threshold.level){this.append(loggingEvent);}};Appender.prototype.append=function(loggingEvent){};Appender.prototype.setLayout=function(layout){if(layout instanceof Layout){this.layout=layout;}else{handleError(\"Appender.setLayout: layout supplied to \"+\r\nthis.toString()+\" is not a subclass of Layout\");}};Appender.prototype.getLayout=function(){return this.layout;};Appender.prototype.setThreshold=function(threshold){if(threshold instanceof Level){this.threshold=threshold;}else{handleError(\"Appender.setThreshold: threshold supplied to \"+\r\nthis.toString()+\" is not a subclass of Level\");}};Appender.prototype.getThreshold=function(){return this.threshold;};Appender.prototype.setAddedToLogger=function(logger){this.loggers.push(logger);};Appender.prototype.setRemovedFromLogger=function(logger){array_remove(this.loggers,logger);};Appender.prototype.group=emptyFunction;Appender.prototype.groupEnd=emptyFunction;Appender.prototype.toString=function(){handleError(\"Appender.toString: all appenders must override this method\");};log4javascript.Appender=Appender;function SimpleLayout(){this.customFields=[];}\r\nSimpleLayout.prototype=new Layout();SimpleLayout.prototype.format=function(loggingEvent){return loggingEvent.level.name+\" - \"+loggingEvent.getCombinedMessages();};SimpleLayout.prototype.ignoresThrowable=function(){return true;};SimpleLayout.prototype.toString=function(){return\"SimpleLayout\";};log4javascript.SimpleLayout=SimpleLayout;function NullLayout(){this.customFields=[];}\r\nNullLayout.prototype=new Layout();NullLayout.prototype.format=function(loggingEvent){return loggingEvent.messages;};NullLayout.prototype.ignoresThrowable=function(){return true;};NullLayout.prototype.formatWithException=function(loggingEvent){var messages=loggingEvent.messages,ex=loggingEvent.exception;return ex?messages.concat([ex]):messages;};NullLayout.prototype.toString=function(){return\"NullLayout\";};log4javascript.NullLayout=NullLayout;function XmlLayout(combineMessages){this.combineMessages=extractBooleanFromParam(combineMessages,true);this.customFields=[];}\r\nXmlLayout.prototype=new Layout();XmlLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};XmlLayout.prototype.getContentType=function(){return\"text/xml\";};XmlLayout.prototype.escapeCdata=function(str){return str.replace(/\\]\\]>/,\"]]>]]><![CDATA[\");};XmlLayout.prototype.format=function(loggingEvent){var layout=this;var i,len;function formatMessage(message){message=(typeof message===\"string\")?message:toStr(message);return\"<log4javascript:message><![CDATA[\"+\r\nlayout.escapeCdata(message)+\"]]></log4javascript:message>\";}\r\nvar str=\"<log4javascript:event logger=\\\"\"+loggingEvent.logger.name+\"\\\" timestamp=\\\"\"+this.getTimeStampValue(loggingEvent)+\"\\\"\";if(!this.isTimeStampsInMilliseconds()){str+=\" milliseconds=\\\"\"+loggingEvent.milliseconds+\"\\\"\";}\r\nstr+=\" level=\\\"\"+loggingEvent.level.name+\"\\\">\"+newLine;if(this.combineMessages){str+=formatMessage(loggingEvent.getCombinedMessages());}else{str+=\"<log4javascript:messages>\"+newLine;for(i=0,len=loggingEvent.messages.length;i<len;i++){str+=formatMessage(loggingEvent.messages[i])+newLine;}\r\nstr+=\"</log4javascript:messages>\"+newLine;}\r\nif(this.hasCustomFields()){for(i=0,len=this.customFields.length;i<len;i++){str+=\"<log4javascript:customfield name=\\\"\"+\r\nthis.customFields[i].name+\"\\\"><![CDATA[\"+\r\nthis.customFields[i].value.toString()+\"]]></log4javascript:customfield>\"+newLine;}}\r\nif(loggingEvent.exception){str+=\"<log4javascript:exception><![CDATA[\"+\r\ngetExceptionStringRep(loggingEvent.exception)+\"]]></log4javascript:exception>\"+newLine;}\r\nstr+=\"</log4javascript:event>\"+newLine+newLine;return str;};XmlLayout.prototype.ignoresThrowable=function(){return false;};XmlLayout.prototype.toString=function(){return\"XmlLayout\";};log4javascript.XmlLayout=XmlLayout;function escapeNewLines(str){return str.replace(/\\r\\n|\\r|\\n/g,\"\\\\r\\\\n\");}\r\nfunction JsonLayout(readable,combineMessages){this.readable=extractBooleanFromParam(readable,false);this.combineMessages=extractBooleanFromParam(combineMessages,true);this.batchHeader=this.readable?\"[\"+newLine:\"[\";this.batchFooter=this.readable?\"]\"+newLine:\"]\";this.batchSeparator=this.readable?\",\"+newLine:\",\";this.setKeys();this.colon=this.readable?\": \":\":\";this.tab=this.readable?\"\\t\":\"\";this.lineBreak=this.readable?newLine:\"\";this.customFields=[];}\r\nJsonLayout.prototype=new Layout();JsonLayout.prototype.isReadable=function(){return this.readable;};JsonLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};JsonLayout.prototype.format=function(loggingEvent){var layout=this;var dataValues=this.getDataValues(loggingEvent,this.combineMessages);var str=\"{\"+this.lineBreak;var i,len;function formatValue(val,prefix,expand){var formattedValue;var valType=typeof val;if(val instanceof Date){formattedValue=String(val.getTime());}else if(expand&&(val instanceof Array)){formattedValue=\"[\"+layout.lineBreak;for(var i=0,len=val.length;i<len;i++){var childPrefix=prefix+layout.tab;formattedValue+=childPrefix+formatValue(val[i],childPrefix,false);if(i<val.length-1){formattedValue+=\",\";}\r\nformattedValue+=layout.lineBreak;}\r\nformattedValue+=prefix+\"]\";}else if(valType!==\"number\"&&valType!==\"boolean\"){formattedValue=\"\\\"\"+escapeNewLines(toStr(val).replace(/\\\"/g,\"\\\\\\\"\"))+\"\\\"\";}else{formattedValue=val;}\r\nreturn formattedValue;}\r\nfor(i=0,len=dataValues.length-1;i<=len;i++){str+=this.tab+\"\\\"\"+dataValues[i][0]+\"\\\"\"+this.colon+formatValue(dataValues[i][1],this.tab,true);if(i<len){str+=\",\";}\r\nstr+=this.lineBreak;}\r\nstr+=\"}\"+this.lineBreak;return str;};JsonLayout.prototype.ignoresThrowable=function(){return false;};JsonLayout.prototype.toString=function(){return\"JsonLayout\";};JsonLayout.prototype.getContentType=function(){return\"application/json\";};log4javascript.JsonLayout=JsonLayout;function HttpPostDataLayout(){this.setKeys();this.customFields=[];this.returnsPostData=true;}\r\nHttpPostDataLayout.prototype=new Layout();HttpPostDataLayout.prototype.allowBatching=function(){return false;};HttpPostDataLayout.prototype.format=function(loggingEvent){var dataValues=this.getDataValues(loggingEvent);var queryBits=[];for(var i=0,len=dataValues.length;i<len;i++){var val=(dataValues[i][1]instanceof Date)?String(dataValues[i][1].getTime()):dataValues[i][1];queryBits.push(urlEncode(dataValues[i][0])+\"=\"+urlEncode(val));}\r\nreturn queryBits.join(\"&\");};HttpPostDataLayout.prototype.ignoresThrowable=function(loggingEvent){return false;};HttpPostDataLayout.prototype.toString=function(){return\"HttpPostDataLayout\";};log4javascript.HttpPostDataLayout=HttpPostDataLayout;function formatObjectExpansion(obj,depth,indentation){var objectsExpanded=[];function doFormat(obj,depth,indentation){var i,len,childDepth,childIndentation,childLines,expansion,childExpansion;if(!indentation){indentation=\"\";}\r\nfunction formatString(text){var lines=splitIntoLines(text);for(var j=1,jLen=lines.length;j<jLen;j++){lines[j]=indentation+lines[j];}\r\nreturn lines.join(newLine);}\r\nif(obj===null){return\"null\";}else if(typeof obj==\"undefined\"){return\"undefined\";}else if(typeof obj==\"string\"){return formatString(obj);}else if(typeof obj==\"object\"&&array_contains(objectsExpanded,obj)){try{expansion=toStr(obj);}catch(ex){expansion=\"Error formatting property. Details: \"+getExceptionStringRep(ex);}\r\nreturn expansion+\" [already expanded]\";}else if((obj instanceof Array)&&depth>0){objectsExpanded.push(obj);expansion=\"[\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i=0,len=obj.length;i<len;i++){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+childExpansion);}catch(ex){childLines.push(childIndentation+\"Error formatting array member. Details: \"+\r\ngetExceptionStringRep(ex)+\"\");}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"]\";return expansion;}else if(Object.prototype.toString.call(obj)==\"[object Date]\"){return obj.toString();}else if(typeof obj==\"object\"&&depth>0){objectsExpanded.push(obj);expansion=\"{\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i in obj){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+i+\": \"+childExpansion);}catch(ex){childLines.push(childIndentation+i+\": Error formatting property. Details: \"+\r\ngetExceptionStringRep(ex));}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"}\";return expansion;}else{return formatString(toStr(obj));}}\r\nreturn doFormat(obj,depth,indentation);}\r\nvar SimpleDateFormat;(function(){var regex=/('[^']*')|(G+|y+|M+|w+|W+|D+|d+|F+|E+|a+|H+|k+|K+|h+|m+|s+|S+|Z+)|([a-zA-Z]+)|([^a-zA-Z']+)/;var monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];var dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var TEXT2=0,TEXT3=1,NUMBER=2,YEAR=3,MONTH=4,TIMEZONE=5;var types={G:TEXT2,y:YEAR,M:MONTH,w:NUMBER,W:NUMBER,D:NUMBER,d:NUMBER,F:NUMBER,E:TEXT3,a:TEXT2,H:NUMBER,k:NUMBER,K:NUMBER,h:NUMBER,m:NUMBER,s:NUMBER,S:NUMBER,Z:TIMEZONE};var ONE_DAY=24*60*60*1000;var ONE_WEEK=7*ONE_DAY;var DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK=1;var newDateAtMidnight=function(year,month,day){var d=new Date(year,month,day,0,0,0);d.setMilliseconds(0);return d;};Date.prototype.getDifference=function(date){return this.getTime()-date.getTime();};Date.prototype.isBefore=function(d){return this.getTime()<d.getTime();};Date.prototype.getUTCTime=function(){return Date.UTC(this.getFullYear(),this.getMonth(),this.getDate(),this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds());};Date.prototype.getTimeSince=function(d){return this.getUTCTime()-d.getUTCTime();};Date.prototype.getPreviousSunday=function(){var midday=new Date(this.getFullYear(),this.getMonth(),this.getDate(),12,0,0);var previousSunday=new Date(midday.getTime()-this.getDay()*ONE_DAY);return newDateAtMidnight(previousSunday.getFullYear(),previousSunday.getMonth(),previousSunday.getDate());};Date.prototype.getWeekInYear=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);var numberOfSundays=previousSunday.isBefore(startOfYear)?0:1+Math.floor(previousSunday.getTimeSince(startOfYear)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfYear.getDay();var weekInYear=numberOfSundays;if(numberOfDaysInFirstWeek<minimalDaysInFirstWeek){weekInYear--;}\r\nreturn weekInYear;};Date.prototype.getWeekInMonth=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfMonth=newDateAtMidnight(this.getFullYear(),this.getMonth(),1);var numberOfSundays=previousSunday.isBefore(startOfMonth)?0:1+Math.floor(previousSunday.getTimeSince(startOfMonth)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfMonth.getDay();var weekInMonth=numberOfSundays;if(numberOfDaysInFirstWeek>=minimalDaysInFirstWeek){weekInMonth++;}\r\nreturn weekInMonth;};Date.prototype.getDayInYear=function(){var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);return 1+Math.floor(this.getTimeSince(startOfYear)/ONE_DAY);};SimpleDateFormat=function(formatString){this.formatString=formatString;};SimpleDateFormat.prototype.setMinimalDaysInFirstWeek=function(days){this.minimalDaysInFirstWeek=days;};SimpleDateFormat.prototype.getMinimalDaysInFirstWeek=function(){return isUndefined(this.minimalDaysInFirstWeek)?DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK:this.minimalDaysInFirstWeek;};var padWithZeroes=function(str,len){while(str.length<len){str=\"0\"+str;}\r\nreturn str;};var formatText=function(data,numberOfLetters,minLength){return(numberOfLetters>=4)?data:data.substr(0,Math.max(minLength,numberOfLetters));};var formatNumber=function(data,numberOfLetters){var dataString=\"\"+data;return padWithZeroes(dataString,numberOfLetters);};SimpleDateFormat.prototype.format=function(date){var formattedString=\"\";var result;var searchString=this.formatString;while((result=regex.exec(searchString))){var quotedString=result[1];var patternLetters=result[2];var otherLetters=result[3];var otherCharacters=result[4];if(quotedString){if(quotedString==\"''\"){formattedString+=\"'\";}else{formattedString+=quotedString.substring(1,quotedString.length-1);}}else if(otherLetters){}else if(otherCharacters){formattedString+=otherCharacters;}else if(patternLetters){var patternLetter=patternLetters.charAt(0);var numberOfLetters=patternLetters.length;var rawData=\"\";switch(patternLetter){case\"G\":rawData=\"AD\";break;case\"y\":rawData=date.getFullYear();break;case\"M\":rawData=date.getMonth();break;case\"w\":rawData=date.getWeekInYear(this.getMinimalDaysInFirstWeek());break;case\"W\":rawData=date.getWeekInMonth(this.getMinimalDaysInFirstWeek());break;case\"D\":rawData=date.getDayInYear();break;case\"d\":rawData=date.getDate();break;case\"F\":rawData=1+Math.floor((date.getDate()-1)/7);break;case\"E\":rawData=dayNames[date.getDay()];break;case\"a\":rawData=(date.getHours()>=12)?\"PM\":\"AM\";break;case\"H\":rawData=date.getHours();break;case\"k\":rawData=date.getHours()||24;break;case\"K\":rawData=date.getHours()%12;break;case\"h\":rawData=(date.getHours()%12)||12;break;case\"m\":rawData=date.getMinutes();break;case\"s\":rawData=date.getSeconds();break;case\"S\":rawData=date.getMilliseconds();break;case\"Z\":rawData=date.getTimezoneOffset();break;}\r\nswitch(types[patternLetter]){case TEXT2:formattedString+=formatText(rawData,numberOfLetters,2);break;case TEXT3:formattedString+=formatText(rawData,numberOfLetters,3);break;case NUMBER:formattedString+=formatNumber(rawData,numberOfLetters);break;case YEAR:if(numberOfLetters<=3){var dataString=\"\"+rawData;formattedString+=dataString.substr(2,2);}else{formattedString+=formatNumber(rawData,numberOfLetters);}\r\nbreak;case MONTH:if(numberOfLetters>=3){formattedString+=formatText(monthNames[rawData],numberOfLetters,numberOfLetters);}else{formattedString+=formatNumber(rawData+1,numberOfLetters);}\r\nbreak;case TIMEZONE:var isPositive=(rawData>0);var prefix=isPositive?\"-\":\"+\";var absData=Math.abs(rawData);var hours=\"\"+Math.floor(absData/60);hours=padWithZeroes(hours,2);var minutes=\"\"+(absData%60);minutes=padWithZeroes(minutes,2);formattedString+=prefix+hours+minutes;break;}}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};})();log4javascript.SimpleDateFormat=SimpleDateFormat;function PatternLayout(pattern){if(pattern){this.pattern=pattern;}else{this.pattern=PatternLayout.DEFAULT_CONVERSION_PATTERN;}\r\nthis.customFields=[];}\r\nPatternLayout.TTCC_CONVERSION_PATTERN=\"%r %p %c - %m%n\";PatternLayout.DEFAULT_CONVERSION_PATTERN=\"%m%n\";PatternLayout.ISO8601_DATEFORMAT=\"yyyy-MM-dd HH:mm:ss,SSS\";PatternLayout.DATETIME_DATEFORMAT=\"dd MMM yyyy HH:mm:ss,SSS\";PatternLayout.ABSOLUTETIME_DATEFORMAT=\"HH:mm:ss,SSS\";PatternLayout.prototype=new Layout();PatternLayout.prototype.format=function(loggingEvent){var regex=/%(-?[0-9]+)?(\\.?[0-9]+)?([acdfmMnpr%])(\\{([^\\}]+)\\})?|([^%]+)/;var formattedString=\"\";var result;var searchString=this.pattern;while((result=regex.exec(searchString))){var matchedString=result[0];var padding=result[1];var truncation=result[2];var conversionCharacter=result[3];var specifier=result[5];var text=result[6];if(text){formattedString+=\"\"+text;}else{var replacement=\"\";switch(conversionCharacter){case\"a\":case\"m\":var depth=0;if(specifier){depth=parseInt(specifier,10);if(isNaN(depth)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character '\"+conversionCharacter+\"' - should be a number\");depth=0;}}\r\nvar messages=(conversionCharacter===\"a\")?loggingEvent.messages[0]:loggingEvent.messages;for(var i=0,len=messages.length;i<len;i++){if(i>0&&(replacement.charAt(replacement.length-1)!==\" \")){replacement+=\" \";}\r\nif(depth===0){replacement+=messages[i];}else{replacement+=formatObjectExpansion(messages[i],depth);}}\r\nbreak;case\"c\":var loggerName=loggingEvent.logger.name;if(specifier){var precision=parseInt(specifier,10);var loggerNameBits=loggingEvent.logger.name.split(\".\");if(precision>=loggerNameBits.length){replacement=loggerName;}else{replacement=loggerNameBits.slice(loggerNameBits.length-precision).join(\".\");}}else{replacement=loggerName;}\r\nbreak;case\"d\":var dateFormat=PatternLayout.ISO8601_DATEFORMAT;if(specifier){dateFormat=specifier;if(dateFormat==\"ISO8601\"){dateFormat=PatternLayout.ISO8601_DATEFORMAT;}else if(dateFormat==\"ABSOLUTE\"){dateFormat=PatternLayout.ABSOLUTETIME_DATEFORMAT;}else if(dateFormat==\"DATE\"){dateFormat=PatternLayout.DATETIME_DATEFORMAT;}}\r\nreplacement=(new SimpleDateFormat(dateFormat)).format(loggingEvent.timeStamp);break;case\"f\":if(this.hasCustomFields()){var fieldIndex=0;if(specifier){fieldIndex=parseInt(specifier,10);if(isNaN(fieldIndex)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - should be a number\");}else if(fieldIndex===0){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - must be greater than zero\");}else if(fieldIndex>this.customFields.length){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - there aren't that many custom fields\");}else{fieldIndex=fieldIndex-1;}}\r\nvar val=this.customFields[fieldIndex].value;if(typeof val==\"function\"){val=val(this,loggingEvent);}\r\nreplacement=val;}\r\nbreak;case\"n\":replacement=newLine;break;case\"p\":replacement=loggingEvent.level.name;break;case\"r\":replacement=\"\"+loggingEvent.timeStamp.getDifference(applicationStartDate);break;case\"%\":replacement=\"%\";break;default:replacement=matchedString;break;}\r\nvar l;if(truncation){l=parseInt(truncation.substr(1),10);var strLen=replacement.length;if(l<strLen){replacement=replacement.substring(strLen-l,strLen);}}\r\nif(padding){if(padding.charAt(0)==\"-\"){l=parseInt(padding.substr(1),10);while(replacement.length<l){replacement+=\" \";}}else{l=parseInt(padding,10);while(replacement.length<l){replacement=\" \"+replacement;}}}\r\nformattedString+=replacement;}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};PatternLayout.prototype.ignoresThrowable=function(){return true;};PatternLayout.prototype.toString=function(){return\"PatternLayout\";};log4javascript.PatternLayout=PatternLayout;function AlertAppender(){}\r\nAlertAppender.prototype=new Appender();AlertAppender.prototype.layout=new SimpleLayout();AlertAppender.prototype.append=function(loggingEvent){alert(this.getLayout().formatWithException(loggingEvent));};AlertAppender.prototype.toString=function(){return\"AlertAppender\";};log4javascript.AlertAppender=AlertAppender;function BrowserConsoleAppender(){}\r\nBrowserConsoleAppender.prototype=new log4javascript.Appender();BrowserConsoleAppender.prototype.layout=new NullLayout();BrowserConsoleAppender.prototype.threshold=Level.DEBUG;BrowserConsoleAppender.prototype.append=function(loggingEvent){var appender=this;var getFormattedMessage=function(concatenate){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);return(typeof formattedMessage==\"string\")?(concatenate?formattedMessage:[formattedMessage]):(concatenate?formattedMessage.join(\" \"):formattedMessage);};var console=window.console;if(console&&console.log){var consoleMethodName;if(console.debug&&Level.DEBUG.isGreaterOrEqual(loggingEvent.level)){consoleMethodName=\"debug\";}else if(console.info&&Level.INFO.equals(loggingEvent.level)){consoleMethodName=\"info\";}else if(console.warn&&Level.WARN.equals(loggingEvent.level)){consoleMethodName=\"warn\";}else if(console.error&&loggingEvent.level.isGreaterOrEqual(Level.ERROR)){consoleMethodName=\"error\";}else{consoleMethodName=\"log\";}\r\nif(typeof console[consoleMethodName].apply==\"function\"){console[consoleMethodName].apply(console,getFormattedMessage(false));}else{console[consoleMethodName](getFormattedMessage(true));}}else if((typeof opera!=\"undefined\")&&opera.postError){opera.postError(getFormattedMessage(true));}};BrowserConsoleAppender.prototype.group=function(name){if(window.console&&window.console.group){window.console.group(name);}};BrowserConsoleAppender.prototype.groupEnd=function(){if(window.console&&window.console.groupEnd){window.console.groupEnd();}};BrowserConsoleAppender.prototype.toString=function(){return\"BrowserConsoleAppender\";};log4javascript.BrowserConsoleAppender=BrowserConsoleAppender;var xhrFactory=function(){return new XMLHttpRequest();};var xmlHttpFactories=[xhrFactory,function(){return new ActiveXObject(\"Msxml2.XMLHTTP\");},function(){return new ActiveXObject(\"Microsoft.XMLHTTP\");}];var withCredentialsSupported=false;var getXmlHttp=function(errorHandler){var xmlHttp=null,factory;for(var i=0,len=xmlHttpFactories.length;i<len;i++){factory=xmlHttpFactories[i];try{xmlHttp=factory();withCredentialsSupported=(factory==xhrFactory&&(\"withCredentials\"in xmlHttp));getXmlHttp=factory;return xmlHttp;}catch(e){}}\r\nif(errorHandler){errorHandler();}else{handleError(\"getXmlHttp: unable to obtain XMLHttpRequest object\");}};function isHttpRequestSuccessful(xmlHttp){return isUndefined(xmlHttp.status)||xmlHttp.status===0||(xmlHttp.status>=200&&xmlHttp.status<300)||xmlHttp.status==1223;}\r\nfunction AjaxAppender(url,withCredentials){var appender=this;var isSupported=true;if(!url){handleError(\"AjaxAppender: URL must be specified in constructor\");isSupported=false;}\r\nvar timed=this.defaults.timed;var waitForResponse=this.defaults.waitForResponse;var batchSize=this.defaults.batchSize;var timerInterval=this.defaults.timerInterval;var requestSuccessCallback=this.defaults.requestSuccessCallback;var failCallback=this.defaults.failCallback;var postVarName=this.defaults.postVarName;var sendAllOnUnload=this.defaults.sendAllOnUnload;var contentType=this.defaults.contentType;var sessionId=null;var queuedLoggingEvents=[];var queuedRequests=[];var headers=[];var sending=false;var initialized=false;function checkCanConfigure(configOptionName){if(initialized){handleError(\"AjaxAppender: configuration option '\"+\r\nconfigOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;}\r\nthis.getSessionId=function(){return sessionId;};this.setSessionId=function(sessionIdParam){sessionId=extractStringFromParam(sessionIdParam,null);this.layout.setCustomField(\"sessionid\",sessionId);};this.setLayout=function(layoutParam){if(checkCanConfigure(\"layout\")){this.layout=layoutParam;if(sessionId!==null){this.setSessionId(sessionId);}}};this.isTimed=function(){return timed;};this.setTimed=function(timedParam){if(checkCanConfigure(\"timed\")){timed=bool(timedParam);}};this.getTimerInterval=function(){return timerInterval;};this.setTimerInterval=function(timerIntervalParam){if(checkCanConfigure(\"timerInterval\")){timerInterval=extractIntFromParam(timerIntervalParam,timerInterval);}};this.isWaitForResponse=function(){return waitForResponse;};this.setWaitForResponse=function(waitForResponseParam){if(checkCanConfigure(\"waitForResponse\")){waitForResponse=bool(waitForResponseParam);}};this.getBatchSize=function(){return batchSize;};this.setBatchSize=function(batchSizeParam){if(checkCanConfigure(\"batchSize\")){batchSize=extractIntFromParam(batchSizeParam,batchSize);}};this.isSendAllOnUnload=function(){return sendAllOnUnload;};this.setSendAllOnUnload=function(sendAllOnUnloadParam){if(checkCanConfigure(\"sendAllOnUnload\")){sendAllOnUnload=extractBooleanFromParam(sendAllOnUnloadParam,sendAllOnUnload);}};this.setRequestSuccessCallback=function(requestSuccessCallbackParam){requestSuccessCallback=extractFunctionFromParam(requestSuccessCallbackParam,requestSuccessCallback);};this.setFailCallback=function(failCallbackParam){failCallback=extractFunctionFromParam(failCallbackParam,failCallback);};this.getPostVarName=function(){return postVarName;};this.setPostVarName=function(postVarNameParam){if(checkCanConfigure(\"postVarName\")){postVarName=extractStringFromParam(postVarNameParam,postVarName);}};this.getHeaders=function(){return headers;};this.addHeader=function(name,value){if(name.toLowerCase()==\"content-type\"){contentType=value;}else{headers.push({name:name,value:value});}};function sendAll(){if(isSupported&&enabled){sending=true;var currentRequestBatch;if(waitForResponse){if(queuedRequests.length>0){currentRequestBatch=queuedRequests.shift();sendRequest(preparePostData(currentRequestBatch),sendAll);}else{sending=false;if(timed){scheduleSending();}}}else{while((currentRequestBatch=queuedRequests.shift())){sendRequest(preparePostData(currentRequestBatch));}\r\nsending=false;if(timed){scheduleSending();}}}}\r\nthis.sendAll=sendAll;function sendAllRemaining(){var sendingAnything=false;if(isSupported&&enabled){var actualBatchSize=appender.getLayout().allowBatching()?batchSize:1;var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);if(queuedLoggingEvents.length>=actualBatchSize){queuedRequests.push(batchedLoggingEvents);batchedLoggingEvents=[];}}\r\nif(batchedLoggingEvents.length>0){queuedRequests.push(batchedLoggingEvents);}\r\nsendingAnything=(queuedRequests.length>0);waitForResponse=false;timed=false;sendAll();}\r\nreturn sendingAnything;}\r\nthis.sendAllRemaining=sendAllRemaining;function preparePostData(batchedLoggingEvents){var formattedMessages=[];var currentLoggingEvent;var postData=\"\";while((currentLoggingEvent=batchedLoggingEvents.shift())){formattedMessages.push(appender.getLayout().formatWithException(currentLoggingEvent));}\r\nif(batchedLoggingEvents.length==1){postData=formattedMessages.join(\"\");}else{postData=appender.getLayout().batchHeader+\r\nformattedMessages.join(appender.getLayout().batchSeparator)+\r\nappender.getLayout().batchFooter;}\r\nif(contentType==appender.defaults.contentType){postData=appender.getLayout().returnsPostData?postData:urlEncode(postVarName)+\"=\"+urlEncode(postData);if(postData.length>0){postData+=\"&\";}\r\npostData+=\"layout=\"+urlEncode(appender.getLayout().toString());}\r\nreturn postData;}\r\nfunction scheduleSending(){window.setTimeout(sendAll,timerInterval);}\r\nfunction xmlHttpErrorHandler(){var msg=\"AjaxAppender: could not create XMLHttpRequest object. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}}\r\nfunction sendRequest(postData,successCallback){try{var xmlHttp=getXmlHttp(xmlHttpErrorHandler);if(isSupported){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(isHttpRequestSuccessful(xmlHttp)){if(requestSuccessCallback){requestSuccessCallback(xmlHttp);}\r\nif(successCallback){successCallback(xmlHttp);}}else{var msg=\"AjaxAppender.append: XMLHttpRequest request to URL \"+\r\nurl+\" returned status code \"+xmlHttp.status;handleError(msg);if(failCallback){failCallback(msg);}}\r\nxmlHttp.onreadystatechange=emptyFunction;xmlHttp=null;}};xmlHttp.open(\"POST\",url,true);if(withCredentials&&withCredentialsSupported){xmlHttp.withCredentials=true;}\r\ntry{for(var i=0,header;header=headers[i++];){xmlHttp.setRequestHeader(header.name,header.value);}\r\nxmlHttp.setRequestHeader(\"Content-Type\",contentType);}catch(headerEx){var msg=\"AjaxAppender.append: your browser's XMLHttpRequest implementation\"+\" does not support setRequestHeader, therefore cannot post data. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}\r\nreturn;}\r\nxmlHttp.send(postData);}}catch(ex){var errMsg=\"AjaxAppender.append: error sending log message to \"+url;handleError(errMsg,ex);isSupported=false;if(failCallback){failCallback(errMsg+\". Details: \"+getExceptionStringRep(ex));}}}\r\nthis.append=function(loggingEvent){if(isSupported){if(!initialized){init();}\r\nqueuedLoggingEvents.push(loggingEvent);var actualBatchSize=this.getLayout().allowBatching()?batchSize:1;if(queuedLoggingEvents.length>=actualBatchSize){var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);}\r\nqueuedRequests.push(batchedLoggingEvents);if(!timed&&(!waitForResponse||(waitForResponse&&!sending))){sendAll();}}}};function init(){initialized=true;if(sendAllOnUnload){var oldBeforeUnload=window.onbeforeunload;window.onbeforeunload=function(){if(oldBeforeUnload){oldBeforeUnload();}\r\nsendAllRemaining();};}\r\nif(timed){scheduleSending();}}}\r\nAjaxAppender.prototype=new Appender();AjaxAppender.prototype.defaults={waitForResponse:false,timed:false,timerInterval:1000,batchSize:1,sendAllOnUnload:false,requestSuccessCallback:null,failCallback:null,postVarName:\"data\",contentType:\"application/x-www-form-urlencoded\"};AjaxAppender.prototype.layout=new HttpPostDataLayout();AjaxAppender.prototype.toString=function(){return\"AjaxAppender\";};log4javascript.AjaxAppender=AjaxAppender;function setCookie(name,value,days,path){var expires;path=path?\"; path=\"+path:\"\";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires=\"; expires=\"+date.toGMTString();}else{expires=\"\";}\r\ndocument.cookie=escape(name)+\"=\"+escape(value)+expires+path;}\r\nfunction getCookie(name){var nameEquals=escape(name)+\"=\";var ca=document.cookie.split(\";\");for(var i=0,len=ca.length;i<len;i++){var c=ca[i];while(c.charAt(0)===\" \"){c=c.substring(1,c.length);}\r\nif(c.indexOf(nameEquals)===0){return unescape(c.substring(nameEquals.length,c.length));}}\r\nreturn null;}\r\nfunction getBaseUrl(){var scripts=document.getElementsByTagName(\"script\");for(var i=0,len=scripts.length;i<len;++i){if(scripts[i].src.indexOf(\"log4javascript\")!=-1){var lastSlash=scripts[i].src.lastIndexOf(\"/\");return(lastSlash==-1)?\"\":scripts[i].src.substr(0,lastSlash+1);}}\r\nreturn null;}\r\nfunction isLoaded(win){try{return bool(win.loaded);}catch(ex){return false;}}\r\nvar ConsoleAppender;(function(){var getConsoleHtmlLines=function(){return['<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">','<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">','<head>','<title>log4javascript</title>','<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />','<!-- Make IE8 behave like IE7, having gone to all the trouble of making IE work -->','<meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\" />','<script type=\"text/javascript\">var isIe = false, isIePre7 = false;</script>','<!--[if IE]><script type=\"text/javascript\">isIe = true</script><![endif]-->','<!--[if lt IE 7]><script type=\"text/javascript\">isIePre7 = true</script><![endif]-->','<script type=\"text/javascript\">','//<![CDATA[','var loggingEnabled=true;var logQueuedEventsTimer=null;var logEntries=[];var logEntriesAndSeparators=[];var logItems=[];var renderDelay=100;var unrenderedLogItemsExist=false;var rootGroup,currentGroup=null;var loaded=false;var currentLogItem=null;var logMainContainer;function copyProperties(obj,props){for(var i in props){obj[i]=props[i];}}','function LogItem(){}','LogItem.prototype={mainContainer:null,wrappedContainer:null,unwrappedContainer:null,group:null,appendToLog:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].appendToLog();}','this.group.update();},doRemove:function(doUpdate,removeFromGroup){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].remove();}','this.unwrappedElementContainer=null;this.wrappedElementContainer=null;this.mainElementContainer=null;}','if(this.group&&removeFromGroup){this.group.removeChild(this,doUpdate);}','if(this===currentLogItem){currentLogItem=null;}},remove:function(doUpdate,removeFromGroup){this.doRemove(doUpdate,removeFromGroup);},render:function(){},accept:function(visitor){visitor.visit(this);},getUnwrappedDomContainer:function(){return this.group.unwrappedElementContainer.contentDiv;},getWrappedDomContainer:function(){return this.group.wrappedElementContainer.contentDiv;},getMainDomContainer:function(){return this.group.mainElementContainer.contentDiv;}};LogItem.serializedItemKeys={LOG_ENTRY:0,GROUP_START:1,GROUP_END:2};function LogItemContainerElement(){}','LogItemContainerElement.prototype={appendToLog:function(){var insertBeforeFirst=(newestAtTop&&this.containerDomNode.hasChildNodes());if(insertBeforeFirst){this.containerDomNode.insertBefore(this.mainDiv,this.containerDomNode.firstChild);}else{this.containerDomNode.appendChild(this.mainDiv);}}};function SeparatorElementContainer(containerDomNode){this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"separator\";this.mainDiv.innerHTML=\" \";}','SeparatorElementContainer.prototype=new LogItemContainerElement();SeparatorElementContainer.prototype.remove=function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;};function Separator(){this.rendered=false;}','Separator.prototype=new LogItem();copyProperties(Separator.prototype,{render:function(){var containerDomNode=this.group.contentDiv;if(isIe){this.unwrappedElementContainer=new SeparatorElementContainer(this.getUnwrappedDomContainer());this.wrappedElementContainer=new SeparatorElementContainer(this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new SeparatorElementContainer(this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;}});function GroupElementContainer(group,containerDomNode,isRoot,isWrapped){this.group=group;this.containerDomNode=containerDomNode;this.isRoot=isRoot;this.isWrapped=isWrapped;this.expandable=false;if(this.isRoot){if(isIe){this.contentDiv=logMainContainer.appendChild(document.createElement(\"div\"));this.contentDiv.id=this.isWrapped?\"log_wrapped\":\"log_unwrapped\";}else{this.contentDiv=logMainContainer;}}else{var groupElementContainer=this;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"group\";this.headingDiv=this.mainDiv.appendChild(document.createElement(\"div\"));this.headingDiv.className=\"groupheading\";this.expander=this.headingDiv.appendChild(document.createElement(\"span\"));this.expander.className=\"expander unselectable greyedout\";this.expander.unselectable=true;var expanderText=this.group.expanded?\"-\":\"+\";this.expanderTextNode=this.expander.appendChild(document.createTextNode(expanderText));this.headingDiv.appendChild(document.createTextNode(\" \"+this.group.name));this.contentDiv=this.mainDiv.appendChild(document.createElement(\"div\"));var contentCssClass=this.group.expanded?\"expanded\":\"collapsed\";this.contentDiv.className=\"groupcontent \"+contentCssClass;this.expander.onclick=function(){if(groupElementContainer.group.expandable){groupElementContainer.group.toggleExpanded();}};}}','GroupElementContainer.prototype=new LogItemContainerElement();copyProperties(GroupElementContainer.prototype,{toggleExpanded:function(){if(!this.isRoot){var oldCssClass,newCssClass,expanderText;if(this.group.expanded){newCssClass=\"expanded\";oldCssClass=\"collapsed\";expanderText=\"-\";}else{newCssClass=\"collapsed\";oldCssClass=\"expanded\";expanderText=\"+\";}','replaceClass(this.contentDiv,newCssClass,oldCssClass);this.expanderTextNode.nodeValue=expanderText;}},remove:function(){if(!this.isRoot){this.headingDiv=null;this.expander.onclick=null;this.expander=null;this.expanderTextNode=null;this.contentDiv=null;this.containerDomNode=null;this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;}},reverseChildren:function(){var node=null;var childDomNodes=[];while((node=this.contentDiv.firstChild)){this.contentDiv.removeChild(node);childDomNodes.push(node);}','while((node=childDomNodes.pop())){this.contentDiv.appendChild(node);}},update:function(){if(!this.isRoot){if(this.group.expandable){removeClass(this.expander,\"greyedout\");}else{addClass(this.expander,\"greyedout\");}}},clear:function(){if(this.isRoot){this.contentDiv.innerHTML=\"\";}}});function Group(name,isRoot,initiallyExpanded){this.name=name;this.group=null;this.isRoot=isRoot;this.initiallyExpanded=initiallyExpanded;this.elementContainers=[];this.children=[];this.expanded=initiallyExpanded;this.rendered=false;this.expandable=false;}','Group.prototype=new LogItem();copyProperties(Group.prototype,{addChild:function(logItem){this.children.push(logItem);logItem.group=this;},render:function(){if(isIe){var unwrappedDomContainer,wrappedDomContainer;if(this.isRoot){unwrappedDomContainer=logMainContainer;wrappedDomContainer=logMainContainer;}else{unwrappedDomContainer=this.getUnwrappedDomContainer();wrappedDomContainer=this.getWrappedDomContainer();}','this.unwrappedElementContainer=new GroupElementContainer(this,unwrappedDomContainer,this.isRoot,false);this.wrappedElementContainer=new GroupElementContainer(this,wrappedDomContainer,this.isRoot,true);this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{var mainDomContainer=this.isRoot?logMainContainer:this.getMainDomContainer();this.mainElementContainer=new GroupElementContainer(this,mainDomContainer,this.isRoot,false);this.elementContainers=[this.mainElementContainer];}','this.rendered=true;},toggleExpanded:function(){this.expanded=!this.expanded;for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].toggleExpanded();}},expand:function(){if(!this.expanded){this.toggleExpanded();}},accept:function(visitor){visitor.visitGroup(this);},reverseChildren:function(){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].reverseChildren();}}},update:function(){var previouslyExpandable=this.expandable;this.expandable=(this.children.length!==0);if(this.expandable!==previouslyExpandable){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].update();}}},flatten:function(){var visitor=new GroupFlattener();this.accept(visitor);return visitor.logEntriesAndSeparators;},removeChild:function(child,doUpdate){array_remove(this.children,child);child.group=null;if(doUpdate){this.update();}},remove:function(doUpdate,removeFromGroup){for(var i=0,len=this.children.length;i<len;i++){this.children[i].remove(false,false);}','this.children=[];this.update();if(this===currentGroup){currentGroup=this.group;}','this.doRemove(doUpdate,removeFromGroup);},serialize:function(items){items.push([LogItem.serializedItemKeys.GROUP_START,this.name]);for(var i=0,len=this.children.length;i<len;i++){this.children[i].serialize(items);}','if(this!==currentGroup){items.push([LogItem.serializedItemKeys.GROUP_END]);}},clear:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clear();}}});function LogEntryElementContainer(){}','LogEntryElementContainer.prototype=new LogItemContainerElement();copyProperties(LogEntryElementContainer.prototype,{remove:function(){this.doRemove();},doRemove:function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;this.contentElement=null;this.containerDomNode=null;},setContent:function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=content;}},setSearchMatch:function(isMatch){var oldCssClass=isMatch?\"searchnonmatch\":\"searchmatch\";var newCssClass=isMatch?\"searchmatch\":\"searchnonmatch\";replaceClass(this.mainDiv,newCssClass,oldCssClass);},clearSearch:function(){removeClass(this.mainDiv,\"searchmatch\");removeClass(this.mainDiv,\"searchnonmatch\");}});function LogEntryWrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.mainDiv.className=\"logentry wrapped \"+this.logEntry.level;this.contentElement=this.mainDiv;}','LogEntryWrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryWrappedElementContainer.prototype.setContent=function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=wrappedContent;}};function LogEntryUnwrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry unwrapped \"+this.logEntry.level;this.pre=this.mainDiv.appendChild(document.createElement(\"pre\"));this.pre.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.pre.className=\"unwrapped\";this.contentElement=this.pre;}','LogEntryUnwrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryUnwrappedElementContainer.prototype.remove=function(){this.doRemove();this.pre=null;};function LogEntryMainElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry nonielogentry \"+this.logEntry.level;this.contentElement=this.mainDiv.appendChild(document.createElement(\"span\"));this.contentElement.appendChild(document.createTextNode(this.logEntry.formattedMessage));}','LogEntryMainElementContainer.prototype=new LogEntryElementContainer();function LogEntry(level,formattedMessage){this.level=level;this.formattedMessage=formattedMessage;this.rendered=false;}','LogEntry.prototype=new LogItem();copyProperties(LogEntry.prototype,{render:function(){var logEntry=this;var containerDomNode=this.group.contentDiv;if(isIe){this.formattedMessage=this.formattedMessage.replace(/\\\\r\\\\n/g,\"\\\\r\");this.unwrappedElementContainer=new LogEntryUnwrappedElementContainer(this,this.getUnwrappedDomContainer());this.wrappedElementContainer=new LogEntryWrappedElementContainer(this,this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new LogEntryMainElementContainer(this,this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;},setContent:function(content,wrappedContent){if(content!=this.content){if(isIe&&(content!==this.formattedMessage)){content=content.replace(/\\\\r\\\\n/g,\"\\\\r\");}','for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setContent(content,wrappedContent);}','this.content=content;}},getSearchMatches:function(){var matches=[];var i,len;if(isIe){var unwrappedEls=getElementsByClass(this.unwrappedElementContainer.mainDiv,\"searchterm\",\"span\");var wrappedEls=getElementsByClass(this.wrappedElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=unwrappedEls.length;i<len;i++){matches[i]=new Match(this.level,null,unwrappedEls[i],wrappedEls[i]);}}else{var els=getElementsByClass(this.mainElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=els.length;i<len;i++){matches[i]=new Match(this.level,els[i]);}}','return matches;},setSearchMatch:function(isMatch){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setSearchMatch(isMatch);}},clearSearch:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clearSearch();}},accept:function(visitor){visitor.visitLogEntry(this);},serialize:function(items){items.push([LogItem.serializedItemKeys.LOG_ENTRY,this.level,this.formattedMessage]);}});function LogItemVisitor(){}','LogItemVisitor.prototype={visit:function(logItem){},visitParent:function(logItem){if(logItem.group){logItem.group.accept(this);}},visitChildren:function(logItem){for(var i=0,len=logItem.children.length;i<len;i++){logItem.children[i].accept(this);}},visitLogEntry:function(logEntry){this.visit(logEntry);},visitSeparator:function(separator){this.visit(separator);},visitGroup:function(group){this.visit(group);}};function GroupFlattener(){this.logEntriesAndSeparators=[];}','GroupFlattener.prototype=new LogItemVisitor();GroupFlattener.prototype.visitGroup=function(group){this.visitChildren(group);};GroupFlattener.prototype.visitLogEntry=function(logEntry){this.logEntriesAndSeparators.push(logEntry);};GroupFlattener.prototype.visitSeparator=function(separator){this.logEntriesAndSeparators.push(separator);};window.onload=function(){if(location.search){var queryBits=unescape(location.search).substr(1).split(\"&\"),nameValueBits;for(var i=0,len=queryBits.length;i<len;i++){nameValueBits=queryBits[i].split(\"=\");if(nameValueBits[0]==\"log4javascript_domain\"){document.domain=nameValueBits[1];break;}}}','logMainContainer=$(\"log\");if(isIePre7){addClass(logMainContainer,\"oldIe\");}','rootGroup=new Group(\"root\",true);rootGroup.render();currentGroup=rootGroup;setCommandInputWidth();setLogContainerHeight();toggleLoggingEnabled();toggleSearchEnabled();toggleSearchFilter();toggleSearchHighlight();applyFilters();checkAllLevels();toggleWrap();toggleNewestAtTop();toggleScrollToLatest();renderQueuedLogItems();loaded=true;$(\"command\").value=\"\";$(\"command\").autocomplete=\"off\";$(\"command\").onkeydown=function(evt){evt=getEvent(evt);if(evt.keyCode==10||evt.keyCode==13){evalCommandLine();stopPropagation(evt);}else if(evt.keyCode==27){this.value=\"\";this.focus();}else if(evt.keyCode==38&&commandHistory.length>0){currentCommandIndex=Math.max(0,currentCommandIndex-1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}else if(evt.keyCode==40&&commandHistory.length>0){currentCommandIndex=Math.min(commandHistory.length-1,currentCommandIndex+1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}};$(\"command\").onkeypress=function(evt){evt=getEvent(evt);if(evt.keyCode==38&&commandHistory.length>0&&evt.preventDefault){evt.preventDefault();}};$(\"command\").onkeyup=function(evt){evt=getEvent(evt);if(evt.keyCode==27&&evt.preventDefault){evt.preventDefault();this.focus();}};document.onkeydown=function keyEventHandler(evt){evt=getEvent(evt);switch(evt.keyCode){case 69:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){evalLastCommand();cancelKeyEvent(evt);return false;}','break;case 75:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusSearch();cancelKeyEvent(evt);return false;}','break;case 40:case 76:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusCommandLine();cancelKeyEvent(evt);return false;}','break;}};setTimeout(setLogContainerHeight,20);setShowCommandLine(showCommandLine);doSearch();};window.onunload=function(){if(mainWindowExists()){appender.unload();}','appender=null;};function toggleLoggingEnabled(){setLoggingEnabled($(\"enableLogging\").checked);}','function setLoggingEnabled(enable){loggingEnabled=enable;}','var appender=null;function setAppender(appenderParam){appender=appenderParam;}','function setShowCloseButton(showCloseButton){$(\"closeButton\").style.display=showCloseButton?\"inline\":\"none\";}','function setShowHideButton(showHideButton){$(\"hideButton\").style.display=showHideButton?\"inline\":\"none\";}','var newestAtTop=false;function LogItemContentReverser(){}','LogItemContentReverser.prototype=new LogItemVisitor();LogItemContentReverser.prototype.visitGroup=function(group){group.reverseChildren();this.visitChildren(group);};function setNewestAtTop(isNewestAtTop){var oldNewestAtTop=newestAtTop;var i,iLen,j,jLen;newestAtTop=Boolean(isNewestAtTop);if(oldNewestAtTop!=newestAtTop){var visitor=new LogItemContentReverser();rootGroup.accept(visitor);if(currentSearch){var currentMatch=currentSearch.matches[currentMatchIndex];var matchIndex=0;var matches=[];var actOnLogEntry=function(logEntry){var logEntryMatches=logEntry.getSearchMatches();for(j=0,jLen=logEntryMatches.length;j<jLen;j++){matches[matchIndex]=logEntryMatches[j];if(currentMatch&&logEntryMatches[j].equals(currentMatch)){currentMatchIndex=matchIndex;}','matchIndex++;}};if(newestAtTop){for(i=logEntries.length-1;i>=0;i--){actOnLogEntry(logEntries[i]);}}else{for(i=0,iLen=logEntries.length;i<iLen;i++){actOnLogEntry(logEntries[i]);}}','currentSearch.matches=matches;if(currentMatch){currentMatch.setCurrent();}}else if(scrollToLatest){doScrollToLatest();}}','$(\"newestAtTop\").checked=isNewestAtTop;}','function toggleNewestAtTop(){var isNewestAtTop=$(\"newestAtTop\").checked;setNewestAtTop(isNewestAtTop);}','var scrollToLatest=true;function setScrollToLatest(isScrollToLatest){scrollToLatest=isScrollToLatest;if(scrollToLatest){doScrollToLatest();}','$(\"scrollToLatest\").checked=isScrollToLatest;}','function toggleScrollToLatest(){var isScrollToLatest=$(\"scrollToLatest\").checked;setScrollToLatest(isScrollToLatest);}','function doScrollToLatest(){var l=logMainContainer;if(typeof l.scrollTop!=\"undefined\"){if(newestAtTop){l.scrollTop=0;}else{var latestLogEntry=l.lastChild;if(latestLogEntry){l.scrollTop=l.scrollHeight;}}}}','var closeIfOpenerCloses=true;function setCloseIfOpenerCloses(isCloseIfOpenerCloses){closeIfOpenerCloses=isCloseIfOpenerCloses;}','var maxMessages=null;function setMaxMessages(max){maxMessages=max;pruneLogEntries();}','var showCommandLine=false;function setShowCommandLine(isShowCommandLine){showCommandLine=isShowCommandLine;if(loaded){$(\"commandLine\").style.display=showCommandLine?\"block\":\"none\";setCommandInputWidth();setLogContainerHeight();}}','function focusCommandLine(){if(loaded){$(\"command\").focus();}}','function focusSearch(){if(loaded){$(\"searchBox\").focus();}}','function getLogItems(){var items=[];for(var i=0,len=logItems.length;i<len;i++){logItems[i].serialize(items);}','return items;}','function setLogItems(items){var loggingReallyEnabled=loggingEnabled;loggingEnabled=true;for(var i=0,len=items.length;i<len;i++){switch(items[i][0]){case LogItem.serializedItemKeys.LOG_ENTRY:log(items[i][1],items[i][2]);break;case LogItem.serializedItemKeys.GROUP_START:group(items[i][1]);break;case LogItem.serializedItemKeys.GROUP_END:groupEnd();break;}}','loggingEnabled=loggingReallyEnabled;}','function log(logLevel,formattedMessage){if(loggingEnabled){var logEntry=new LogEntry(logLevel,formattedMessage);logEntries.push(logEntry);logEntriesAndSeparators.push(logEntry);logItems.push(logEntry);currentGroup.addChild(logEntry);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function renderQueuedLogItems(){logQueuedEventsTimer=null;var pruned=pruneLogEntries();var initiallyHasMatches=currentSearch?currentSearch.hasMatches():false;for(var i=0,len=logItems.length;i<len;i++){if(!logItems[i].rendered){logItems[i].render();logItems[i].appendToLog();if(currentSearch&&(logItems[i]instanceof LogEntry)){currentSearch.applyTo(logItems[i]);}}}','if(currentSearch){if(pruned){if(currentSearch.hasVisibleMatches()){if(currentMatchIndex===null){setCurrentMatchIndex(0);}','displayMatches();}else{displayNoMatches();}}else if(!initiallyHasMatches&¤tSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}}','if(scrollToLatest){doScrollToLatest();}','unrenderedLogItemsExist=false;}','function pruneLogEntries(){if((maxMessages!==null)&&(logEntriesAndSeparators.length>maxMessages)){var numberToDelete=logEntriesAndSeparators.length-maxMessages;var prunedLogEntries=logEntriesAndSeparators.slice(0,numberToDelete);if(currentSearch){currentSearch.removeMatches(prunedLogEntries);}','var group;for(var i=0;i<numberToDelete;i++){group=logEntriesAndSeparators[i].group;array_remove(logItems,logEntriesAndSeparators[i]);array_remove(logEntries,logEntriesAndSeparators[i]);logEntriesAndSeparators[i].remove(true,true);if(group.children.length===0&&group!==currentGroup&&group!==rootGroup){array_remove(logItems,group);group.remove(true,true);}}','logEntriesAndSeparators=array_removeFromStart(logEntriesAndSeparators,numberToDelete);return true;}','return false;}','function group(name,startExpanded){if(loggingEnabled){initiallyExpanded=(typeof startExpanded===\"undefined\")?true:Boolean(startExpanded);var newGroup=new Group(name,false,initiallyExpanded);currentGroup.addChild(newGroup);currentGroup=newGroup;logItems.push(newGroup);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function groupEnd(){currentGroup=(currentGroup===rootGroup)?rootGroup:currentGroup.group;}','function mainPageReloaded(){currentGroup=rootGroup;var separator=new Separator();logEntriesAndSeparators.push(separator);logItems.push(separator);currentGroup.addChild(separator);}','function closeWindow(){if(appender&&mainWindowExists()){appender.close(true);}else{window.close();}}','function hide(){if(appender&&mainWindowExists()){appender.hide();}}','var mainWindow=window;var windowId=\"log4javascriptConsoleWindow_\"+new Date().getTime()+\"_\"+(\"\"+Math.random()).substr(2);function setMainWindow(win){mainWindow=win;mainWindow[windowId]=window;if(opener&&closeIfOpenerCloses){pollOpener();}}','function pollOpener(){if(closeIfOpenerCloses){if(mainWindowExists()){setTimeout(pollOpener,500);}else{closeWindow();}}}','function mainWindowExists(){try{return(mainWindow&&!mainWindow.closed&&mainWindow[windowId]==window);}catch(ex){}','return false;}','var logLevels=[\"TRACE\",\"DEBUG\",\"INFO\",\"WARN\",\"ERROR\",\"FATAL\"];function getCheckBox(logLevel){return $(\"switch_\"+logLevel);}','function getIeWrappedLogContainer(){return $(\"log_wrapped\");}','function getIeUnwrappedLogContainer(){return $(\"log_unwrapped\");}','function applyFilters(){for(var i=0;i<logLevels.length;i++){if(getCheckBox(logLevels[i]).checked){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}','updateSearchFromFilters();}','function toggleAllLevels(){var turnOn=$(\"switch_ALL\").checked;for(var i=0;i<logLevels.length;i++){getCheckBox(logLevels[i]).checked=turnOn;if(turnOn){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}}','function checkAllLevels(){for(var i=0;i<logLevels.length;i++){if(!getCheckBox(logLevels[i]).checked){getCheckBox(\"ALL\").checked=false;return;}}','getCheckBox(\"ALL\").checked=true;}','function clearLog(){rootGroup.clear();currentGroup=rootGroup;logEntries=[];logItems=[];logEntriesAndSeparators=[];doSearch();}','function toggleWrap(){var enable=$(\"wrap\").checked;if(enable){addClass(logMainContainer,\"wrap\");}else{removeClass(logMainContainer,\"wrap\");}','refreshCurrentMatch();}','var searchTimer=null;function scheduleSearch(){try{clearTimeout(searchTimer);}catch(ex){}','searchTimer=setTimeout(doSearch,500);}','function Search(searchTerm,isRegex,searchRegex,isCaseSensitive){this.searchTerm=searchTerm;this.isRegex=isRegex;this.searchRegex=searchRegex;this.isCaseSensitive=isCaseSensitive;this.matches=[];}','Search.prototype={hasMatches:function(){return this.matches.length>0;},hasVisibleMatches:function(){if(this.hasMatches()){for(var i=0;i<this.matches.length;i++){if(this.matches[i].isVisible()){return true;}}}','return false;},match:function(logEntry){var entryText=String(logEntry.formattedMessage);var matchesSearch=false;if(this.isRegex){matchesSearch=this.searchRegex.test(entryText);}else if(this.isCaseSensitive){matchesSearch=(entryText.indexOf(this.searchTerm)>-1);}else{matchesSearch=(entryText.toLowerCase().indexOf(this.searchTerm.toLowerCase())>-1);}','return matchesSearch;},getNextVisibleMatchIndex:function(){for(var i=currentMatchIndex+1;i<this.matches.length;i++){if(this.matches[i].isVisible()){return i;}}','for(i=0;i<=currentMatchIndex;i++){if(this.matches[i].isVisible()){return i;}}','return-1;},getPreviousVisibleMatchIndex:function(){for(var i=currentMatchIndex-1;i>=0;i--){if(this.matches[i].isVisible()){return i;}}','for(var i=this.matches.length-1;i>=currentMatchIndex;i--){if(this.matches[i].isVisible()){return i;}}','return-1;},applyTo:function(logEntry){var doesMatch=this.match(logEntry);if(doesMatch){logEntry.group.expand();logEntry.setSearchMatch(true);var logEntryContent;var wrappedLogEntryContent;var searchTermReplacementStartTag=\"<span class=\\\\\\\"searchterm\\\\\\\">\";var searchTermReplacementEndTag=\"<\"+\"/span>\";var preTagName=isIe?\"pre\":\"span\";var preStartTag=\"<\"+preTagName+\" class=\\\\\\\"pre\\\\\\\">\";var preEndTag=\"<\"+\"/\"+preTagName+\">\";var startIndex=0;var searchIndex,matchedText,textBeforeMatch;if(this.isRegex){var flags=this.isCaseSensitive?\"g\":\"gi\";var capturingRegex=new RegExp(\"(\"+this.searchRegex.source+\")\",flags);var rnd=(\"\"+Math.random()).substr(2);var startToken=\"%%s\"+rnd+\"%%\";var endToken=\"%%e\"+rnd+\"%%\";logEntryContent=logEntry.formattedMessage.replace(capturingRegex,startToken+\"$1\"+endToken);logEntryContent=escapeHtml(logEntryContent);var result;var searchString=logEntryContent;logEntryContent=\"\";wrappedLogEntryContent=\"\";while((searchIndex=searchString.indexOf(startToken,startIndex))>-1){var endTokenIndex=searchString.indexOf(endToken,searchIndex);matchedText=searchString.substring(searchIndex+startToken.length,endTokenIndex);textBeforeMatch=searchString.substring(startIndex,searchIndex);logEntryContent+=preStartTag+textBeforeMatch+preEndTag;logEntryContent+=searchTermReplacementStartTag+preStartTag+matchedText+','preEndTag+searchTermReplacementEndTag;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=endTokenIndex+endToken.length;}','logEntryContent+=preStartTag+searchString.substr(startIndex)+preEndTag;if(isIe){wrappedLogEntryContent+=searchString.substr(startIndex);}}else{logEntryContent=\"\";wrappedLogEntryContent=\"\";var searchTermReplacementLength=searchTermReplacementStartTag.length+','this.searchTerm.length+searchTermReplacementEndTag.length;var searchTermLength=this.searchTerm.length;var searchTermLowerCase=this.searchTerm.toLowerCase();var logTextLowerCase=logEntry.formattedMessage.toLowerCase();while((searchIndex=logTextLowerCase.indexOf(searchTermLowerCase,startIndex))>-1){matchedText=escapeHtml(logEntry.formattedMessage.substr(searchIndex,this.searchTerm.length));textBeforeMatch=escapeHtml(logEntry.formattedMessage.substring(startIndex,searchIndex));var searchTermReplacement=searchTermReplacementStartTag+','preStartTag+matchedText+preEndTag+searchTermReplacementEndTag;logEntryContent+=preStartTag+textBeforeMatch+preEndTag+searchTermReplacement;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=searchIndex+searchTermLength;}','var textAfterLastMatch=escapeHtml(logEntry.formattedMessage.substr(startIndex));logEntryContent+=preStartTag+textAfterLastMatch+preEndTag;if(isIe){wrappedLogEntryContent+=textAfterLastMatch;}}','logEntry.setContent(logEntryContent,wrappedLogEntryContent);var logEntryMatches=logEntry.getSearchMatches();this.matches=this.matches.concat(logEntryMatches);}else{logEntry.setSearchMatch(false);logEntry.setContent(logEntry.formattedMessage,logEntry.formattedMessage);}','return doesMatch;},removeMatches:function(logEntries){var matchesToRemoveCount=0;var currentMatchRemoved=false;var matchesToRemove=[];var i,iLen,j,jLen;for(i=0,iLen=this.matches.length;i<iLen;i++){for(j=0,jLen=logEntries.length;j<jLen;j++){if(this.matches[i].belongsTo(logEntries[j])){matchesToRemove.push(this.matches[i]);if(i===currentMatchIndex){currentMatchRemoved=true;}}}}','var newMatch=currentMatchRemoved?null:this.matches[currentMatchIndex];if(currentMatchRemoved){for(i=currentMatchIndex,iLen=this.matches.length;i<iLen;i++){if(this.matches[i].isVisible()&&!array_contains(matchesToRemove,this.matches[i])){newMatch=this.matches[i];break;}}}','for(i=0,iLen=matchesToRemove.length;i<iLen;i++){array_remove(this.matches,matchesToRemove[i]);matchesToRemove[i].remove();}','if(this.hasVisibleMatches()){if(newMatch===null){setCurrentMatchIndex(0);}else{var newMatchIndex=0;for(i=0,iLen=this.matches.length;i<iLen;i++){if(newMatch===this.matches[i]){newMatchIndex=i;break;}}','setCurrentMatchIndex(newMatchIndex);}}else{currentMatchIndex=null;displayNoMatches();}}};function getPageOffsetTop(el,container){var currentEl=el;var y=0;while(currentEl&¤tEl!=container){y+=currentEl.offsetTop;currentEl=currentEl.offsetParent;}','return y;}','function scrollIntoView(el){var logContainer=logMainContainer;if(!$(\"wrap\").checked){var logContainerLeft=logContainer.scrollLeft;var logContainerRight=logContainerLeft+logContainer.offsetWidth;var elLeft=el.offsetLeft;var elRight=elLeft+el.offsetWidth;if(elLeft<logContainerLeft||elRight>logContainerRight){logContainer.scrollLeft=elLeft-(logContainer.offsetWidth-el.offsetWidth)/2;}}','var logContainerTop=logContainer.scrollTop;var logContainerBottom=logContainerTop+logContainer.offsetHeight;var elTop=getPageOffsetTop(el)-getToolBarsHeight();var elBottom=elTop+el.offsetHeight;if(elTop<logContainerTop||elBottom>logContainerBottom){logContainer.scrollTop=elTop-(logContainer.offsetHeight-el.offsetHeight)/2;}}','function Match(logEntryLevel,spanInMainDiv,spanInUnwrappedPre,spanInWrappedDiv){this.logEntryLevel=logEntryLevel;this.spanInMainDiv=spanInMainDiv;if(isIe){this.spanInUnwrappedPre=spanInUnwrappedPre;this.spanInWrappedDiv=spanInWrappedDiv;}','this.mainSpan=isIe?spanInUnwrappedPre:spanInMainDiv;}','Match.prototype={equals:function(match){return this.mainSpan===match.mainSpan;},setCurrent:function(){if(isIe){addClass(this.spanInUnwrappedPre,\"currentmatch\");addClass(this.spanInWrappedDiv,\"currentmatch\");var elementToScroll=$(\"wrap\").checked?this.spanInWrappedDiv:this.spanInUnwrappedPre;scrollIntoView(elementToScroll);}else{addClass(this.spanInMainDiv,\"currentmatch\");scrollIntoView(this.spanInMainDiv);}},belongsTo:function(logEntry){if(isIe){return isDescendant(this.spanInUnwrappedPre,logEntry.unwrappedPre);}else{return isDescendant(this.spanInMainDiv,logEntry.mainDiv);}},setNotCurrent:function(){if(isIe){removeClass(this.spanInUnwrappedPre,\"currentmatch\");removeClass(this.spanInWrappedDiv,\"currentmatch\");}else{removeClass(this.spanInMainDiv,\"currentmatch\");}},isOrphan:function(){return isOrphan(this.mainSpan);},isVisible:function(){return getCheckBox(this.logEntryLevel).checked;},remove:function(){if(isIe){this.spanInUnwrappedPre=null;this.spanInWrappedDiv=null;}else{this.spanInMainDiv=null;}}};var currentSearch=null;var currentMatchIndex=null;function doSearch(){var searchBox=$(\"searchBox\");var searchTerm=searchBox.value;var isRegex=$(\"searchRegex\").checked;var isCaseSensitive=$(\"searchCaseSensitive\").checked;var i;if(searchTerm===\"\"){$(\"searchReset\").disabled=true;$(\"searchNav\").style.display=\"none\";removeClass(document.body,\"searching\");removeClass(searchBox,\"hasmatches\");removeClass(searchBox,\"nomatches\");for(i=0;i<logEntries.length;i++){logEntries[i].clearSearch();logEntries[i].setContent(logEntries[i].formattedMessage,logEntries[i].formattedMessage);}','currentSearch=null;setLogContainerHeight();}else{$(\"searchReset\").disabled=false;$(\"searchNav\").style.display=\"block\";var searchRegex;var regexValid;if(isRegex){try{searchRegex=isCaseSensitive?new RegExp(searchTerm,\"g\"):new RegExp(searchTerm,\"gi\");regexValid=true;replaceClass(searchBox,\"validregex\",\"invalidregex\");searchBox.title=\"Valid regex\";}catch(ex){regexValid=false;replaceClass(searchBox,\"invalidregex\",\"validregex\");searchBox.title=\"Invalid regex: \"+(ex.message?ex.message:(ex.description?ex.description:\"unknown error\"));return;}}else{searchBox.title=\"\";removeClass(searchBox,\"validregex\");removeClass(searchBox,\"invalidregex\");}','addClass(document.body,\"searching\");currentSearch=new Search(searchTerm,isRegex,searchRegex,isCaseSensitive);for(i=0;i<logEntries.length;i++){currentSearch.applyTo(logEntries[i]);}','setLogContainerHeight();if(currentSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}else{displayNoMatches();}}}','function updateSearchFromFilters(){if(currentSearch){if(currentSearch.hasMatches()){if(currentMatchIndex===null){currentMatchIndex=0;}','var currentMatch=currentSearch.matches[currentMatchIndex];if(currentMatch.isVisible()){displayMatches();setCurrentMatchIndex(currentMatchIndex);}else{currentMatch.setNotCurrent();var nextVisibleMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextVisibleMatchIndex>-1){setCurrentMatchIndex(nextVisibleMatchIndex);displayMatches();}else{displayNoMatches();}}}else{displayNoMatches();}}}','function refreshCurrentMatch(){if(currentSearch&¤tSearch.hasVisibleMatches()){setCurrentMatchIndex(currentMatchIndex);}}','function displayMatches(){replaceClass($(\"searchBox\"),\"hasmatches\",\"nomatches\");$(\"searchBox\").title=\"\"+currentSearch.matches.length+\" matches found\";$(\"searchNav\").style.display=\"block\";setLogContainerHeight();}','function displayNoMatches(){replaceClass($(\"searchBox\"),\"nomatches\",\"hasmatches\");$(\"searchBox\").title=\"No matches found\";$(\"searchNav\").style.display=\"none\";setLogContainerHeight();}','function toggleSearchEnabled(enable){enable=(typeof enable==\"undefined\")?!$(\"searchDisable\").checked:enable;$(\"searchBox\").disabled=!enable;$(\"searchReset\").disabled=!enable;$(\"searchRegex\").disabled=!enable;$(\"searchNext\").disabled=!enable;$(\"searchPrevious\").disabled=!enable;$(\"searchCaseSensitive\").disabled=!enable;$(\"searchNav\").style.display=(enable&&($(\"searchBox\").value!==\"\")&¤tSearch&¤tSearch.hasVisibleMatches())?\"block\":\"none\";if(enable){removeClass($(\"search\"),\"greyedout\");addClass(document.body,\"searching\");if($(\"searchHighlight\").checked){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}','if($(\"searchFilter\").checked){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','$(\"searchDisable\").checked=!enable;}else{addClass($(\"search\"),\"greyedout\");removeClass(document.body,\"searching\");removeClass(logMainContainer,\"searchhighlight\");removeClass(logMainContainer,\"searchfilter\");}','setLogContainerHeight();}','function toggleSearchFilter(){var enable=$(\"searchFilter\").checked;if(enable){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','refreshCurrentMatch();}','function toggleSearchHighlight(){var enable=$(\"searchHighlight\").checked;if(enable){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}}','function clearSearch(){$(\"searchBox\").value=\"\";doSearch();}','function searchNext(){if(currentSearch!==null&¤tMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var nextMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextMatchIndex>currentMatchIndex||confirm(\"Reached the end of the page. Start from the top?\")){setCurrentMatchIndex(nextMatchIndex);}}}','function searchPrevious(){if(currentSearch!==null&¤tMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var previousMatchIndex=currentSearch.getPreviousVisibleMatchIndex();if(previousMatchIndex<currentMatchIndex||confirm(\"Reached the start of the page. Continue from the bottom?\")){setCurrentMatchIndex(previousMatchIndex);}}}','function setCurrentMatchIndex(index){currentMatchIndex=index;currentSearch.matches[currentMatchIndex].setCurrent();}','function addClass(el,cssClass){if(!hasClass(el,cssClass)){if(el.className){el.className+=\" \"+cssClass;}else{el.className=cssClass;}}}','function hasClass(el,cssClass){if(el.className){var classNames=el.className.split(\" \");return array_contains(classNames,cssClass);}','return false;}','function removeClass(el,cssClass){if(hasClass(el,cssClass)){var existingClasses=el.className.split(\" \");var newClasses=[];for(var i=0,len=existingClasses.length;i<len;i++){if(existingClasses[i]!=cssClass){newClasses[newClasses.length]=existingClasses[i];}}','el.className=newClasses.join(\" \");}}','function replaceClass(el,newCssClass,oldCssClass){removeClass(el,oldCssClass);addClass(el,newCssClass);}','function getElementsByClass(el,cssClass,tagName){var elements=el.getElementsByTagName(tagName);var matches=[];for(var i=0,len=elements.length;i<len;i++){if(hasClass(elements[i],cssClass)){matches.push(elements[i]);}}','return matches;}','function $(id){return document.getElementById(id);}','function isDescendant(node,ancestorNode){while(node!=null){if(node===ancestorNode){return true;}','node=node.parentNode;}','return false;}','function isOrphan(node){var currentNode=node;while(currentNode){if(currentNode==document.body){return false;}','currentNode=currentNode.parentNode;}','return true;}','function escapeHtml(str){return str.replace(/&/g,\"&\").replace(/[<]/g,\"<\").replace(/>/g,\">\");}','function getWindowWidth(){if(window.innerWidth){return window.innerWidth;}else if(document.documentElement&&document.documentElement.clientWidth){return document.documentElement.clientWidth;}else if(document.body){return document.body.clientWidth;}','return 0;}','function getWindowHeight(){if(window.innerHeight){return window.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight;}else if(document.body){return document.body.clientHeight;}','return 0;}','function getToolBarsHeight(){return $(\"switches\").offsetHeight;}','function getChromeHeight(){var height=getToolBarsHeight();if(showCommandLine){height+=$(\"commandLine\").offsetHeight;}','return height;}','function setLogContainerHeight(){if(logMainContainer){var windowHeight=getWindowHeight();$(\"body\").style.height=getWindowHeight()+\"px\";logMainContainer.style.height=\"\"+','Math.max(0,windowHeight-getChromeHeight())+\"px\";}}','function setCommandInputWidth(){if(showCommandLine){$(\"command\").style.width=\"\"+Math.max(0,$(\"commandLineContainer\").offsetWidth-','($(\"evaluateButton\").offsetWidth+13))+\"px\";}}','window.onresize=function(){setCommandInputWidth();setLogContainerHeight();};if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}','return this.length;};}','if(!Array.prototype.pop){Array.prototype.pop=function(){if(this.length>0){var val=this[this.length-1];this.length=this.length-1;return val;}};}','if(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}','this.length=this.length-1;return firstItem;}};}','if(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}','var itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}','return itemsDeleted;};}','function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}','if(index>=0){arr.splice(index,1);return index;}else{return false;}}','function array_removeFromStart(array,numberToRemove){if(Array.prototype.splice){array.splice(0,numberToRemove);}else{for(var i=numberToRemove,len=array.length;i<len;i++){array[i-numberToRemove]=array[i];}','array.length=array.length-numberToRemove;}','return array;}','function array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}','return false;}','function getErrorMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}','return\"\"+ex;}','function moveCaretToEnd(input){if(input.setSelectionRange){input.focus();var length=input.value.length;input.setSelectionRange(length,length);}else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.select();}','input.focus();}','function stopPropagation(evt){if(evt.stopPropagation){evt.stopPropagation();}else if(typeof evt.cancelBubble!=\"undefined\"){evt.cancelBubble=true;}}','function getEvent(evt){return evt?evt:event;}','function getTarget(evt){return evt.target?evt.target:evt.srcElement;}','function getRelatedTarget(evt){if(evt.relatedTarget){return evt.relatedTarget;}else if(evt.srcElement){switch(evt.type){case\"mouseover\":return evt.fromElement;case\"mouseout\":return evt.toElement;default:return evt.srcElement;}}}','function cancelKeyEvent(evt){evt.returnValue=false;stopPropagation(evt);}','function evalCommandLine(){var expr=$(\"command\").value;evalCommand(expr);$(\"command\").value=\"\";}','function evalLastCommand(){if(lastCommand!=null){evalCommand(lastCommand);}}','var lastCommand=null;var commandHistory=[];var currentCommandIndex=0;function evalCommand(expr){if(appender){appender.evalCommandAndAppend(expr);}else{var prefix=\">>> \"+expr+\"\\\\r\\\\n\";try{log(\"INFO\",prefix+eval(expr));}catch(ex){log(\"ERROR\",prefix+\"Error: \"+getErrorMessage(ex));}}','if(expr!=commandHistory[commandHistory.length-1]){commandHistory.push(expr);if(appender){appender.storeCommandHistory(commandHistory);}}','currentCommandIndex=(expr==commandHistory[currentCommandIndex])?currentCommandIndex+1:commandHistory.length;lastCommand=expr;}','//]]>','</script>','<style type=\"text/css\">','body{background-color:white;color:black;padding:0;margin:0;font-family:tahoma,verdana,arial,helvetica,sans-serif;overflow:hidden}div#switchesContainer input{margin-bottom:0}div.toolbar{border-top:solid #ffffff 1px;border-bottom:solid #aca899 1px;background-color:#f1efe7;padding:3px 5px;font-size:68.75%}div.toolbar,div#search input{font-family:tahoma,verdana,arial,helvetica,sans-serif}div.toolbar input.button{padding:0 5px;font-size:100%}div.toolbar input.hidden{display:none}div#switches input#clearButton{margin-left:20px}div#levels label{font-weight:bold}div#levels label,div#options label{margin-right:5px}div#levels label#wrapLabel{font-weight:normal}div#search label{margin-right:10px}div#search label.searchboxlabel{margin-right:0}div#search input{font-size:100%}div#search input.validregex{color:green}div#search input.invalidregex{color:red}div#search input.nomatches{color:white;background-color:#ff6666}div#search input.nomatches{color:white;background-color:#ff6666}div#searchNav{display:none}div#commandLine{display:none}div#commandLine input#command{font-size:100%;font-family:Courier New,Courier}div#commandLine input#evaluateButton{}*.greyedout{color:gray !important;border-color:gray !important}*.greyedout *.alwaysenabled{color:black}*.unselectable{-khtml-user-select:none;-moz-user-select:none;user-select:none}div#log{font-family:Courier New,Courier;font-size:75%;width:100%;overflow:auto;clear:both;position:relative}div.group{border-color:#cccccc;border-style:solid;border-width:1px 0 1px 1px;overflow:visible}div.oldIe div.group,div.oldIe div.group *,div.oldIe *.logentry{height:1%}div.group div.groupheading span.expander{border:solid black 1px;font-family:Courier New,Courier;font-size:0.833em;background-color:#eeeeee;position:relative;top:-1px;color:black;padding:0 2px;cursor:pointer;cursor:hand;height:1%}div.group div.groupcontent{margin-left:10px;padding-bottom:2px;overflow:visible}div.group div.expanded{display:block}div.group div.collapsed{display:none}*.logentry{overflow:visible;display:none;white-space:pre}span.pre{white-space:pre}pre.unwrapped{display:inline !important}pre.unwrapped pre.pre,div.wrapped pre.pre{display:inline}div.wrapped pre.pre{white-space:normal}div.wrapped{display:none}body.searching *.logentry span.currentmatch{color:white !important;background-color:green !important}body.searching div.searchhighlight *.logentry span.searchterm{color:black;background-color:yellow}div.wrap *.logentry{white-space:normal !important;border-width:0 0 1px 0;border-color:#dddddd;border-style:dotted}div.wrap #log_wrapped,#log_unwrapped{display:block}div.wrap #log_unwrapped,#log_wrapped{display:none}div.wrap *.logentry span.pre{overflow:visible;white-space:normal}div.wrap *.logentry pre.unwrapped{display:none}div.wrap *.logentry span.wrapped{display:inline}div.searchfilter *.searchnonmatch{display:none !important}div#log *.TRACE,label#label_TRACE{color:#666666}div#log *.DEBUG,label#label_DEBUG{color:green}div#log *.INFO,label#label_INFO{color:#000099}div#log *.WARN,label#label_WARN{color:#999900}div#log *.ERROR,label#label_ERROR{color:red}div#log *.FATAL,label#label_FATAL{color:#660066}div.TRACE#log *.TRACE,div.DEBUG#log *.DEBUG,div.INFO#log *.INFO,div.WARN#log *.WARN,div.ERROR#log *.ERROR,div.FATAL#log *.FATAL{display:block}div#log div.separator{background-color:#cccccc;margin:5px 0;line-height:1px}','</style>','</head>','<body id=\"body\">','<div id=\"switchesContainer\">','<div id=\"switches\">','<div id=\"levels\" class=\"toolbar\">','Filters:','<input type=\"checkbox\" id=\"switch_TRACE\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide trace messages\" /><label for=\"switch_TRACE\" id=\"label_TRACE\">trace</label>','<input type=\"checkbox\" id=\"switch_DEBUG\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide debug messages\" /><label for=\"switch_DEBUG\" id=\"label_DEBUG\">debug</label>','<input type=\"checkbox\" id=\"switch_INFO\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide info messages\" /><label for=\"switch_INFO\" id=\"label_INFO\">info</label>','<input type=\"checkbox\" id=\"switch_WARN\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide warn messages\" /><label for=\"switch_WARN\" id=\"label_WARN\">warn</label>','<input type=\"checkbox\" id=\"switch_ERROR\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide error messages\" /><label for=\"switch_ERROR\" id=\"label_ERROR\">error</label>','<input type=\"checkbox\" id=\"switch_FATAL\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide fatal messages\" /><label for=\"switch_FATAL\" id=\"label_FATAL\">fatal</label>','<input type=\"checkbox\" id=\"switch_ALL\" onclick=\"toggleAllLevels(); applyFilters()\" checked=\"checked\" title=\"Show/hide all messages\" /><label for=\"switch_ALL\" id=\"label_ALL\">all</label>','</div>','<div id=\"search\" class=\"toolbar\">','<label for=\"searchBox\" class=\"searchboxlabel\">Search:</label> <input type=\"text\" id=\"searchBox\" onclick=\"toggleSearchEnabled(true)\" onkeyup=\"scheduleSearch()\" size=\"20\" />','<input type=\"button\" id=\"searchReset\" disabled=\"disabled\" value=\"Reset\" onclick=\"clearSearch()\" class=\"button\" title=\"Reset the search\" />','<input type=\"checkbox\" id=\"searchRegex\" onclick=\"doSearch()\" title=\"If checked, search is treated as a regular expression\" /><label for=\"searchRegex\">Regex</label>','<input type=\"checkbox\" id=\"searchCaseSensitive\" onclick=\"doSearch()\" title=\"If checked, search is case sensitive\" /><label for=\"searchCaseSensitive\">Match case</label>','<input type=\"checkbox\" id=\"searchDisable\" onclick=\"toggleSearchEnabled()\" title=\"Enable/disable search\" /><label for=\"searchDisable\" class=\"alwaysenabled\">Disable</label>','<div id=\"searchNav\">','<input type=\"button\" id=\"searchNext\" disabled=\"disabled\" value=\"Next\" onclick=\"searchNext()\" class=\"button\" title=\"Go to the next matching log entry\" />','<input type=\"button\" id=\"searchPrevious\" disabled=\"disabled\" value=\"Previous\" onclick=\"searchPrevious()\" class=\"button\" title=\"Go to the previous matching log entry\" />','<input type=\"checkbox\" id=\"searchFilter\" onclick=\"toggleSearchFilter()\" title=\"If checked, non-matching log entries are filtered out\" /><label for=\"searchFilter\">Filter</label>','<input type=\"checkbox\" id=\"searchHighlight\" onclick=\"toggleSearchHighlight()\" title=\"Highlight matched search terms\" /><label for=\"searchHighlight\" class=\"alwaysenabled\">Highlight all</label>','</div>','</div>','<div id=\"options\" class=\"toolbar\">','Options:','<input type=\"checkbox\" id=\"enableLogging\" onclick=\"toggleLoggingEnabled()\" checked=\"checked\" title=\"Enable/disable logging\" /><label for=\"enableLogging\" id=\"enableLoggingLabel\">Log</label>','<input type=\"checkbox\" id=\"wrap\" onclick=\"toggleWrap()\" title=\"Enable / disable word wrap\" /><label for=\"wrap\" id=\"wrapLabel\">Wrap</label>','<input type=\"checkbox\" id=\"newestAtTop\" onclick=\"toggleNewestAtTop()\" title=\"If checked, causes newest messages to appear at the top\" /><label for=\"newestAtTop\" id=\"newestAtTopLabel\">Newest at the top</label>','<input type=\"checkbox\" id=\"scrollToLatest\" onclick=\"toggleScrollToLatest()\" checked=\"checked\" title=\"If checked, window automatically scrolls to a new message when it is added\" /><label for=\"scrollToLatest\" id=\"scrollToLatestLabel\">Scroll to latest</label>','<input type=\"button\" id=\"clearButton\" value=\"Clear\" onclick=\"clearLog()\" class=\"button\" title=\"Clear all log messages\" />','<input type=\"button\" id=\"hideButton\" value=\"Hide\" onclick=\"hide()\" class=\"hidden button\" title=\"Hide the console\" />','<input type=\"button\" id=\"closeButton\" value=\"Close\" onclick=\"closeWindow()\" class=\"hidden button\" title=\"Close the window\" />','</div>','</div>','</div>','<div id=\"log\" class=\"TRACE DEBUG INFO WARN ERROR FATAL\"></div>','<div id=\"commandLine\" class=\"toolbar\">','<div id=\"commandLineContainer\">','<input type=\"text\" id=\"command\" title=\"Enter a JavaScript command here and hit return or press \\'Evaluate\\'\" />','<input type=\"button\" id=\"evaluateButton\" value=\"Evaluate\" class=\"button\" title=\"Evaluate the command\" onclick=\"evalCommandLine()\" />','</div>','</div>','</body>','</html>',''];};var defaultCommandLineFunctions=[];ConsoleAppender=function(){};var consoleAppenderIdCounter=1;ConsoleAppender.prototype=new Appender();ConsoleAppender.prototype.create=function(inPage,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,focusConsoleWindow){var appender=this;var initialized=false;var consoleWindowCreated=false;var consoleWindowLoaded=false;var consoleClosed=false;var queuedLoggingEvents=[];var isSupported=true;var consoleAppenderId=consoleAppenderIdCounter++;initiallyMinimized=extractBooleanFromParam(initiallyMinimized,this.defaults.initiallyMinimized);lazyInit=extractBooleanFromParam(lazyInit,this.defaults.lazyInit);useDocumentWrite=extractBooleanFromParam(useDocumentWrite,this.defaults.useDocumentWrite);var newestMessageAtTop=this.defaults.newestMessageAtTop;var scrollToLatestMessage=this.defaults.scrollToLatestMessage;width=width?width:this.defaults.width;height=height?height:this.defaults.height;var maxMessages=this.defaults.maxMessages;var showCommandLine=this.defaults.showCommandLine;var commandLineObjectExpansionDepth=this.defaults.commandLineObjectExpansionDepth;var showHideButton=this.defaults.showHideButton;var showCloseButton=this.defaults.showCloseButton;this.setLayout(this.defaults.layout);var init,createWindow,safeToAppend,getConsoleWindow,open;var appenderName=inPage?\"InPageAppender\":\"PopUpAppender\";var checkCanConfigure=function(configOptionName){if(consoleWindowCreated){handleError(appenderName+\": configuration option '\"+configOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;};var consoleWindowExists=function(){return(consoleWindowLoaded&&isSupported&&!consoleClosed);};this.isNewestMessageAtTop=function(){return newestMessageAtTop;};this.setNewestMessageAtTop=function(newestMessageAtTopParam){newestMessageAtTop=bool(newestMessageAtTopParam);if(consoleWindowExists()){getConsoleWindow().setNewestAtTop(newestMessageAtTop);}};this.isScrollToLatestMessage=function(){return scrollToLatestMessage;};this.setScrollToLatestMessage=function(scrollToLatestMessageParam){scrollToLatestMessage=bool(scrollToLatestMessageParam);if(consoleWindowExists()){getConsoleWindow().setScrollToLatest(scrollToLatestMessage);}};this.getWidth=function(){return width;};this.setWidth=function(widthParam){if(checkCanConfigure(\"width\")){width=extractStringFromParam(widthParam,width);}};this.getHeight=function(){return height;};this.setHeight=function(heightParam){if(checkCanConfigure(\"height\")){height=extractStringFromParam(heightParam,height);}};this.getMaxMessages=function(){return maxMessages;};this.setMaxMessages=function(maxMessagesParam){maxMessages=extractIntFromParam(maxMessagesParam,maxMessages);if(consoleWindowExists()){getConsoleWindow().setMaxMessages(maxMessages);}};this.isShowCommandLine=function(){return showCommandLine;};this.setShowCommandLine=function(showCommandLineParam){showCommandLine=bool(showCommandLineParam);if(consoleWindowExists()){getConsoleWindow().setShowCommandLine(showCommandLine);}};this.isShowHideButton=function(){return showHideButton;};this.setShowHideButton=function(showHideButtonParam){showHideButton=bool(showHideButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowHideButton(showHideButton);}};this.isShowCloseButton=function(){return showCloseButton;};this.setShowCloseButton=function(showCloseButtonParam){showCloseButton=bool(showCloseButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowCloseButton(showCloseButton);}};this.getCommandLineObjectExpansionDepth=function(){return commandLineObjectExpansionDepth;};this.setCommandLineObjectExpansionDepth=function(commandLineObjectExpansionDepthParam){commandLineObjectExpansionDepth=extractIntFromParam(commandLineObjectExpansionDepthParam,commandLineObjectExpansionDepth);};var minimized=initiallyMinimized;this.isInitiallyMinimized=function(){return initiallyMinimized;};this.setInitiallyMinimized=function(initiallyMinimizedParam){if(checkCanConfigure(\"initiallyMinimized\")){initiallyMinimized=bool(initiallyMinimizedParam);minimized=initiallyMinimized;}};this.isUseDocumentWrite=function(){return useDocumentWrite;};this.setUseDocumentWrite=function(useDocumentWriteParam){if(checkCanConfigure(\"useDocumentWrite\")){useDocumentWrite=bool(useDocumentWriteParam);}};function QueuedLoggingEvent(loggingEvent,formattedMessage){this.loggingEvent=loggingEvent;this.levelName=loggingEvent.level.name;this.formattedMessage=formattedMessage;}\r\nQueuedLoggingEvent.prototype.append=function(){getConsoleWindow().log(this.levelName,this.formattedMessage);};function QueuedGroup(name,initiallyExpanded){this.name=name;this.initiallyExpanded=initiallyExpanded;}\r\nQueuedGroup.prototype.append=function(){getConsoleWindow().group(this.name,this.initiallyExpanded);};function QueuedGroupEnd(){}\r\nQueuedGroupEnd.prototype.append=function(){getConsoleWindow().groupEnd();};var checkAndAppend=function(){safeToAppend();if(!initialized){init();}else if(consoleClosed&&reopenWhenClosed){createWindow();}\r\nif(safeToAppend()){appendQueuedLoggingEvents();}};this.append=function(loggingEvent){if(isSupported){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);queuedLoggingEvents.push(new QueuedLoggingEvent(loggingEvent,formattedMessage));checkAndAppend();}};this.group=function(name,initiallyExpanded){if(isSupported){queuedLoggingEvents.push(new QueuedGroup(name,initiallyExpanded));checkAndAppend();}};this.groupEnd=function(){if(isSupported){queuedLoggingEvents.push(new QueuedGroupEnd());checkAndAppend();}};var appendQueuedLoggingEvents=function(){while(queuedLoggingEvents.length>0){queuedLoggingEvents.shift().append();}\r\nif(focusConsoleWindow){getConsoleWindow().focus();}};this.setAddedToLogger=function(logger){this.loggers.push(logger);if(enabled&&!lazyInit){init();}};this.clear=function(){if(consoleWindowExists()){getConsoleWindow().clearLog();}\r\nqueuedLoggingEvents.length=0;};this.focus=function(){if(consoleWindowExists()){getConsoleWindow().focus();}};this.focusCommandLine=function(){if(consoleWindowExists()){getConsoleWindow().focusCommandLine();}};this.focusSearch=function(){if(consoleWindowExists()){getConsoleWindow().focusSearch();}};var commandWindow=window;this.getCommandWindow=function(){return commandWindow;};this.setCommandWindow=function(commandWindowParam){commandWindow=commandWindowParam;};this.executeLastCommand=function(){if(consoleWindowExists()){getConsoleWindow().evalLastCommand();}};var commandLayout=new PatternLayout(\"%m\");this.getCommandLayout=function(){return commandLayout;};this.setCommandLayout=function(commandLayoutParam){commandLayout=commandLayoutParam;};this.evalCommandAndAppend=function(expr){var commandReturnValue={appendResult:true,isError:false};var commandOutput=\"\";try{var result,i;if(!commandWindow.eval&&commandWindow.execScript){commandWindow.execScript(\"null\");}\r\nvar commandLineFunctionsHash={};for(i=0,len=commandLineFunctions.length;i<len;i++){commandLineFunctionsHash[commandLineFunctions[i][0]]=commandLineFunctions[i][1];}\r\nvar objectsToRestore=[];var addObjectToRestore=function(name){objectsToRestore.push([name,commandWindow[name]]);};addObjectToRestore(\"appender\");commandWindow.appender=appender;addObjectToRestore(\"commandReturnValue\");commandWindow.commandReturnValue=commandReturnValue;addObjectToRestore(\"commandLineFunctionsHash\");commandWindow.commandLineFunctionsHash=commandLineFunctionsHash;var addFunctionToWindow=function(name){addObjectToRestore(name);commandWindow[name]=function(){return this.commandLineFunctionsHash[name](appender,arguments,commandReturnValue);};};for(i=0,len=commandLineFunctions.length;i<len;i++){addFunctionToWindow(commandLineFunctions[i][0]);}\r\nif(commandWindow===window&&commandWindow.execScript){addObjectToRestore(\"evalExpr\");addObjectToRestore(\"result\");window.evalExpr=expr;commandWindow.execScript(\"window.result=eval(window.evalExpr);\");result=window.result;}else{result=commandWindow.eval(expr);}\r\ncommandOutput=isUndefined(result)?result:formatObjectExpansion(result,commandLineObjectExpansionDepth);for(i=0,len=objectsToRestore.length;i<len;i++){commandWindow[objectsToRestore[i][0]]=objectsToRestore[i][1];}}catch(ex){commandOutput=\"Error evaluating command: \"+getExceptionStringRep(ex);commandReturnValue.isError=true;}\r\nif(commandReturnValue.appendResult){var message=\">>> \"+expr;if(!isUndefined(commandOutput)){message+=newLine+commandOutput;}\r\nvar level=commandReturnValue.isError?Level.ERROR:Level.INFO;var loggingEvent=new LoggingEvent(null,new Date(),level,[message],null);var mainLayout=this.getLayout();this.setLayout(commandLayout);this.append(loggingEvent);this.setLayout(mainLayout);}};var commandLineFunctions=defaultCommandLineFunctions.concat([]);this.addCommandLineFunction=function(functionName,commandLineFunction){commandLineFunctions.push([functionName,commandLineFunction]);};var commandHistoryCookieName=\"log4javascriptCommandHistory\";this.storeCommandHistory=function(commandHistory){setCookie(commandHistoryCookieName,commandHistory.join(\",\"));};var writeHtml=function(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i<len;i++){doc.writeln(lines[i]);}\r\ndoc.close();};this.setEventTypes([\"load\",\"unload\"]);var consoleWindowLoadHandler=function(){var win=getConsoleWindow();win.setAppender(appender);win.setNewestAtTop(newestMessageAtTop);win.setScrollToLatest(scrollToLatestMessage);win.setMaxMessages(maxMessages);win.setShowCommandLine(showCommandLine);win.setShowHideButton(showHideButton);win.setShowCloseButton(showCloseButton);win.setMainWindow(window);var storedValue=getCookie(commandHistoryCookieName);if(storedValue){win.commandHistory=storedValue.split(\",\");win.currentCommandIndex=win.commandHistory.length;}\r\nappender.dispatchEvent(\"load\",{\"win\":win});};this.unload=function(){logLog.debug(\"unload \"+this+\", caller: \"+this.unload.caller);if(!consoleClosed){logLog.debug(\"really doing unload \"+this);consoleClosed=true;consoleWindowLoaded=false;consoleWindowCreated=false;appender.dispatchEvent(\"unload\",{});}};var pollConsoleWindow=function(windowTest,interval,successCallback,errorMessage){function doPoll(){try{if(consoleClosed){clearInterval(poll);}\r\nif(windowTest(getConsoleWindow())){clearInterval(poll);successCallback();}}catch(ex){clearInterval(poll);isSupported=false;handleError(errorMessage,ex);}}\r\nvar poll=setInterval(doPoll,interval);};var getConsoleUrl=function(){var documentDomainSet=(document.domain!=location.hostname);return useDocumentWrite?\"\":getBaseUrl()+\"console.html\"+\r\n(documentDomainSet?\"?log4javascript_domain=\"+escape(document.domain):\"\");};if(inPage){var containerElement=null;var cssProperties=[];this.addCssProperty=function(name,value){if(checkCanConfigure(\"cssProperties\")){cssProperties.push([name,value]);}};var windowCreationStarted=false;var iframeContainerDiv;var iframeId=uniqueId+\"_InPageAppender_\"+consoleAppenderId;this.hide=function(){if(initialized&&consoleWindowCreated){if(consoleWindowExists()){getConsoleWindow().$(\"command\").blur();}\r\niframeContainerDiv.style.display=\"none\";minimized=true;}};this.show=function(){if(initialized){if(consoleWindowCreated){iframeContainerDiv.style.display=\"block\";this.setShowCommandLine(showCommandLine);minimized=false;}else if(!windowCreationStarted){createWindow(true);}}};this.isVisible=function(){return!minimized&&!consoleClosed;};this.close=function(fromButton){if(!consoleClosed&&(!fromButton||confirm(\"This will permanently remove the console from the page. No more messages will be logged. Do you wish to continue?\"))){iframeContainerDiv.parentNode.removeChild(iframeContainerDiv);this.unload();}};open=function(){var initErrorMessage=\"InPageAppender.open: unable to create console iframe\";function finalInit(){try{if(!initiallyMinimized){appender.show();}\r\nconsoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nfunction writeToDocument(){try{var windowTest=function(win){return isLoaded(win);};if(useDocumentWrite){writeHtml(getConsoleWindow().document);}\r\nif(windowTest(getConsoleWindow())){finalInit();}else{pollConsoleWindow(windowTest,100,finalInit,initErrorMessage);}}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nminimized=false;iframeContainerDiv=containerElement.appendChild(document.createElement(\"div\"));iframeContainerDiv.style.width=width;iframeContainerDiv.style.height=height;iframeContainerDiv.style.border=\"solid gray 1px\";for(var i=0,len=cssProperties.length;i<len;i++){iframeContainerDiv.style[cssProperties[i][0]]=cssProperties[i][1];}\r\nvar iframeSrc=useDocumentWrite?\"\":\" src='\"+getConsoleUrl()+\"'\";iframeContainerDiv.innerHTML=\"<iframe id='\"+iframeId+\"' name='\"+iframeId+\"' width='100%' height='100%' frameborder='0'\"+iframeSrc+\" scrolling='no'></iframe>\";consoleClosed=false;var iframeDocumentExistsTest=function(win){try{return bool(win)&&bool(win.document);}catch(ex){return false;}};if(iframeDocumentExistsTest(getConsoleWindow())){writeToDocument();}else{pollConsoleWindow(iframeDocumentExistsTest,100,writeToDocument,initErrorMessage);}\r\nconsoleWindowCreated=true;};createWindow=function(show){if(show||!initiallyMinimized){var pageLoadHandler=function(){if(!container){containerElement=document.createElement(\"div\");containerElement.style.position=\"fixed\";containerElement.style.left=\"0\";containerElement.style.right=\"0\";containerElement.style.bottom=\"0\";document.body.appendChild(containerElement);appender.addCssProperty(\"borderWidth\",\"1px 0 0 0\");appender.addCssProperty(\"zIndex\",1000000);open();}else{try{var el=document.getElementById(container);if(el.nodeType==1){containerElement=el;}\r\nopen();}catch(ex){handleError(\"InPageAppender.init: invalid container element '\"+container+\"' supplied\",ex);}}};if(pageLoaded&&container&&container.appendChild){containerElement=container;open();}else if(pageLoaded){pageLoadHandler();}else{log4javascript.addEventListener(\"load\",pageLoadHandler);}\r\nwindowCreationStarted=true;}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){var iframe=window.frames[iframeId];if(iframe){return iframe;}};safeToAppend=function(){if(isSupported&&!consoleClosed){if(consoleWindowCreated&&!consoleWindowLoaded&&getConsoleWindow()&&isLoaded(getConsoleWindow())){consoleWindowLoaded=true;}\r\nreturn consoleWindowLoaded;}\r\nreturn false;};}else{var useOldPopUp=appender.defaults.useOldPopUp;var complainAboutPopUpBlocking=appender.defaults.complainAboutPopUpBlocking;var reopenWhenClosed=this.defaults.reopenWhenClosed;this.isUseOldPopUp=function(){return useOldPopUp;};this.setUseOldPopUp=function(useOldPopUpParam){if(checkCanConfigure(\"useOldPopUp\")){useOldPopUp=bool(useOldPopUpParam);}};this.isComplainAboutPopUpBlocking=function(){return complainAboutPopUpBlocking;};this.setComplainAboutPopUpBlocking=function(complainAboutPopUpBlockingParam){if(checkCanConfigure(\"complainAboutPopUpBlocking\")){complainAboutPopUpBlocking=bool(complainAboutPopUpBlockingParam);}};this.isFocusPopUp=function(){return focusConsoleWindow;};this.setFocusPopUp=function(focusPopUpParam){focusConsoleWindow=bool(focusPopUpParam);};this.isReopenWhenClosed=function(){return reopenWhenClosed;};this.setReopenWhenClosed=function(reopenWhenClosedParam){reopenWhenClosed=bool(reopenWhenClosedParam);};this.close=function(){logLog.debug(\"close \"+this);try{popUp.close();this.unload();}catch(ex){}};this.hide=function(){logLog.debug(\"hide \"+this);if(consoleWindowExists()){this.close();}};this.show=function(){logLog.debug(\"show \"+this);if(!consoleWindowCreated){open();}};this.isVisible=function(){return safeToAppend();};var popUp;open=function(){var windowProperties=\"width=\"+width+\",height=\"+height+\",status,resizable\";var frameInfo=\"\";try{var frameEl=window.frameElement;if(frameEl){frameInfo=\"_\"+frameEl.tagName+\"_\"+(frameEl.name||frameEl.id||\"\");}}catch(e){frameInfo=\"_inaccessibleParentFrame\";}\r\nvar windowName=\"PopUp_\"+location.host.replace(/[^a-z0-9]/gi,\"_\")+\"_\"+consoleAppenderId+frameInfo;if(!useOldPopUp||!useDocumentWrite){windowName=windowName+\"_\"+uniqueId;}\r\nvar checkPopUpClosed=function(win){if(consoleClosed){return true;}else{try{return bool(win)&&win.closed;}catch(ex){}}\r\nreturn false;};var popUpClosedCallback=function(){if(!consoleClosed){appender.unload();}};function finalInit(){getConsoleWindow().setCloseIfOpenerCloses(!useOldPopUp||!useDocumentWrite);consoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();pollConsoleWindow(checkPopUpClosed,500,popUpClosedCallback,\"PopUpAppender.checkPopUpClosed: error checking pop-up window\");}\r\ntry{popUp=window.open(getConsoleUrl(),windowName,windowProperties);consoleClosed=false;consoleWindowCreated=true;if(popUp&&popUp.document){if(useDocumentWrite&&useOldPopUp&&isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{if(useDocumentWrite){writeHtml(popUp.document);}\r\nvar popUpLoadedTest=function(win){return bool(win)&&isLoaded(win);};if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow(popUpLoadedTest,100,finalInit,\"PopUpAppender.init: unable to create console window\");}}}else{isSupported=false;logLog.warn(\"PopUpAppender.init: pop-ups blocked, please unblock to use PopUpAppender\");if(complainAboutPopUpBlocking){handleError(\"log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.\");}}}catch(ex){handleError(\"PopUpAppender.init: error creating pop-up\",ex);}};createWindow=function(){if(!initiallyMinimized){open();}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){return popUp;};safeToAppend=function(){if(isSupported&&!isUndefined(popUp)&&!consoleClosed){if(popUp.closed||(consoleWindowLoaded&&isUndefined(popUp.closed))){appender.unload();logLog.debug(\"PopUpAppender: pop-up closed\");return false;}\r\nif(!consoleWindowLoaded&&isLoaded(popUp)){consoleWindowLoaded=true;}}\r\nreturn isSupported&&consoleWindowLoaded&&!consoleClosed;};}\r\nthis.getConsoleWindow=getConsoleWindow;};ConsoleAppender.addGlobalCommandLineFunction=function(functionName,commandLineFunction){defaultCommandLineFunctions.push([functionName,commandLineFunction]);};function PopUpAppender(lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(false,null,lazyInit,initiallyMinimized,useDocumentWrite,width,height,this.defaults.focusPopUp);}\r\nPopUpAppender.prototype=new ConsoleAppender();PopUpAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,focusPopUp:false,lazyInit:true,useOldPopUp:true,complainAboutPopUpBlocking:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"600\",height:\"400\",reopenWhenClosed:false,maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:true,useDocumentWrite:true};PopUpAppender.prototype.toString=function(){return\"PopUpAppender\";};log4javascript.PopUpAppender=PopUpAppender;function InPageAppender(container,lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(true,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,false);}\r\nInPageAppender.prototype=new ConsoleAppender();InPageAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,lazyInit:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"100%\",height:\"220px\",maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:false,showLogEntryDeleteButtons:true,useDocumentWrite:true};InPageAppender.prototype.toString=function(){return\"InPageAppender\";};log4javascript.InPageAppender=InPageAppender;log4javascript.InlineAppender=InPageAppender;})();function padWithSpaces(str,len){if(str.length<len){var spaces=[];var numberOfSpaces=Math.max(0,len-str.length);for(var i=0;i<numberOfSpaces;i++){spaces[i]=\" \";}\r\nstr+=spaces.join(\"\");}\r\nreturn str;}\r\n(function(){function dir(obj){var maxLen=0;for(var p in obj){maxLen=Math.max(toStr(p).length,maxLen);}\r\nvar propList=[];for(p in obj){var propNameStr=\" \"+padWithSpaces(toStr(p),maxLen+2);var propVal;try{propVal=splitIntoLines(toStr(obj[p])).join(padWithSpaces(newLine,maxLen+6));}catch(ex){propVal=\"[Error obtaining property. Details: \"+getExceptionMessage(ex)+\"]\";}\r\npropList.push(propNameStr+propVal);}\r\nreturn propList.join(newLine);}\r\nvar nodeTypes={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};var preFormattedElements=[\"script\",\"pre\"];var emptyElements=[\"br\",\"img\",\"hr\",\"param\",\"link\",\"area\",\"input\",\"col\",\"base\",\"meta\"];var indentationUnit=\" \";function getXhtml(rootNode,includeRootNode,indentation,startNewLine,preformatted){includeRootNode=(typeof includeRootNode==\"undefined\")?true:!!includeRootNode;if(typeof indentation!=\"string\"){indentation=\"\";}\r\nstartNewLine=!!startNewLine;preformatted=!!preformatted;var xhtml;function isWhitespace(node){return((node.nodeType==nodeTypes.TEXT_NODE)&&/^[ \\t\\r\\n]*$/.test(node.nodeValue));}\r\nfunction fixAttributeValue(attrValue){return attrValue.toString().replace(/&/g,\"&\").replace(/</g,\"<\").replace(/\"/g,\""\");}\r\nfunction getStyleAttributeValue(el){var stylePairs=el.style.cssText.split(\";\");var styleValue=\"\";for(var j=0,len=stylePairs.length;j<len;j++){var nameValueBits=stylePairs[j].split(\":\");var props=[];if(!/^\\s*$/.test(nameValueBits[0])){props.push(trim(nameValueBits[0]).toLowerCase()+\":\"+trim(nameValueBits[1]));}\r\nstyleValue=props.join(\";\");}\r\nreturn styleValue;}\r\nfunction getNamespace(el){if(el.prefix){return el.prefix;}else if(el.outerHTML){var regex=new RegExp(\"<([^:]+):\"+el.tagName+\"[^>]*>\",\"i\");if(regex.test(el.outerHTML)){return RegExp.$1.toLowerCase();}}\r\nreturn\"\";}\r\nvar lt=\"<\";var gt=\">\";var i,len;if(includeRootNode&&rootNode.nodeType!=nodeTypes.DOCUMENT_FRAGMENT_NODE){switch(rootNode.nodeType){case nodeTypes.ELEMENT_NODE:var tagName=rootNode.tagName.toLowerCase();xhtml=startNewLine?newLine+indentation:\"\";xhtml+=lt;var prefix=getNamespace(rootNode);var hasPrefix=!!prefix;if(hasPrefix){xhtml+=prefix+\":\";}\r\nxhtml+=tagName;for(i=0,len=rootNode.attributes.length;i<len;i++){var currentAttr=rootNode.attributes[i];if(!currentAttr.specified||currentAttr.nodeValue===null||currentAttr.nodeName.toLowerCase()===\"style\"||typeof currentAttr.nodeValue!==\"string\"||currentAttr.nodeName.indexOf(\"_moz\")===0){continue;}\r\nxhtml+=\" \"+currentAttr.nodeName.toLowerCase()+\"=\\\"\";xhtml+=fixAttributeValue(currentAttr.nodeValue);xhtml+=\"\\\"\";}\r\nif(rootNode.style.cssText){var styleValue=getStyleAttributeValue(rootNode);if(styleValue!==\"\"){xhtml+=\" style=\\\"\"+getStyleAttributeValue(rootNode)+\"\\\"\";}}\r\nif(array_contains(emptyElements,tagName)||(hasPrefix&&!rootNode.hasChildNodes())){xhtml+=\"/\"+gt;}else{xhtml+=gt;var childStartNewLine=!(rootNode.childNodes.length===1&&rootNode.childNodes[0].nodeType===nodeTypes.TEXT_NODE);var childPreformatted=array_contains(preFormattedElements,tagName);for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit,childStartNewLine,childPreformatted);}\r\nvar endTag=lt+\"/\"+tagName+gt;xhtml+=childStartNewLine?newLine+indentation+endTag:endTag;}\r\nreturn xhtml;case nodeTypes.TEXT_NODE:if(isWhitespace(rootNode)){xhtml=\"\";}else{if(preformatted){xhtml=rootNode.nodeValue;}else{var lines=splitIntoLines(trim(rootNode.nodeValue));var trimmedLines=[];for(i=0,len=lines.length;i<len;i++){trimmedLines[i]=trim(lines[i]);}\r\nxhtml=trimmedLines.join(newLine+indentation);}\r\nif(startNewLine){xhtml=newLine+indentation+xhtml;}}\r\nreturn xhtml;case nodeTypes.CDATA_SECTION_NODE:return\"<![CDA\"+\"TA[\"+rootNode.nodeValue+\"]\"+\"]>\"+newLine;case nodeTypes.DOCUMENT_NODE:xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation);}\r\nreturn xhtml;default:return\"\";}}else{xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit);}\r\nreturn xhtml;}}\r\nfunction createCommandLineFunctions(){ConsoleAppender.addGlobalCommandLineFunction(\"$\",function(appender,args,returnValue){return document.getElementById(args[0]);});ConsoleAppender.addGlobalCommandLineFunction(\"dir\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=dir(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"dirxml\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=getXhtml(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"cd\",function(appender,args,returnValue){var win,message;if(args.length===0||args[0]===\"\"){win=window;message=\"Command line set to run in main window\";}else{if(args[0].window==args[0]){win=args[0];message=\"Command line set to run in frame '\"+args[0].name+\"'\";}else{win=window.frames[args[0]];if(win){message=\"Command line set to run in frame '\"+args[0]+\"'\";}else{returnValue.isError=true;message=\"Frame '\"+args[0]+\"' does not exist\";win=appender.getCommandWindow();}}}\r\nappender.setCommandWindow(win);return message;});ConsoleAppender.addGlobalCommandLineFunction(\"clear\",function(appender,args,returnValue){returnValue.appendResult=false;appender.clear();});ConsoleAppender.addGlobalCommandLineFunction(\"keys\",function(appender,args,returnValue){var keys=[];for(var k in args[0]){keys.push(k);}\r\nreturn keys;});ConsoleAppender.addGlobalCommandLineFunction(\"values\",function(appender,args,returnValue){var values=[];for(var k in args[0]){try{values.push(args[0][k]);}catch(ex){logLog.warn(\"values(): Unable to obtain value for key \"+k+\". Details: \"+getExceptionMessage(ex));}}\r\nreturn values;});ConsoleAppender.addGlobalCommandLineFunction(\"expansionDepth\",function(appender,args,returnValue){var expansionDepth=parseInt(args[0],10);if(isNaN(expansionDepth)||expansionDepth<0){returnValue.isError=true;return\"\"+args[0]+\" is not a valid expansion depth\";}else{appender.setCommandLineObjectExpansionDepth(expansionDepth);return\"Object expansion depth set to \"+expansionDepth;}});}\r\nfunction init(){createCommandLineFunctions();}\r\ninit();})();function createDefaultLogger(){var logger=log4javascript.getLogger(defaultLoggerName);var a=new log4javascript.PopUpAppender();logger.addAppender(a);return logger;}\r\nlog4javascript.setDocumentReady=function(){pageLoaded=true;log4javascript.dispatchEvent(\"load\",{});};if(window.addEventListener){window.addEventListener(\"load\",log4javascript.setDocumentReady,false);}else if(window.attachEvent){window.attachEvent(\"onload\",log4javascript.setDocumentReady);}else{var oldOnload=window.onload;if(typeof window.onload!=\"function\"){window.onload=log4javascript.setDocumentReady;}else{window.onload=function(evt){if(oldOnload){oldOnload(evt);}\r\nlog4javascript.setDocumentReady();};}}\r\nreturn log4javascript;},this);\r\n","/**\n * lite-url - Small, JS lib that uses regex for parsing a URL into it's component parts.\n * @version v1.0.5\n * @link https://github.com/sadams/lite-url\n * @license BSD-3-Clause\n */\n(function(){\"use strict\";function r(r,n,t){var e=r.split(n),o=e.shift();return t(o,e.join(n))}function n(n){var t={hash:\"\",host:\"\",hostname:\"\",origin:\"\",pathname:\"\",protocol:\"\",search:\"\",password:\"\",username:\"\",port:\"\"};return r(n,\"#\",function(n,e){e&&(t.hash=e?\"#\"+e:\"\"),r(n,\"?\",function(n,e){e&&(t.search=\"?\"+e),n&&r(n,\"//\",function(n,e){t.protocol=n,r(e,\"/\",function(n,e){t.pathname=\"/\"+(e||\"\"),(t.protocol||n)&&(t.origin=t.protocol+\"//\"+n),r(n,\"@\",function(n,e){if(e){var o=n.split(\":\");t.username=o[0],t.password=o[1]}else e=n;t.host=e,r(e,\":\",function(r,n){t.hostname=r,n&&(t.port=n)})})})})})}),t.href=t.origin+t.pathname+t.search+t.hash,t}function t(r){var n={},t=r.search;if(t){t=t.replace(new RegExp(\"\\\\?\"),\"\");var e=t.split(\"&\");for(var o in e)if(e.hasOwnProperty(o)&&e[o]){var i=e[o].split(\"=\");n[i[0]]=i[1]}}return n}function e(r){var e=i[r];return\"undefined\"!=typeof e?e:(e=n(r),e.params=t(e),i[r]=e,e)}var o=this,i={};return e.changeQueryParser=function(r){t=r},\"undefined\"!=typeof exports?(\"undefined\"!=typeof module&&module.exports&&(exports=module.exports=e),exports.liteURL=e):o.liteURL=e,e}).call(this);\n","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adapter/adapter.js\n # Provides an empty object for later loaded adapter objects\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n/*!\n * J1 Adapter\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function ( j1, window ) {\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the adapter object\n // -------------------------------------------------------------------------\n _init_: function () {\n return;\n } // END _init_\n\n }; // END return\n\n})( j1, window );\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n'use strict';\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nmodule.exports = anime;\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/j1_template/core.js\n # Provides an empty object for later loaded core objects\n #\n # Product/Info:\n # https://jekyll.one\n # http://getbootstrap.com/\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// module.exports = function core ( options ) {\n/*!\n * J1 Core\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function (options) {\n\n // ---------------------------------------------------------------------------\n // Global variables\n // ---------------------------------------------------------------------------\n // var messageCatalog = {};\n // var state;\n // var logger;\n // var logText;\n\n // ---------------------------------------------------------------------------\n // Default settings\n // ---------------------------------------------------------------------------\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n var state = 'loaded';\n\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the core object\n // -------------------------------------------------------------------------\n _init_: function (options) {\n\n //\n // Place handling of options here\n //\n\n return;\n }, // END _init_\n\n // -------------------------------------------------------------------------\n // Returns the current (processing) state of the module\n // -------------------------------------------------------------------------\n getState: function () {\n return state;\n }, // END state\n\n // -------------------------------------------------------------------------\n // isMobile\n // Return true if the current platform is a mobile device\n // -------------------------------------------------------------------------\n isMobile: function (ua_name) {\n var mobile = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(a.substr(0,4))) mobile = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return mobile;\n }, // END isMobile\n\n // -------------------------------------------------------------------------\n // Clear button for input fields (forms)\n // -------------------------------------------------------------------------\n bsFormClearButton: function () {\n// $('.position-relative :input').on('keydown focus', function() {\n $(':input').on('keydown focus change mouseover', function() {\n if ($(this).val().length > 0) {\n $(this).nextAll('.form-clear').removeClass('d-none');\n }\n }).on('keydown keyup blur', function() {\n if ($(this).val().length === 0) {\n $(this).nextAll('.form-clear').addClass('d-none');\n }\n });\n\n // $('.form-clear').on('click', function() {\n // $(this).addClass('d-none').prevAll(':input').val('');\n // // hide|clear results from top search\n // $('#search-results').hide();\n // $('#search-results').html('');\n // });\n }, // END bsFormClearButton\n\n // -------------------------------------------------------------------------\n // Initialize Backdrops on all <p> elements of class \"dropcap\"\n // -------------------------------------------------------------------------\n createDropCap: function () {\n\n // add class dropcap\n $('.paragraph.dropcap').children('p').addClass('dropcap');\n\n //\n if ($('p.dropcap').length) {\n $('p.dropcap').each(function() {\n var $p = $(this);\n var text = $.trim($p.text());\n var firstLetter = text[0];\n var marginalDropCap = '<span class=\"j1-dropcap\">' + firstLetter + '</span>';\n\n $p.html(text.replace(firstLetter, marginalDropCap));\n });\n }\n } // END createDropCap\n\n }; // end return (object)\n\n//})( jQuery, window );\n})(); // END IFFE\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/navigator/navigator.js\n # Provides all JavaScript core functions for J1 Navigator\n #\n # Product/Info:\n # https://jekyll.one\n # https://github.com/adamnurdin01/navigator\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 adamnurdin01\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Bootsnav is licensed under MIT License.\n # See: https://github.com/adamnurdin01/navigator\n #\n # -----------------------------------------------------------------------------\n # NOTE:\n # jadams, 2020-06-21:\n # J1 Navigator needs a general revision on BS4 code and functionalities\n # Current, only base function are tested with BS4 (was coded for BS3)\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// TODO: Height of dropdowns are to be limited in general\n\n// -----------------------------------------------------------------------------\n// Navigator core registered as 'j1.core.navigator'\n// -----------------------------------------------------------------------------\n\nmodule.exports = function navigator ( options ) {\n\n // ---------------------------------------------------------------------------\n // global vars\n // ---------------------------------------------------------------------------\n var message = {};\n var state;\n var logger;\n var logText;\n\n // -----------------------------------------------------------------------\n // default settings\n // -----------------------------------------------------------------------\n var settings = $.extend ({\n foo: 'bar',\n bar: 'foo',\n }, options );\n\n // ---------------------------------------------------------------------------\n // main object\n // ---------------------------------------------------------------------------\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function( defaultOptions, menuOptions ) {\n logger = log4javascript.getLogger('j1.core.navigator');\n logText = 'core is being initialized';\n\n logger.info(logText);\n this.manageDropdownMenu(defaultOptions, menuOptions);\n this.navbarSticky();\n this.eventHandler(defaultOptions); // jadams, 2021-07-03: initialize events early\n\n message.type = 'command';\n message.action = 'core_initialized';\n message.text = 'navigator core initialized';\n j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n\n return true;\n },\n\n // -------------------------------------------------------------------------\n // event handler\n // -------------------------------------------------------------------------\n eventHandler: function(options) {\n var defaultOptions = options;\n var logger = log4javascript.getLogger('j1.core.navigator.eventHandler');\n var $getNav = $('nav.navbar.navigator');\n var json_data;\n\n // const seeMe = 'https://smee.io/wlNIFNiJN0GClm2';\n // const middleware = 'localhost:5000/state';\n // const web_server_dev = 'http://localhost:41000/status';\n // const utility_server = 'http://localhost:41001/git?request=pull';\n // var sender = seeMe;\n // var payload;\n\n // if (j1.checkUserAgent('IE') || j1.checkUserAgent('Edge')) {\n // logger.warn('HTML5 server side events (SSE) not supported for: ' + userAgent);\n // logger.warn('Middleware messages disabled');\n // } else {\n // const middleware_status = new EventSource(sender);\n //\n // // -----------------------------------------------------------------------\n // // middleware event handler ( SSE currently NOT used)\n // // -----------------------------------------------------------------------\n // middleware_status.onmessage = (event) => {\n // const payload = JSON.parse(event.data);\n //\n // logger.debug('middleware: event received');\n //\n // json_data = JSON.stringify(payload, undefined, 2);\n // logText = 'payload: ' + json_data;\n // logger.debug(logText);\n //\n // message.type = 'command';\n // message.action = 'status';\n // message.text = payload;\n // j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n //\n // return true;\n // }; // END event onMessage\n // }\n\n // bind click event to all links with \"#\" to suppress default action\n // See: https://stackoverflow.com/questions/134845/which-href-value-should-i-use-for-javascript-links-or-javascriptvoid0\n //\n $('a[href=\"#\"]').click(function(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n logger.info('bound click event to \"#\", suppress default action');\n });\n\n // -----------------------------------------------------------------------\n // Navbar Sticky\n // -----------------------------------------------------------------------\n var navSticky = $getNav.hasClass('navbar-sticky');\n if( navSticky ){\n // Wraped navigation\n $getNav.wrap('<div class=\\'wrap-sticky\\'></div>');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Center\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('brand-center') ){\n var postsArr = new Array();\n var index = $('nav.brand-center');\n var $postsList = index.find('ul.navbar-nav');\n\n //Create array of all posts in lists\n index.find('ul.navbar-nav > li').each(function(){\n postsArr.push($(this).html());\n });\n\n // Split the array at this point. The original array is altered.\n var firstList = postsArr.splice(0, Math.round(postsArr.length / 2));\n var secondList = postsArr;\n var ListHTML = '';\n\n var createHTML = function(list) {\n ListHTML = '';\n for (var i = 0; i < list.length; i++) {\n ListHTML += '<li>' + list[i] + '</li>';\n }\n };\n\n // Generate HTML for first list\n createHTML(firstList);\n $postsList.html(ListHTML);\n index.find('ul.nav').first().addClass('navbar-left');\n\n // Generate HTML for second list\n createHTML(secondList);\n //Create new list after original one\n $postsList.after('<ul class=\"nav navbar-nav\"></ul>').next().html(ListHTML);\n index.find('ul.nav').last().addClass('navbar-right');\n\n // Wrap navigation menu\n index.find('ul.nav.navbar-left').wrap('<div class=\\'col_half left\\'></div>');\n index.find('ul.nav.navbar-right').wrap('<div class=\\'col_half right\\'></div>');\n\n // Selection Class\n index.find('ul.navbar-nav > li').each(function() {\n var dropDown = $('ul.dropdown-menu', this),\n megaMenu = $('ul.megamenu-content', this);\n dropDown.closest('li').addClass('dropdown');\n megaMenu.closest('li').addClass('megamenu-fw');\n });\n }\n\n // -----------------------------------------------------------------------\n // Menu Center\n // -----------------------------------------------------------------------\n if( $getNav.find('ul.nav').hasClass('navbar-center')) {\n $getNav.addClass('menu-center');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Full\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')) {\n // Add Class to body\n $('nav.navbar.navigator').find('ul.nav').wrap('<div class=\\'wrap-full-menu\\'></div>');\n $('.wrap-full-menu').wrap('<div class=\\'nav-full\\'></div>');\n $('ul.nav.navbar-nav').prepend('<li class=\\'close-full-menu\\'><a href=\\'#\\'><i class=\\'mdi mdi-close\\'></i></a></li>');\n } else if( $getNav.hasClass('navbar-mobile') ) {\n $getNav.removeClass('no-full');\n } else {\n $getNav.addClass('no-full');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Fixed\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('no-background') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('no-background');\n } else {\n $('.navbar-fixed').addClass('no-background');\n }\n });\n }\n\n if( $getNav.hasClass('navbar-transparent') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('navbar-transparent');\n $('.navbar-fixed').addClass('navbar-scrolled');\n } else {\n $('.navbar-fixed').removeClass('navbar-scrolled');\n $('.navbar-fixed').addClass('navbar-transparent');\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Toggle Search\n // https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery\n // https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\n // https://stackoverflow.com/questions/5963669/whats-the-difference-between-event-stoppropagation-and-event-preventdefault\n // -----------------------------------------------------------------------\n// $('nav.navbar.navigator .attr-nav').each(function() {\n $('.attr-nav').each(function() {\n logger.debug('register OPEN event|s for QuickSearch');\n $('li.search > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action OPEN');\n $('html,body').animate({scrollTop: 0}, 0);\n $('.top-search').slideToggle('slow', 'swing', function() {\n if ( $('.top-search').is(':visible') ) {\n // disable scrolling (desktop)\n $('body').addClass('stop-scrolling');\n // disable scrolling (mobile)\n $('body').bind('touchmove', function(e){e.preventDefault();});\n // disable navbar\n $('#' + defaultOptions.nav_bar.container_id).hide();\n } else {\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n }\n });\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n logger.debug('register CLOSE event|s for QuickSearch');\n $('.input-group-addon.close-search').on('click', function(e) {\n e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action CLOSE');\n $('.top-search').slideUp('slow', 'swing');\n $('html,body').animate({scrollTop: 0}, 0);\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n e.stopPropagation(); // don't bubble up the event\n });\n\n // -----------------------------------------------------------------------\n // Toggle Translator SHOW|HIDE\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n logger.debug('register SHOW|HIDE event|s for J1 Translator');\n $('li.translator > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n // window.location.reload(true);\n logger.debug('toggle translator icon SHOW|HIDE');\n // See: https://api.jquery.com/toggle/\n // With no parameters, the .toggle() method simply toggles the visibility of elements\n $('#google_translate_element').toggle();\n if ($('#google_translate_element').css('display') !== 'none') {\n $('html,body').animate({scrollTop: 0}, 'slow');\n }\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n\n // -----------------------------------------------------------------------\n // Wrapper\n // -----------------------------------------------------------------------\n $('body').wrapInner( '<div class=\\'wrapper\\'></div>');\n\n }, // end event\n\n // -------------------------------------------------------------------------\n // Manage the Menu Dropdowns for Desktop|Mobile\n // -------------------------------------------------------------------------\n manageDropdownMenu : function( defaultOptions, menuOptions ) {\n\n var navDefaultOptions = defaultOptions;\n var navMenuOptions = menuOptions;\n\n var $getNav = $('nav.navbar.navigator');\n var $windowOrientation = window.matchMedia('(orientation: landscape)').matches ? 'landscape' : 'portrait';\n var $getWindow = $(window).width();\n var $getNavWidth = $('nav').width();\n var $getIn = $getNav.find('ul.nav').data('in');\n var $getOut = $getNav.find('ul.nav').data('out');\n\n var menuSelector = '#' +navMenuOptions.xhr_container_id+ '.collapse';\n var delayMenuOpen = navMenuOptions.delay_menu_open;\n\n var $menu;\n var breakPoint;\n var $dropDown;\n var timeoutHandle;\n\n // BS4 @media MAX breakpoints\n // NOTE: a media query is always a range\n // -----------------------------------------------------------------------\n var gridBreakpoint_lg = 992; // bs-breakpoint-lg\n var gridBreakpoint_md = 768; // bs-breakpoint-md\n var gridBreakpoint_sm = 576; // bs-breakpoint-sm\n\n // BS4 @media MIN breakpoints\n // -----------------------------------------------------------------------\n // NOTE: a media query is always a range\n // var gridBreakpoint_lg = 991;\n // var gridBreakpoint_md = 767;\n // var gridBreakpoint_sm = 575;\n\n // @media ranges\n // -----------------------------------------------------------------------\n var small_range = {min: '0em', max: '40em'}; /* 0, 640px */\n var medium_range = {min: '40.063em', max: '64em'}; /* 641px, 1024px */\n var large_range = {min: '64.063em', max: '90em'}; /* 1025px, 1440px */\n var xlarge_range = {min: '90.063em', max: '120em'}; /* 1441px, 1920px */\n var xxlarge_range = {min: '120.063em'}; /* 1921px */\n\n\n // jadams, 2019-05-01: Set Media Breakpoint for Desktop|Mobile Navigation\n if ( navDefaultOptions.nav_bar.media_breakpoint === 'lg' ) {\n breakPoint = gridBreakpoint_lg;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'md' ) {\n breakPoint = gridBreakpoint_md;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'sm' ) {\n breakPoint = gridBreakpoint_sm;\n } else{\n breakPoint = gridBreakpoint_lg;\n }\n\n // -----------------------------------------------------------------------\n // Tablet or Mobile\n // NOTE:\n // Managing the mobile menu is moved to MMenu Plugin\n // Only base functions like QuickLinks are managed by\n // J1 Navigator\n // -----------------------------------------------------------------------\n // MIN media breakpoint\n if ( $getWindow <= breakPoint ) {\n\n // Collapse Navbar\n $(menuSelector).addClass('navbar-collapse');\n $(menuSelector).removeClass('show'); //\n $('#navigator_nav_quicklinks').addClass('show');\n\n // Enable click Quicklink Navigation\n $('nav.navbar.navigator .attr-nav').each(function() {\n $('.dropdown-menu', this).removeClass('animated');\n $('li.dropdown', this).off('mouseenter');\n $('li.dropdown', this).off('mouseleave');\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n $(this).closest('li.dropdown').find('.dropdown-menu').first().stop().fadeToggle();\n $('.navbar-toggle').each(function(){\n $('.mdi', this).removeClass('mdi-close');\n $('.mdi', this).addClass('mdi-menu');\n $('.navbar-collapse').removeClass('in');\n $('.navbar-collapse').removeClass('open');\n });\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).stop().fadeOut();\n $('li.dropdown', this).removeClass('open');\n // return false;\n });\n });\n\n $('#desktop_menu').hide();\n\n // -----------------------------------------------------------------------\n // Desktop Navigation does NOT work on physical devices like iPad|Pro\n // Config DISABLED\n //\n// } else if ( $getWindow > breakPoint || $getWindow <= 1024 && $windowOrientation == 'portrait' ) {\n } else if ( $getWindow > breakPoint ) {\n // -----------------------------------------------------------------------\n // Desktop\n // -----------------------------------------------------------------------\n $('#navigator_nav_quicklinks').removeClass('show');\n $('#desktop_menu').show();\n\n // jadams, 2021-03-05: manage dropdown menus\n // ---------------------------------------------------------------------\n\n $('.dropdown-menu > li').on('mouseenter', function(){\n if ($('body').hasClass('stop-scrolling')){\n return false;\n } else {\n $('body').addClass('stop-scrolling');\n }\n });\n\n $('.dropdown-menu > li').on('mouseleave', function(){\n // stop scrolling if top search or any (mmenu) drawer is opened\n if ($('body').hasClass('stop-scrolling')){\n $('body').removeClass('stop-scrolling');\n }\n });\n\n // limit the dropdown menu lenght if needed\n $('.dropdown-menu > li').hover(function() {\n var $container = $(this);\n var $list = $container.find('ul');\n\n // limit LAST menu ONLY\n //\n if ( $list.length == 1 ) {\n $list.addClass('scrollable-menu');\n }\n });\n\n // jadams, 2021-03-06: Enable|Show Desktop Menu|s\n //\n $(menuSelector).removeClass('navbar-collapse');\n $(menuSelector).addClass('show');\n\n // Navbar Sidebar\n // jadams, 2021-03-05: Sidebar NOT used anymore\n\n // Open Desktop Menu|s on hover\n //\n $('nav.navbar.navigator ul.nav').each(function() {\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.megamenu-fw', this).each(function(){\n $('.title', this).off('click');\n $('a.dropdown-toggle', this).off('click');\n $('.content').removeClass('animated');\n });\n $('.dropdown-menu', this).addClass('animated');\n\n $('li.dropdown', this).on('mouseenter', function(){\n $menu = $('.dropdown-menu', this).eq(0);\n $dropDown = $(this);\n\n $menu.removeClass($getOut);\n $menu.removeClass('open');\n $dropDown.addClass('open');\n // Get|Set the timeout object to delay the dropdown open\n timeoutHandle = window.setTimeout(function () {\n if ($dropDown.hasClass('open')){\n $menu.stop().fadeIn().addClass($getIn);\n $menu.addClass('open');\n $dropDown.addClass('open');\n }\n }, delayMenuOpen);\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n $(this).removeClass('open').removeClass('open');\n\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n\n $(this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle);\n $('li.dropdown', this).removeClass('open');\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n }); // END Desktop Menu\n\n } // end Desktop\n\n // -----------------------------------------------------------------------\n // Hover Open on Quicklink Navigation\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.dropdown-menu', this).addClass('animated');\n $('li.dropdown', this).on('mouseenter', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getOut);\n $('.dropdown-menu', this).eq(0).stop().fadeIn().addClass($getIn);\n $(this).addClass('open');\n //return false;\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $(this).removeClass('open');\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $('li.dropdown', this).removeClass('open');\n //return false;\n });\n });\n\n // -----------------------------------------------------------------------\n // Fullscreen Menu\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')){\n var windowHeight = $(window).height(),\n windowWidth = $(window).width();\n\n $('.nav-full').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('width', windowWidth + 'px');\n\n $('.navbar-collapse').addClass('animated');\n $('.navbar-toggle').each(function(){\n var getId = $(this).data('target');\n $(this).off('click');\n $(this).on('click', function(e){\n e.preventDefault();\n $(getId).removeClass($getOut);\n $(getId).addClass('in');\n $(getId).addClass($getIn);\n // e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n\n $('li.close-full-menu').on('click', function(e){\n e.preventDefault();\n $(getId).addClass($getOut);\n setTimeout(function(){\n $(getId).removeClass('in');\n $(getId).removeClass($getIn);\n }, 500);\n //e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n });\n }\n }, // end manageDropdownMenu\n\n // -------------------------------------------------------------------------\n // Sticky Navbar\n // -------------------------------------------------------------------------\n navbarSticky : function() {\n var $getNav = $('nav.navbar.navigator'),\n navSticky = $getNav.hasClass('navbar-sticky');\n\n if (navSticky) {\n // Set Height Navigation\n var $getHeight = $getNav.height();\n $('.wrap-sticky').height($getHeight);\n\n // Windown on scroll\n var getOffset = $('.wrap-sticky').offset().top;\n $(window).on('scroll', function(){\n var scrollTop = $(window).scrollTop();\n if(scrollTop > getOffset){\n $getNav.addClass('sticked');\n }else {\n $getNav.removeClass('sticked');\n }\n });\n }\n }, // end navbarSticky\n\n // -------------------------------------------------------------------------\n // updateSidebar\n // Note:\n // -------------------------------------------------------------------------\n updateSidebar: function (user_data) {\n var logger = log4javascript.getLogger('j1.core.navigator.updateSidebar');\n var json_message;\n\n// json_message = JSON.stringify(user_data, undefined, 2); // multiline\n json_message = JSON.stringify(user_data);\n logText = 'user state data: ' + json_message;\n logger.debug(logText);\n\n // Replace Macro placeholders to values\n j1.resolveMacros(user_data);\n // Replace Macro values only\n j1.updateMacros(user_data);\n\n return true;\n\n }, // END updateSidebar\n\n }; // end return (object)\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~200_template_js/js/asciidoctor/asciidoctor.js\n # Provides JS functions to (dynamically) modify Asciidoctor HTML elements\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # NOTE:\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* global window */\n\n// TODO:\n\n// -----------------------------------------------------------------------------\n// J1 Asciidoctor registered as \"asciidoctor\"\n// -----------------------------------------------------------------------------\n/*!\n * J1 Asciidoctor\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = function asciidoctor (options) {\n\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function (options) {\n\n var moduleOptions = options;\n var logger = log4javascript.getLogger('j1.core.asciidoctor');\n\n var moduleDefaults = {\n dummyOption: false, // placeholder\n };\n var options = $.extend(moduleDefaults,moduleOptions);\n\n logText = 'J1 Asciidoctor is being initialized';\n logger.info(logText);\n\n this.callouts();\n\n }, // end initializer\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n // see: https://stackoverflow.com/questions/19393493/add-colgroup-for-each-table-column\n callouts: function( options ) {\n var colgroupList = '';\n\n // If the colist does not have a <colgroup> structure\n //\n \tif($('.colist > table > colgroup').length == 0) {\n colgroupList += '<!-- [INFO ] [j1.core.asciidoctor ] [ place a colgroup dynamically ] -->' + '\\n';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n \t\t$(\".colist > table\").prepend(colgroupList);\n }\n\n }, // end callouts\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n conums: function( options ) {\n var dependencies_met_page_finished = setInterval(function() {\n if (j1.getState() == 'finished') {\n // If the colist does not have a <colgroup> structure\n \tif($('.colist > table > colgroup').length == 0) {\n\n \t\tvar colgroupList = '';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n\n \t\t$(\".colist > table\").prepend(colgroupList);\n clearInterval(dependencies_met_page_finished);\n \t}\n }\n });\n }, // end conums\n\n }; // END return\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/scroll-smooth/scroll-smooth.js\n # Provides Javascript functions for smooth scrolling\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2020 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint indent: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// scrollSmooth core registered as \"scrollSmooth\"\n// -----------------------------------------------------------------------------\nmodule.exports = function scrollSmooth ( options ) {\n\n // Default settings\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n // -----------------------------------------------------------------------\n // Helper functions\n // -----------------------------------------------------------------------\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'));\n }\n\n function isCssSmoothScrollSupported () {\n return 'scrollBehavior' in document.documentElement.style;\n }\n\n return {\n // -------------------------------------------------------------------------\n // Initialize scrollSmooth\n // -------------------------------------------------------------------------\n scroll: function ( target, options ) {\n\n var logger;\n var logText;\n\n logger = log4javascript.getLogger('j1.core.scrollSmooth');\n\n // indicator|check currently NOT used\n // if (isCssSmoothScrollSupported()) { }\n\n logText = 'run module scrollSmooth';\n logger.info(logText);\n\n var duration = options.duration;\n var offset = options.offset;\n\n // var pageUrl = options.location.hash\n // ? stripHash(options.location.href)\n // : options.location.href;\n\n this.scrollTo(target, {\n duration: duration,\n offset: offset,\n callback: null\n });\n\n logText = 'scrollSmooth finished';\n logger.info(logText);\n },\n\n // -------------------------------------------------------------------------\n // scrollTo\n // -------------------------------------------------------------------------\n scrollTo: function ( target, options ) {\n var start = window.pageYOffset;\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n };\n\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]');\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target;\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration;\n var timeStart;\n var timeElapsed;\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time); });\n function loop (time) {\n timeElapsed = time - timeStart;\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) { requestAnimationFrame(loop); } else { end(); }\n }\n\n function end () {\n window.scrollTo(0, start + distance);\n\n // jadams, 2020-07-04: on (some?) mobile devices, the navbar\n // background is NOT switched (always?) correctly on a\n // page RELOAD.\n //\n // Solution: scroll the page one pixel back and forth (trigger)\n // to get the right position for the Toccer and adjust the\n // Navigator to display the (tranparent) navbar correctly based\n // on their onscroll events registered.\n //\n $(window).scrollTop($(window).scrollTop()+1);\n $(window).scrollTop($(window).scrollTop()-1);\n\n if (typeof opt.callback === 'function') { opt.callback(); }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n }\n } // END scrollTo\n\n }; // END return\n}( jQuery );\n","module.exports = require('./src/deepl-translator');\n","const languages = require('./languages');\nconst {\n validateText,\n validateSourceLanguage,\n validateTargetLanguage,\n validateSourceTargetLanguage,\n validateBeginning,\n} = require('./validators');\n\nconst {\n splitSentences,\n getTranslation,\n getAlternatives,\n} = require('./deepl-api-helper');\nconst { EOL } = require('os');\n\nfunction detectLanguage(text) {\n return translate(text, 'EN').then(({ resolvedSourceLanguage }) => {\n return {\n languageCode: resolvedSourceLanguage,\n languageName: resolvedSourceLanguage\n .split(',')\n .map(code => languages[code])\n .join(','),\n };\n });\n}\n\nfunction validateInputs(validationArray) {\n return Promise.all(validationArray).then(validationResults => {\n const errors = validationResults\n .filter(validationResult => validationResult)\n .join('\\n');\n\n return errors.length\n ? Promise.reject(\n new Error(\n `Input parameter validation failed with error(s): ${errors}`\n )\n )\n : Promise.resolve('');\n });\n}\n\nfunction translate(text, targetLanguage, sourceLanguage = 'auto') {\n return validateInputs([\n validateText(text),\n validateSourceLanguage(sourceLanguage),\n validateTargetLanguage(targetLanguage),\n validateSourceTargetLanguage(sourceLanguage, targetLanguage),\n ])\n .then(valid => splitSentences(text.split(EOL), sourceLanguage))\n .then(transformSplitSentencesResponse)\n .then(([paragraphs, resolvedSourceLanguage]) => {\n return Promise.all(\n paragraphs.map(\n paragraph =>\n paragraph.length === 0\n ? []\n : getTranslation(\n paragraph,\n targetLanguage,\n resolvedSourceLanguage || 'auto'\n ).then(transformTranslationResponse)\n )\n ).then(translatedParagraphs => ({\n targetLanguage,\n resolvedSourceLanguage: translatedParagraphs\n .map(paragraph => paragraph[1])\n .reduce(\n (unique, current) => [\n ...unique,\n unique.indexOf(current) < 0 && current,\n ],\n []\n )\n .filter(lang => lang)\n .join(','),\n translation: translatedParagraphs\n .map(([paragraph]) => paragraph || '')\n .join(EOL),\n }));\n });\n}\n\nfunction translateWithAlternatives(\n text,\n targetLanguage,\n sourceLanguage = 'auto',\n beginning\n) {\n return validateInputs([\n validateText(text),\n validateSourceLanguage(sourceLanguage),\n validateTargetLanguage(targetLanguage),\n validateSourceTargetLanguage(sourceLanguage, targetLanguage),\n ])\n .then(valid =>\n getTranslation([text], targetLanguage, sourceLanguage, beginning)\n )\n .then(({ result: { source_lang, translations: [{ beams }] } }) => ({\n targetLanguage,\n resolvedSourceLanguage: source_lang,\n translation: beams[0].postprocessed_sentence,\n translationAlternatives: beams.map(\n ({ postprocessed_sentence }) => postprocessed_sentence\n ),\n }));\n}\n\nfunction wordAlternatives(text, targetLanguage, sourceLanguage, beginning) {\n return validateInputs([\n validateText(text),\n validateSourceLanguage(sourceLanguage),\n validateTargetLanguage(targetLanguage),\n validateSourceTargetLanguage(sourceLanguage, targetLanguage),\n validateBeginning(beginning),\n ])\n .then(valid =>\n getAlternatives(text, targetLanguage, sourceLanguage, beginning)\n )\n .then(res => {\n return {\n targetLanguage: res.result.target_lang,\n resolvedSourceLanguage: res.result.source_lang,\n alternatives: res.result.translations[0].beams.map(alt => {\n return alt.postprocessed_sentence;\n }),\n };\n });\n}\n\nfunction transformTranslationResponse(response) {\n try {\n const {\n result: {\n target_lang: targetLanguage,\n source_lang: resolvedSourceLanguage,\n translations,\n },\n } = response;\n\n const translatedSentences = translations.map(\n ({ beams: [{ postprocessed_sentence: translation }] }) => translation\n );\n\n return [translatedSentences.join(' '), resolvedSourceLanguage];\n } catch (error) {\n throw new Error(\n `Unexpected error when parsing deepl translation response: ${JSON.stringify(\n response\n )}`\n );\n }\n}\n\nfunction transformSplitSentencesResponse(response) {\n try {\n const {\n result: { splitted_texts: texts, lang_is_confident, lang },\n } = response;\n\n return [texts, lang_is_confident && lang];\n } catch (error) {\n throw new Error(\n `Unexpected error when parsing deepl split sentence response: ${JSON.stringify(\n response\n )}`\n );\n }\n}\n\nmodule.exports = {\n translate,\n translateWithAlternatives,\n detectLanguage,\n wordAlternatives,\n};\n","const languages = require('./languages');\n\nmodule.exports = {\n validateText: text =>\n Promise.resolve(\n (typeof text !== 'string' || text.trim().length === 0) &&\n 'Must provide valid text for translation'\n ),\n validateTargetLanguage: targetLanguage =>\n Promise.resolve(\n !languages[targetLanguage] &&\n `Invalid target language code ${targetLanguage}`\n ),\n validateSourceLanguage: sourceLanguage =>\n Promise.resolve(\n sourceLanguage !== 'auto' &&\n !languages[sourceLanguage] &&\n `Invalid source language code ${sourceLanguage}`\n ),\n validateSourceTargetLanguage: (sourceLanguage, targetLanguage) =>\n Promise.resolve(\n targetLanguage === sourceLanguage &&\n `Target and source language codes identical`\n ),\n validateBeginning: beginning =>\n Promise.resolve(\n !beginning && `Must provide valid text for beginning translation override`\n ),\n};\n","const request = require('./request-helper');\n\nconst DEEPL_HOSTNAME = 'www2.deepl.com';\nconst DEEPL_ENDPOINT = '/jsonrpc';\n\nfunction getHandleJobsBody(texts, targetLanguage, sourceLanguage, beginning) {\n return {\n jsonrpc: '2.0',\n method: 'LMT_handle_jobs',\n params: {\n jobs: texts.map(text => {\n return {\n kind: 'default',\n raw_en_sentence: text,\n de_sentence_beginning: beginning,\n };\n }),\n lang: {\n user_preferred_langs: ['EN'],\n source_lang_user_selected: sourceLanguage,\n target_lang: targetLanguage,\n },\n priority: -1,\n },\n id: 1,\n };\n}\n\nfunction getAlternativesBody(text, targetLanguage, sourceLanguage, beginning) {\n return {\n jsonrpc: '2.0',\n method: 'LMT_handle_jobs',\n params: {\n jobs: [\n {\n de_sentence_beginning: beginning,\n kind: 'alternatives_at_position',\n raw_en_sentence: text,\n },\n ],\n lang: {\n source_lang_computed: sourceLanguage,\n target_lang: targetLanguage,\n },\n priority: 1,\n },\n id: 1,\n };\n}\n\nfunction getSplitSentencesBody(texts, sourceLanguage) {\n return {\n jsonrpc: '2.0',\n method: 'LMT_split_into_sentences',\n params: {\n texts,\n lang: {\n lang_user_selected: sourceLanguage,\n user_preferred_langs: ['EN'],\n },\n },\n id: 1,\n };\n}\n\nfunction getRequestOptions(postBody) {\n return {\n hostname: DEEPL_HOSTNAME,\n port: 443,\n protocol: 'https:',\n path: DEEPL_ENDPOINT,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': Buffer.byteLength(JSON.stringify(postBody)),\n 'Cache-Control': 'no-cache',\n },\n };\n}\n\nmodule.exports = {\n getTranslation: (texts, targetLanguage, sourceLanguage, beginning) => {\n const postBody = getHandleJobsBody(\n texts,\n targetLanguage,\n sourceLanguage,\n beginning\n );\n const options = getRequestOptions(postBody);\n\n return request(options, postBody);\n },\n splitSentences: (texts, sourceLanguage) => {\n const postBody = getSplitSentencesBody(texts, sourceLanguage);\n const options = getRequestOptions(postBody);\n\n return request(options, postBody);\n },\n getAlternatives: (text, targetLanguage, sourceLanguage, beginning) => {\n const postBody = getAlternativesBody(\n text,\n targetLanguage,\n sourceLanguage,\n beginning\n );\n const options = getRequestOptions(postBody);\n\n return request(options, postBody);\n },\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = ({ protocol, hostname, path }, postBody) => {\r\n return new Promise((resolve, reject) => {\r\n let xhr = new XMLHttpRequest();\r\n xhr.open('POST', `${protocol}//${hostname}${path}`, true);\r\n xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\r\n xhr.setRequestHeader('Access-Control-Allow-Origin', '*');\r\n xhr.setRequestHeader(\"Accept\", \"*/*\");\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == 4) {\r\n xhr.status == 200\r\n ? resolve(JSON.parse(xhr.responseText))\r\n : reject(xhr.status);\r\n }\r\n };\r\n xhr.send(JSON.stringify(postBody));\r\n });\r\n};\r\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/tocbot.js\n # Tocbot v4.12.0 implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # rules:\n # \"eslint:tocbot\": \"eslint --ignore-path .eslintignore src/tocbot/js\"\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\n/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root))\n } else if (typeof exports === 'object') {\n module.exports = factory(root)\n } else {\n root.tocbot = factory(root)\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n 'use strict'\n\n // Default options.\n var defaultOptions = require('./default-options.js')\n // Object to store current options.\n var options = {}\n // Object for public APIs.\n var tocbot = {}\n\n var BuildHtml = require('./build-html.js')\n var ParseContent = require('./parse-content.js')\n var updateTocScroll = require('./update-toc-scroll.js')\n // Keep these variables at top scope once options are passed in.\n var buildHtml\n var parseContent\n\n // Just return if its not a browser.\n var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener // Feature test\n if (typeof window === 'undefined' && !supports) {\n return\n }\n var headingsArray\n\n // From: https://github.com/Raynos/xtend\n var hasOwnProperty = Object.prototype.hasOwnProperty\n function extend () {\n var target = {}\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n }\n\n // From: https://remysharp.com/2010/07/21/throttling-function-calls\n function throttle (fn, threshold, scope) {\n threshold || (threshold = 250)\n var last\n var deferTimer\n return function () {\n var context = scope || this\n var now = +new Date()\n var args = arguments\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer)\n deferTimer = setTimeout(function () {\n last = now\n fn.apply(context, args)\n }, threshold)\n } else {\n last = now\n fn.apply(context, args)\n }\n }\n }\n\n /**\n * Destroy tocbot.\n */\n tocbot.destroy = function () {\n if (!options.skipRendering) {\n // Clear HTML.\n try {\n document.querySelector(options.tocSelector).innerHTML = ''\n } catch (e) {\n console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n }\n }\n\n // Remove event listeners.\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false)\n }\n } else {\n document.removeEventListener('scroll', this._scrollListener, false)\n document.removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.removeEventListener('click', this._clickListener, false)\n }\n }\n }\n\n /**\n * Initialize tocbot.\n * @param {object} customOptions\n */\n tocbot.init = function (customOptions) {\n // feature test\n if (!supports) {\n return\n }\n\n // Merge defaults with user options.\n // Set to options variable at the top.\n options = extend(defaultOptions, customOptions || {})\n this.options = options\n this.state = {}\n\n // Init smooth scroll if enabled (default).\n if (options.scrollSmooth) {\n options.duration = options.scrollSmoothDuration\n options.offset = options.scrollSmoothOffset\n tocbot.scrollSmooth = require('./scroll-smooth').initSmoothScrolling(options)\n }\n\n // Pass options to these modules.\n buildHtml = BuildHtml(options)\n parseContent = ParseContent(options)\n\n // For testing purposes.\n this._buildHtml = buildHtml\n this._parseContent = parseContent\n\n // Destroy it if it exists first.\n tocbot.destroy()\n\n // Get headings array.\n headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector)\n // Return if no headings are found.\n if (headingsArray === null) {\n return\n }\n\n // Build nested headings array.\n var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray)\n var nestedHeadings = nestedHeadingsObj.nest\n\n // Render.\n if (!options.skipRendering) {\n buildHtml.render(options.tocSelector, nestedHeadings)\n }\n\n // Update Sidebar and bind listeners.\n this._scrollListener = throttle(function (e) {\n buildHtml.updateToc(headingsArray)\n !options.disableTocScrollSync && updateTocScroll(options)\n var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0\n if ((e && (e.eventPhase === 0 || e.currentTarget === null)) || isTop) {\n buildHtml.updateToc(headingsArray)\n if (options.scrollEndCallback) {\n options.scrollEndCallback(e)\n }\n }\n }, options.throttleTimeout)\n this._scrollListener()\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false)\n } else {\n document.addEventListener('scroll', this._scrollListener, false)\n document.addEventListener('resize', this._scrollListener, false)\n }\n\n // Bind click listeners to disable animation.\n var timeout = null\n this._clickListener = throttle(function (event) {\n if (options.scrollSmooth) {\n buildHtml.disableTocAnimation(event)\n }\n buildHtml.updateToc(headingsArray)\n // Timeout to re-enable the animation.\n timeout && clearTimeout(timeout)\n timeout = setTimeout(function () {\n buildHtml.enableTocAnimation()\n }, options.scrollSmoothDuration)\n }, options.throttleTimeout)\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false)\n } else {\n document.addEventListener('click', this._clickListener, false)\n }\n\n return this\n }\n\n /**\n * Refresh tocbot.\n */\n tocbot.refresh = function (customOptions) {\n tocbot.destroy()\n tocbot.init(customOptions || this.options)\n }\n\n // Make tocbot available globally.\n root.tocbot = tocbot\n\n return tocbot\n})\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = {\n // Where to render the table of contents.\n tocSelector: '.js-toc',\n // Where to grab the headings to build the table of contents.\n contentSelector: '.js-toc-content',\n // Which headings to grab inside of the contentSelector element.\n headingSelector: 'h1, h2, h3',\n // Headings that match the ignoreSelector will be skipped.\n ignoreSelector: '.js-toc-ignore',\n // For headings inside relative or absolute positioned containers within content\n hasInnerContainers: false,\n // Main class to add to links.\n linkClass: 'toc-link',\n // Extra classes to add to links.\n extraLinkClasses: '',\n // Class to add to active links,\n // the link corresponding to the top most heading on the page.\n activeLinkClass: 'is-active-link',\n // Main class to add to lists.\n listClass: 'toc-list',\n // Extra classes to add to lists.\n extraListClasses: '',\n // Class that gets added when a list should be collapsed.\n isCollapsedClass: 'is-collapsed',\n // Class that gets added when a list should be able\n // to be collapsed but isn't necessarily collapsed.\n collapsibleClass: 'is-collapsible',\n // Class to add to list items.\n listItemClass: 'toc-list-item',\n // Class to add to active list items.\n activeListItemClass: 'is-active-li',\n // How many heading levels should not be collapsed.\n // For example, number 6 will show everything since\n // there are only 6 heading levels and number 0 will collapse them all.\n // The sections that are hidden will open\n // and close as you scroll to headings within them.\n collapseDepth: 0,\n // Smooth scrolling enabled.\n scrollSmooth: true,\n // Smooth scroll duration.\n scrollSmoothDuration: 420,\n // Smooth scroll offset.\n scrollSmoothOffset: 0,\n // Callback for scroll end.\n scrollEndCallback: function (e) {},\n // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n headingsOffset: 1,\n // Timeout between events firing to make sure it's\n // not too rapid (for performance reasons).\n throttleTimeout: 50,\n // Element to add the positionFixedClass to.\n positionFixedSelector: null,\n // Fixed position class to add to make sidebar fixed after scrolling\n // down past the fixedSidebarOffset.\n positionFixedClass: 'is-position-fixed',\n // fixedSidebarOffset can be any number but by default is set\n // to auto which sets the fixedSidebarOffset to the sidebar\n // element's offsetTop from the top of the document on init.\n fixedSidebarOffset: 'auto',\n // includeHtml can be set to true to include the HTML markup from the\n // heading node instead of just including the textContent.\n includeHtml: false,\n // onclick function to apply to all links in toc. will be called with\n // the event as the first parameter, and this can be used to stop,\n // propagation, prevent default or perform action\n onClick: function (e) {},\n // orderedList can be set to false to generate unordered lists (ul)\n // instead of ordered lists (ol)\n orderedList: true,\n // If there is a fixed article scroll container, set to calculate titles' offset\n scrollContainer: null,\n // prevent ToC DOM rendering if it's already rendered by an external system\n skipRendering: false,\n // Optional callback to change heading labels.\n // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n // function (string) => string\n headingLabelCallback: false,\n // ignore headings that are hidden in DOM\n ignoreHiddenElements: false,\n // Optional callback to modify properties of parsed headings.\n // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n // Function has to return the same or modified obj.\n // The heading will be excluded from TOC if nothing is returned.\n // function (object, HTMLElement) => object | void\n headingObjectCallback: null,\n // Set the base path, useful if you use a `base` tag in `head`.\n basePath: '',\n // Only takes affect when `tocSelector` is scrolling,\n // keep the toc scroll position in sync with the content.\n disableTocScrollSync: false,\n};\n","/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function (options) {\n var forEach = [].forEach\n var some = [].some\n var body = document.body\n var currentlyHighlighting = true\n var SPACE_CHAR = ' '\n\n /**\n * Create link and list elements.\n * @param {Object} d\n * @param {HTMLElement} container\n * @return {HTMLElement}\n */\n function createEl (d, container) {\n var link = container.appendChild(createLink(d))\n if (d.children.length) {\n var list = createList(d.isCollapsed)\n d.children.forEach(function (child) {\n createEl(child, list)\n })\n link.appendChild(list)\n }\n }\n\n /**\n * Render nested heading array data into a given selector.\n * @param {String} selector\n * @param {Array} data\n * @return {HTMLElement}\n */\n function render (selector, data) {\n var collapsed = false\n var container = createList(collapsed)\n\n data.forEach(function (d) {\n createEl(d, container)\n })\n\n var parent = document.querySelector(selector)\n\n // Return if no parent is found.\n if (parent === null) {\n return\n }\n\n // Remove existing child if it exists.\n if (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n\n // Just return the parent and don't append the list if no links are found.\n if (data.length === 0) {\n return parent\n }\n\n // Append the Elements that have been created\n return parent.appendChild(container)\n }\n\n /**\n * Create link element.\n * @param {Object} data\n * @return {HTMLElement}\n */\n function createLink (data) {\n var item = document.createElement('li')\n var a = document.createElement('a')\n if (options.listItemClass) {\n item.setAttribute('class', options.listItemClass)\n }\n\n if (options.onClick) {\n a.onclick = options.onClick\n }\n\n if (options.includeHtml && data.childNodes.length) {\n forEach.call(data.childNodes, function (node) {\n a.appendChild(node.cloneNode(true))\n })\n } else {\n // Default behavior.\n a.textContent = data.textContent\n }\n a.setAttribute('href', options.basePath + '#' + data.id)\n a.setAttribute('class', options.linkClass +\n SPACE_CHAR + 'node-name--' + data.nodeName +\n SPACE_CHAR + options.extraLinkClasses)\n item.appendChild(a)\n return item\n }\n\n /**\n * Create list element.\n * @param {Boolean} isCollapsed\n * @return {HTMLElement}\n */\n function createList (isCollapsed) {\n var listElement = (options.orderedList) ? 'ol' : 'ul'\n var list = document.createElement(listElement)\n var classes = options.listClass +\n SPACE_CHAR + options.extraListClasses\n if (isCollapsed) {\n classes += SPACE_CHAR + options.collapsibleClass\n classes += SPACE_CHAR + options.isCollapsedClass\n }\n list.setAttribute('class', classes)\n return list\n }\n\n /**\n * Update fixed sidebar class.\n * @return {HTMLElement}\n */\n function updateFixedSidebarClass () {\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n var posFixedEl = document.querySelector(options.positionFixedSelector)\n\n if (options.fixedSidebarOffset === 'auto') {\n options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop\n }\n\n if (top > options.fixedSidebarOffset) {\n if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n posFixedEl.className += SPACE_CHAR + options.positionFixedClass\n }\n } else {\n posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('')\n }\n }\n\n /**\n * Get top position of heading\n * @param {HTMLElement}\n * @return {integer} position\n */\n function getHeadingTopPos (obj) {\n var position = 0\n if (obj !== document.querySelector(options.contentSelector && obj != null)) {\n position = obj.offsetTop\n if (options.hasInnerContainers) { position += getHeadingTopPos(obj.offsetParent) }\n }\n return position\n }\n\n /**\n * Update TOC highlighting and collapsed groups\n */\n function updateToc (headingsArray) {\n // If a fixed content container was set\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n\n // Add fixed class at offset\n if (options.positionFixedSelector) {\n updateFixedSidebarClass()\n }\n\n // Get the most TOP heading currently visible on the page to\n // identify what element to be highlighted\n var headings = headingsArray;\n var topHeader;\n var headingTopPos;\n\n // Using some instead of each so that we can escape early\n if (currentlyHighlighting &&\n document.querySelector(options.tocSelector) !== null &&\n headings.length > 0) {\n some.call(headings, function (heading, i) {\n headingTopPos = getHeadingTopPos(heading)\n if (headingTopPos > top + options.headingsOffset + 10) {\n // Don't allow negative index value\n // var index = (i === 0) ? i : i - 1;\n // topHeader = headings[index];\n // jadams, index correction seems NOT needed\n topHeader = headings[i];\n return true\n } else if (i === headings.length - 1) {\n // This allows scrolling for the last heading on the page\n topHeader = headings[headings.length - 1]\n return true\n }\n })\n\n // Remove the active class from the other tocLinks.\n var tocLinks = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.linkClass)\n forEach.call(tocLinks, function (tocLink) {\n tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('')\n })\n var tocLis = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listItemClass)\n forEach.call(tocLis, function (tocLi) {\n tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('')\n })\n\n // Add the active class to the active tocLink.\n var activeTocLink = document.querySelector(options.tocSelector)\n .querySelector('.' + options.linkClass +\n '.node-name--' + topHeader.nodeName +\n '[href=\"' + options.basePath + '#' + topHeader.id.replace(/([ #;&,.+*~':\"!^$[\\]()=>|/@])/g, '\\\\$1') + '\"]')\n if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n activeTocLink.className += SPACE_CHAR + options.activeLinkClass\n }\n var li = activeTocLink.parentNode\n if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n li.className += SPACE_CHAR + options.activeListItemClass\n }\n\n var tocLists = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass)\n\n // Collapse the other collapsible lists.\n forEach.call(tocLists, function (list) {\n if (list.className.indexOf(options.isCollapsedClass) === -1) {\n list.className += SPACE_CHAR + options.isCollapsedClass\n }\n })\n\n // Expand the active link's collapsible list and its sibling if applicable.\n if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n }\n removeCollapsedFromParents(activeTocLink.parentNode.parentNode)\n }\n }\n\n /**\n * Remove collpased class from parent elements.\n * @param {HTMLElement} element\n * @return {HTMLElement}\n */\n function removeCollapsedFromParents (element) {\n if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n return removeCollapsedFromParents(element.parentNode.parentNode)\n }\n return element\n }\n\n /**\n * Disable TOC Animation when a link is clicked.\n * @param {Event} event\n */\n function disableTocAnimation (event) {\n var target = event.target || event.srcElement\n if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n return\n }\n // Bind to tocLink clicks to temporarily disable highlighting\n // while smoothScroll is animating.\n currentlyHighlighting = false\n }\n\n /**\n * Enable TOC Animation.\n */\n function enableTocAnimation () {\n currentlyHighlighting = true\n }\n\n return {\n enableTocAnimation: enableTocAnimation,\n disableTocAnimation: disableTocAnimation,\n render: render,\n updateToc: updateToc\n }\n}\n","/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function parseContent (options) {\n var reduce = [].reduce\n\n /**\n * Get the last item in an array and return a reference to it.\n * @param {Array} array\n * @return {Object}\n */\n function getLastItem (array) {\n return array[array.length - 1]\n }\n\n /**\n * Get heading level for a heading dom node.\n * @param {HTMLElement} heading\n * @return {Number}\n */\n function getHeadingLevel (heading) {\n return +heading.nodeName.split('H').join('')\n }\n\n /**\n * Get important properties from a heading element and store in a plain object.\n * @param {HTMLElement} heading\n * @return {Object}\n */\n function getHeadingObject (heading) {\n // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n // first time heading is real DOM node element, second time it is obj\n // that is causing problem so I am processing only original DOM node\n if (!(heading instanceof window.HTMLElement)) return heading\n\n if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n return null\n }\n\n var obj = {\n id: heading.id,\n children: [],\n nodeName: heading.nodeName,\n headingLevel: getHeadingLevel(heading),\n textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n }\n\n if (options.includeHtml) {\n obj.childNodes = heading.childNodes\n }\n\n if (options.headingObjectCallback) {\n return options.headingObjectCallback(obj, heading)\n }\n\n return obj\n }\n\n /**\n * Add a node to the nested array.\n * @param {Object} node\n * @param {Array} nest\n * @return {Array}\n */\n function addNode (node, nest) {\n var obj = getHeadingObject(node)\n var level = obj.headingLevel\n var array = nest\n var lastItem = getLastItem(array)\n var lastItemLevel = lastItem\n ? lastItem.headingLevel\n : 0\n var counter = level - lastItemLevel\n\n while (counter > 0) {\n lastItem = getLastItem(array)\n if (lastItem && lastItem.children !== undefined) {\n array = lastItem.children\n }\n counter--\n }\n\n if (level >= options.collapseDepth) {\n obj.isCollapsed = true\n }\n\n array.push(obj)\n return array\n }\n\n /**\n * Select headings in content area, exclude any selector in options.ignoreSelector\n * @param {String} contentSelector\n * @param {Array} headingSelector\n * @return {Array}\n */\n function selectHeadings (contentSelector, headingSelector) {\n var selectors = headingSelector\n if (options.ignoreSelector) {\n selectors = headingSelector.split(',')\n .map(function mapSelectors (selector) {\n return selector.trim() + ':not(' + options.ignoreSelector + ')'\n })\n }\n try {\n return document.querySelector(contentSelector)\n .querySelectorAll(selectors)\n } catch (e) {\n console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n return null\n }\n }\n\n /**\n * Nest headings array into nested arrays with 'children' property.\n * @param {Array} headingsArray\n * @return {Object}\n */\n function nestHeadingsArray (headingsArray) {\n return reduce.call(headingsArray, function reducer (prev, curr) {\n var currentHeading = getHeadingObject(curr)\n if (currentHeading) {\n addNode(currentHeading, prev.nest)\n }\n return prev\n }, {\n nest: []\n })\n }\n\n return {\n nestHeadingsArray: nestHeadingsArray,\n selectHeadings: selectHeadings\n }\n}\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function updateTocScroll(options) {\n var toc = document.querySelector(options.tocSelector);\n if (toc && toc.scrollHeight > toc.clientHeight) {\n var activeItem = toc.querySelector('.' + options.activeListItemClass);\n if (activeItem) {\n toc.scrollTop = activeItem.offsetTop;\n }\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/scroll-smooth/index.js\n # Scroll-Smooth (Tocbot v4.12.0) implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-redeclare: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n/* globals location, requestAnimationFrame */\n\nexports.initSmoothScrolling = initSmoothScrolling\n\nfunction initSmoothScrolling (options) {\n if (isCssSmoothSCrollSupported()) { }\n\n var duration = options.duration\n var offset = options.offset\n\n var pageUrl = location.hash\n ? stripHash(location.href)\n : location.href\n\n delegatedLinkHijacking()\n\n function delegatedLinkHijacking () {\n document.body.addEventListener('click', onClick, false)\n\n function onClick (e) {\n if (\n !isInPageLink(e.target) ||\n e.target.className.indexOf('no-smooth-scroll') > -1 ||\n (e.target.href.charAt(e.target.href.length - 2) === '#' &&\n e.target.href.charAt(e.target.href.length - 1) === '!') ||\n e.target.className.indexOf(options.linkClass) === -1) {\n return\n }\n\n // Don't prevent default or hash doesn't change.\n // e.preventDefault()\n\n jump(e.target.hash, {\n duration: duration,\n offset: offset,\n callback: function () {\n setFocus(e.target.hash)\n }\n })\n }\n }\n\n function isInPageLink (n) {\n return n.tagName.toLowerCase() === 'a' &&\n (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') &&\n (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl)\n }\n\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'))\n }\n\n function isCssSmoothSCrollSupported () {\n return 'scrollBehavior' in document.documentElement.style\n }\n\n // Adapted from:\n // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n function setFocus (hash) {\n var element = document.getElementById(hash.substring(1))\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1\n }\n\n element.focus()\n }\n }\n}\n\nfunction jump (target, options) {\n var start = window.pageYOffset\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n }\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration\n var timeStart\n var timeElapsed\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time) })\n function loop (time) {\n timeElapsed = time - timeStart\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration))\n\n if (timeElapsed < duration) { requestAnimationFrame(loop) } else { end() }\n }\n\n function end () {\n window.scrollTo(0, start + distance)\n\n if (typeof opt.callback === 'function') { opt.callback() }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adoc_result_viewer/view_results.js\n # Provides JavaScript functions displaying results for Asciidoctor\n # example block\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # TODO: Improve lanuage settings\n # TODO: Improve auto-hide functionality for the results block\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* global $ */\n// -----------------------------------------------------------------------------\n\nvar timeoutHandle;\n// var language = 'de';\nvar language = document.documentElement.lang;\n\nfunction toggle_result_block(result_block) {\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n result_block.prev().toggleClass('stacked');\n result_block.toggle();\n\n // jadams: Improve auto-hide functionality for the results block\n //\n // timeoutHandle = window.setTimeout(function () {\n // result_block.hide();\n // }, 5000);\n}\n\nfunction insert_result_links() {\n $('.result').each(function(idx, node) {\n var view_result_link;\n var result_block = $(node);\n var title_div = result_block.prev().find('.title');\n\n if (language == 'en') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n } else if (language == 'de') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Anzeige umschalten\" data-original-title=\"toggle results\">Anzeige</span></div>');\n } else {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n }\n\n title_div.append(view_result_link);\n view_result_link.on('click', function(event) {\n event.preventDefault();\n toggle_result_block(result_block);\n });\n });\n}\n\n$(insert_result_links);\n"],"sourceRoot":""}
|