{"version":3,"sources":["../WebApp/wwwroot/build/Vendor/typo/typo.js","../WebApp/wwwroot/build/Vendor/underscore.js","../WebApp/wwwroot/build/Vendor/bootstrap-slider.js","../WebApp/wwwroot/build/Vendor/amplify.store.js","../WebApp/wwwroot/build/Vendor/moment.min.js","../WebApp/wwwroot/build/Vendor/rateit.js"],"names":["Typo","lookupIterator","value","_","isFunction","obj","group","context","behavior","result","iterator","identity","each","index","key","call","flatten","input","shallow","output","every","isArray","concat","apply","isArguments","push","ctor","eq","a","b","aStack","bStack","_wrapped","className","toString","String","source","global","multiline","ignoreCase","length","aCtor","constructor","bCtor","size","has","pop","root","this","previousUnderscore","breaker","ArrayProto","Array","prototype","ObjProto","Object","FuncProto","Function","slice","hasOwnProperty","nativeForEach","forEach","nativeMap","map","nativeReduce","reduce","nativeReduceRight","reduceRight","nativeFilter","filter","nativeEvery","nativeSome","some","nativeIndexOf","indexOf","nativeLastIndexOf","lastIndexOf","nativeIsArray","nativeKeys","keys","nativeBind","bind","exports","module","VERSION","i","l","reduceError","collect","results","list","any","foldl","inject","memo","initial","arguments","TypeError","foldr","find","detect","select","reject","all","entityMap","contains","include","target","invoke","method","args","isFunc","pluck","where","attrs","first","isEmpty","findWhere","max","Math","Infinity","computed","min","shuffle","rand","shuffled","random","sortBy","criteria","sort","left","right","groupBy","countBy","sortedIndex","array","low","high","mid","toArray","values","head","take","n","guard","last","rest","tail","drop","compact","without","difference","uniq","unique","isSorted","seen","union","intersection","item","other","zip","object","from","hasIndex","range","start","stop","step","len","ceil","idx","func","bound","self","partial","bindAll","funcs","Error","f","memoize","hasher","delay","wait","setTimeout","defer","throttle","options","later","previous","leading","Date","timeout","now","remaining","clearTimeout","trailing","debounce","immediate","callNow","once","ran","wrap","wrapper","compose","after","times","pairs","invert","functions","methods","names","extend","prop","pick","copy","omit","defaults","clone","isObject","tap","interceptor","isEqual","isString","isElement","nodeType","name","isFinite","isNaN","parseFloat","isNumber","isBoolean","isNull","isUndefined","noConflict","accum","floor","escape","&","<",">","\"","'","/","entityRegexes","unescape","RegExp","join","idCounter","string","replace","match","property","mixin","noMatch","uniqueId","prefix","id","templateSettings","evaluate","interpolate","escapes","\\","\r","\n","\t"," "," ","escaper","template","text","data","settings","render","matcher","offset","variable","e","chain","_chain","factory","define","amd","jQuery","require","err","Slider","$","namespace","ErrorMsgs","SliderScale","createNewSlider","element","_state","enabled","percentage","inDrag","over","document","querySelector","HTMLElement","optionTypes","defaultOptions","optName","val","dataName","dataValString","getAttribute","JSON","parse","orientation","tooltip_position","sliderTrackSelection","sliderTrackLow","sliderTrackHigh","sliderMinHandle","sliderMaxHandle","origWidth","style","width","updateSlider","parent","parentNode","sliderElem","createElement","sliderTrack","appendChild","ticks","tick","tickLabels","ticks_labels","tickLabelContainer","label","noTickPositionsSpecified","ticks_positions","tickLabelsIndex","reversed","innerHTML","createAndAppendTooltipSubElements","tooltipElem","arrow","inner","sliderTooltip","sliderTooltipMin","sliderTooltipMax","insertBefore","display","$element","$sliderElem","eventToCallbackMap","touchCapable","window","DocumentTouch","tooltip","tooltipInner","tooltip_min","tooltipInner_min","tooltip_max","tooltipInner_max","scale","_removeClass","_removeProperty","trackLow","trackSelection","trackHigh","handle1","handle2","handle","_addClass","stylePos","mousePos","sizePos","_setTooltipPosition","selection","_offset","setValue","handle1Keydown","_keydown","addEventListener","handle2Keydown","mousedown","_mousedown","_showTooltip","_alwaysShowTooltip","showTooltip","hideTooltip","_hideTooltip","enable","disable","logError","noop","console","message","error","bridget","PluginClass","option","opts","isPlainObject","fn","objects","instance","_init","elem","charAt","returnValue","undefined","linear","toValue","rawValue","minv","maxv","minp","maxp","round","toPercentage","logarithmic","log","exp","precision","tooltip_split","formatter","natural_arrow_keys","ticks_snap_bounds","focus","getElement","getValue","triggerSlideEvent","triggerChangeEvent","oldValue","applyPrecision","_validateInputValue","_applyPrecision","newValue","_toPercentage","_layout","_trigger","_setDataVal","destroy","_removeSliderEventHandlers","removeChild","_cleanUpEventCallbacksMap","removeAttribute","_unbindJQueryEventHandlers","removeData","setAttribute","toggle","isEnabled","on","evt","callback","_bindNonQueryEventHandler","off","_unbindNonQueryEventHandler","attribute","refresh","relayout","removeEventListener","callbacks","splice","eventNames","eventName","alwaysShowTooltip","offset_min","offset_max","positionPercentages","styleSize","styleMargin","labelSize","extraMargin","offsetHeight","childNodes","marginBottom","position","offsetWidth","formattedTooltipVal","_setText","_css","innerTooltipMinText","innerTooltipMaxText","top","height","abs","bottom","getBoundingClientRect","removeProperty","ev","diff2","_getPercentage","diff1","dragged","mousemove","mouseup","_mousemove","_mouseup","_calculateValue","_pauseEvent","_triggerFocusOnHandle","handleIdx","dir","ifHorizontalAndReversed","keyCode","ifVerticalAndNotReversed","stopPropagation","preventDefault","cancelBubble","_adjustPercentageForRangeSliders","_getNumDigitsAfterDecimalPlace","percentageWithAdjustedPrecision","_applyToFixedAndParseFloat","snapToClosestTick","_toValue","diff","num","toFixedInput","truncatedNum","toFixed","type","touches","_validateArray","callbackFnArray","callbackFn","_triggerJQueryEvent","eventData","trigger","innerText","textContent","classString","classes","split","newClasses","classTag","regex","trim","test","_offsetLeft","_offsetTop","offsetTop","offsetParent","elementRef","styleName","letter","toUpperCase","tooltipPos","oppositeSide","tooltips","outerHeight","slider","subscriptions","amplify","publish","topic","subscription","ret","subscribe","priority","topicIndex","topics","topicLength","subscriptionInfo","unshift","unsubscribe","webStorageType","div","attrKey","memory","store","types","rprefix","addType","storage","createFromStorageInterface","storageType","storedValue","parsed","remove","getTime","getItem","expires","removeItem","stringify","setItem","localStorage","sessionStorage","globalStorage","location","hostname","getElementsByTagName","addBehavior","load","attr","prevValue","save","userData","XMLDocument","documentElement","attributes","moment","Hc","c","d","g","valueOf","h","Ca","utc","j","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","k","_isValid","_d","invalidWeekday","_strict","bigHour","NaN","m","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_locale","Jc","Kc","updateOffset","o","p","q","r","s","t","toLowerCase","v","Lc","Ic","_abbr","w","y","x","abbr","set","u","z","Mc","A","B","C","E","D","F","G","pow","substr","H","Qc","localeData","ordinal","K","isValid","L","Pc","Nc","invalidDate","longDateFormat","Oc","lastIndex","N","dd","Q","ed","R","_w","T","UTC","getUTCDate","X","monthsParse","date","year","Y","_a","gd","hd","fd","jd","kd","ld","_overflowDayOfYear","suppressDeprecationWarnings","warn","aa","stack","ca","pd","exec","qd","rd","ad","va","ea","setFullYear","fa","setUTCFullYear","ga","ha","ja","day","Da","add","week","dayOfYear","ra","ta","_useUTC","getUTCFullYear","getUTCMonth","getFullYear","getMonth","getDate","GG","W","_week","dow","doy","gg","getUTCDay","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","ISO_8601","_meridiem","meridiemHour","isPM","Aa","preparse","score","sd","createFromInputFallback","parseInt","month","hour","minute","second","millisecond","Ea","Ha","quarter","_milliseconds","_days","_months","_data","_bubble","Ia","Ja","utcOffset","Ka","xd","La","setTime","local","Ma","getTimezoneOffset","Xa","Ya","ms","M","milliseconds","yd","zd","Za","to","isBefore","$a","months","isAfter","ab","od","bb","lb","toISOString","toDate","rb","sb","Db","Eb","Sb","meridiem","hours","minutes","Tb","_meridiemParse","Wb","dc","hc","ic","pc","sc","uc","vc","yc","as","Ac","Dc","ke","le","relativeTime","Gc","me","asSeconds","Ld","momentProperties","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","_c","cd","md","monthsShort","nd","td","parseTwoDigitYear","vd","wd","Ad","Bd","Cd","defaultFormat","locale","Dd","weekYear","isoWeekYear","_ordinalParse","_ordinalParseLenient","Ed","weekdaysMin","weekdaysShort","weekdays","weekdaysParse","Fd","Gd","Id","_isPm","Jd","Kd","Md","Nd","Od","calendar","startOf","format","endOf","subtract","postformat","humanize","fromNow","toNow","get","invalidAt","isBetween","isSame","lang","parsingFlags","seconds","weekday","isoWeekday","toObject","years","toJSON","unix","isLeapYear","quarters","daysInMonth","weeks","isoWeek","isoWeeks","weeksInYear","isoWeeksInYear","days","getDay","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isDSTShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","isUTC","zoneAbbr","zoneName","dates","zone","Vd","Wd","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","_longDateFormat","LTS","LT","LL","LLL","LLLL","_invalidDate","_ordinal","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_monthsShort","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParse","ordinalParse","langData","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ne","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","toIsoString","version","isDate","invalid","duration","isMoment","isDuration","defineLocale","normalizeUnits","relativeTimeThreshold","dictionary","affData","wordsData","rules","dictionaryTable","compoundRules","compoundRuleCodes","replacementTable","flags","memoized","loaded","path","_len","_jlen","readDataFile","url","setFunc","response","_readFile","asyncLoad","then","setAffData","setup","setWordsData","_parseAFF","rule","ONLYINCOMPOUND","_parseDIC","ruleText","expressionText","character","loadedCallback","chrome","extension","dictionaryPath","getURL","__dirname","charset","async","promise","req","XMLHttpRequest","open","Promise","resolve","onload","status","responseText","statusText","onerror","overrideMimeType","send","stats","fileDescriptor","buffer","fs","existsSync","statSync","openSync","Buffer","readSync","lines","_removeAffixComments","line","definitionParts","ruleType","numEntries","ruleCode","combineable","entries","lineParts","charactersToRemove","additionParts","charactersToAdd","continuationClasses","parseRuleCodes","regexToMatch","entry","_removeDicComments","addWord","word","parts","ruleCodesArray","NEEDAFFIX","code","newWords","_applyRule","ii","_iilen","newWord","combineCode","combineRule","otherNewWords","iii","_iiilen","textCodes","FLAG","continuationRule","check","aWord","trimmedWord","checkExact","capitalizedWord","substring","hasFlag","lowercaseWord","ruleCodes","COMPOUNDMIN","flag","wordFlags","alphabet","suggest","limit","memoizedLimit","replacementEntry","correctedWord","edits1","words","known_only","_edit","rv","suggestions","ed1word","ed1","weighted_corrections","sorted_corrections","reverse","capitalization_scheme","working_limit","touchHandler","event","originalEvent","changedTouches","simulatedEvent","createEvent","initMouseEvent","screenX","screenY","clientX","clientY","dispatchEvent","rateit","aria","resetLabel","ratingLabel","p1","p2","capitaliseFirstLetter","mode","tp1","itemdata","ariakey","fld","hasClass","addClass","html","ltr","css","unbind","readonly","resetable","backingfld","starwidth","starheight","ispreset","hide","nodeName","Number","selectedOption","append","calcRawScore","offsetx","pageX","setSelection","Event","isDefaultPrevented","removeClass","presetclass","show","resetbtn","blur","mouseleave","keyup","which"],"mappings":"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","file":"cpeditor-dependencies.js","sourcesContent":["/* globals chrome: false */\n/* globals __dirname: false */\n/* globals require: false */\n/* globals Buffer: false */\n/* globals module: false */\n\n/**\n * Typo is a JavaScript implementation of a spellchecker using hunspell-style\n * dictionaries.\n *\n * v1.0.3\n */\n\nvar Typo;\n\n(function () {\n\"use strict\";\n\n/**\n * Typo constructor.\n *\n * @param {String} [dictionary] The locale code of the dictionary being used. e.g.,\n * \"en_US\". This is only used to auto-load dictionaries.\n * @param {String} [affData] The data from the dictionary's .aff file. If omitted\n * and Typo.js is being used in a Chrome extension, the .aff\n * file will be loaded automatically from\n * lib/typo/dictionaries/[dictionary]/[dictionary].aff\n * In other environments, it will be loaded from\n * [settings.dictionaryPath]/dictionaries/[dictionary]/[dictionary].aff\n * @param {String} [wordsData] The data from the dictionary's .dic file. If omitted\n * and Typo.js is being used in a Chrome extension, the .dic\n * file will be loaded automatically from\n * lib/typo/dictionaries/[dictionary]/[dictionary].dic\n * In other environments, it will be loaded from\n * [settings.dictionaryPath]/dictionaries/[dictionary]/[dictionary].dic\n * @param {Object} [settings] Constructor settings. Available properties are:\n * {String} [dictionaryPath]: path to load dictionary from in non-chrome\n * environment.\n * {Object} [flags]: flag information.\n * {Boolean} [asyncLoad]: If true, affData and wordsData will be loaded\n * asynchronously.\n * {Function} [loadedCallback]: Called when both affData and wordsData\n * have been loaded. Only used if asyncLoad is set to true. The parameter\n * is the instantiated Typo object.\n *\n * @returns {Typo} A Typo object.\n */\n\nTypo = function (dictionary, affData, wordsData, settings) {\n\tsettings = settings || {};\n\n\tthis.dictionary = null;\n\n\tthis.rules = {};\n\tthis.dictionaryTable = {};\n\n\tthis.compoundRules = [];\n\tthis.compoundRuleCodes = {};\n\n\tthis.replacementTable = [];\n\n\tthis.flags = settings.flags || {};\n\n\tthis.memoized = {};\n\n\tthis.loaded = false;\n\n\tvar self = this;\n\n\tvar path;\n\n\t// Loop-control variables.\n\tvar i, j, _len, _jlen;\n\n\tif (dictionary) {\n\t\tself.dictionary = dictionary;\n\n\t\t// If the data is preloaded, just setup the Typo object.\n\t\tif (affData && wordsData) {\n\t\t\tsetup();\n\t\t}\n\t\t// Loading data for Chrome extentions.\n\t\telse if (typeof window !== 'undefined' && 'chrome' in window && 'extension' in window.chrome && 'getURL' in window.chrome.extension) {\n\t\t\tif (settings.dictionaryPath) {\n\t\t\t\tpath = settings.dictionaryPath;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpath = \"typo/dictionaries\";\n\t\t\t}\n\n\t\t\tif (!affData) readDataFile(chrome.extension.getURL(path + \"/\" + dictionary + \"/\" + dictionary + \".aff\"), setAffData);\n\t\t\tif (!wordsData) readDataFile(chrome.extension.getURL(path + \"/\" + dictionary + \"/\" + dictionary + \".dic\"), setWordsData);\n\t\t}\n\t\telse {\n\t\t\tif (settings.dictionaryPath) {\n\t\t\t\tpath = settings.dictionaryPath;\n\t\t\t}\n\t\t\telse if (typeof __dirname !== 'undefined') {\n\t\t\t\tpath = __dirname + '/dictionaries';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpath = './dictionaries';\n\t\t\t}\n\n\t\t\tif (!affData) readDataFile(path + \"/\" + dictionary + \"/\" + dictionary + \".aff\", setAffData);\n\t\t\tif (!wordsData) readDataFile(path + \"/\" + dictionary + \"/\" + dictionary + \".dic\", setWordsData);\n\t\t}\n\t}\n\n\tfunction readDataFile(url, setFunc) {\n\t\tvar response = self._readFile(url, null, settings.asyncLoad);\n\n\t\tif (settings.asyncLoad) {\n\t\t\tresponse.then(function(data) {\n\t\t\t\tsetFunc(data);\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tsetFunc(response);\n\t\t}\n\t}\n\n\tfunction setAffData(data) {\n\t\taffData = data;\n\n\t\tif (wordsData) {\n\t\t\tsetup();\n\t\t}\n\t}\n\n\tfunction setWordsData(data) {\n\t\twordsData = data;\n\n\t\tif (affData) {\n\t\t\tsetup();\n\t\t}\n\t}\n\n\tfunction setup() {\n\t\tself.rules = self._parseAFF(affData);\n\n\t\t// Save the rule codes that are used in compound rules.\n\t\tself.compoundRuleCodes = {};\n\n\t\tfor (i = 0, _len = self.compoundRules.length; i < _len; i++) {\n\t\t\tvar rule = self.compoundRules[i];\n\n\t\t\tfor (j = 0, _jlen = rule.length; j < _jlen; j++) {\n\t\t\t\tself.compoundRuleCodes[rule[j]] = [];\n\t\t\t}\n\t\t}\n\n\t\t// If we add this ONLYINCOMPOUND flag to self.compoundRuleCodes, then _parseDIC\n\t\t// will do the work of saving the list of words that are compound-only.\n\t\tif (\"ONLYINCOMPOUND\" in self.flags) {\n\t\t\tself.compoundRuleCodes[self.flags.ONLYINCOMPOUND] = [];\n\t\t}\n\n\t\tself.dictionaryTable = self._parseDIC(wordsData);\n\n\t\t// Get rid of any codes from the compound rule codes that are never used\n\t\t// (or that were special regex characters). Not especially necessary...\n\t\tfor (i in self.compoundRuleCodes) {\n\t\t\tif (self.compoundRuleCodes[i].length === 0) {\n\t\t\t\tdelete self.compoundRuleCodes[i];\n\t\t\t}\n\t\t}\n\n\t\t// Build the full regular expressions for each compound rule.\n\t\t// I have a feeling (but no confirmation yet) that this method of\n\t\t// testing for compound words is probably slow.\n\t\tfor (i = 0, _len = self.compoundRules.length; i < _len; i++) {\n\t\t\tvar ruleText = self.compoundRules[i];\n\n\t\t\tvar expressionText = \"\";\n\n\t\t\tfor (j = 0, _jlen = ruleText.length; j < _jlen; j++) {\n\t\t\t\tvar character = ruleText[j];\n\n\t\t\t\tif (character in self.compoundRuleCodes) {\n\t\t\t\t\texpressionText += \"(\" + self.compoundRuleCodes[character].join(\"|\") + \")\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\texpressionText += character;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.compoundRules[i] = new RegExp(expressionText, \"i\");\n\t\t}\n\n\t\tself.loaded = true;\n\n\t\tif (settings.asyncLoad && settings.loadedCallback) {\n\t\t\tsettings.loadedCallback(self);\n\t\t}\n\t}\n\n\treturn this;\n};\n\nTypo.prototype = {\n\t/**\n\t * Loads a Typo instance from a hash of all of the Typo properties.\n\t *\n\t * @param object obj A hash of Typo properties, probably gotten from a JSON.parse(JSON.stringify(typo_instance)).\n\t */\n\n\tload : function (obj) {\n\t\tfor (var i in obj) {\n\t\t\tif (obj.hasOwnProperty(i)) {\n\t\t\t\tthis[i] = obj[i];\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t/**\n\t * Read the contents of a file.\n\t *\n\t * @param {String} path The path (relative) to the file.\n\t * @param {String} [charset=\"ISO8859-1\"] The expected charset of the file\n\t * @param {Boolean} async If true, the file will be read asynchronously. For node.js this does nothing, all\n\t * files are read synchronously.\n\t * @returns {String} The file data if async is false, otherwise a promise object. If running node.js, the data is\n\t * always returned.\n\t */\n\n\t_readFile : function (path, charset, async) {\n\t\tcharset = charset || \"utf8\";\n\n\t\tif (typeof XMLHttpRequest !== 'undefined') {\n\t\t\tvar promise;\n\t\t\tvar req = new XMLHttpRequest();\n\t\t\treq.open(\"GET\", path, async);\n\n\t\t\tif (async) {\n\t\t\t\tpromise = new Promise(function(resolve, reject) {\n\t\t\t\t\treq.onload = function() {\n\t\t\t\t\t\tif (req.status === 200) {\n\t\t\t\t\t\t\tresolve(req.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(req.statusText);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\treq.onerror = function() {\n\t\t\t\t\t\treject(req.statusText);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (req.overrideMimeType)\n\t\t\t\treq.overrideMimeType(\"text/plain; charset=\" + charset);\n\n\t\t\treq.send(null);\n\n\t\t\treturn async ? promise : req.responseText;\n\t\t}\n\t\telse if (typeof require !== 'undefined') {\n\t\t\t// Node.js\n\t\t\tvar fs = require(\"fs\");\n\n\t\t\ttry {\n\t\t\t\tif (fs.existsSync(path)) {\n\t\t\t\t\tvar stats = fs.statSync(path);\n\n\t\t\t\t\tvar fileDescriptor = fs.openSync(path, 'r');\n\n\t\t\t\t\tvar buffer = new Buffer(stats.size);\n\n\t\t\t\t\tfs.readSync(fileDescriptor, buffer, 0, buffer.length, null);\n\n\t\t\t\t\treturn buffer.toString(charset, 0, buffer.length);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log(\"Path \" + path + \" does not exist.\");\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(e);\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Parse the rules out from a .aff file.\n\t *\n\t * @param {String} data The contents of the affix file.\n\t * @returns object The rules from the file.\n\t */\n\n\t_parseAFF : function (data) {\n\t\tvar rules = {};\n\n\t\tvar line, subline, numEntries, lineParts;\n\t\tvar i, j, _len, _jlen;\n\n\t\t// Remove comment lines\n\t\tdata = this._removeAffixComments(data);\n\n\t\tvar lines = data.split(\"\\n\");\n\n\t\tfor (i = 0, _len = lines.length; i < _len; i++) {\n\t\t\tline = lines[i];\n\n\t\t\tvar definitionParts = line.split(/\\s+/);\n\n\t\t\tvar ruleType = definitionParts[0];\n\n\t\t\tif (ruleType == \"PFX\" || ruleType == \"SFX\") {\n\t\t\t\tvar ruleCode = definitionParts[1];\n\t\t\t\tvar combineable = definitionParts[2];\n\t\t\t\tnumEntries = parseInt(definitionParts[3], 10);\n\n\t\t\t\tvar entries = [];\n\n\t\t\t\tfor (j = i + 1, _jlen = i + 1 + numEntries; j < _jlen; j++) {\n\t\t\t\t\tsubline = lines[j];\n\n\t\t\t\t\tlineParts = subline.split(/\\s+/);\n\t\t\t\t\tvar charactersToRemove = lineParts[2];\n\n\t\t\t\t\tvar additionParts = lineParts[3].split(\"/\");\n\n\t\t\t\t\tvar charactersToAdd = additionParts[0];\n\t\t\t\t\tif (charactersToAdd === \"0\") charactersToAdd = \"\";\n\n\t\t\t\t\tvar continuationClasses = this.parseRuleCodes(additionParts[1]);\n\n\t\t\t\t\tvar regexToMatch = lineParts[4];\n\n\t\t\t\t\tvar entry = {};\n\t\t\t\t\tentry.add = charactersToAdd;\n\n\t\t\t\t\tif (continuationClasses.length > 0) entry.continuationClasses = continuationClasses;\n\n\t\t\t\t\tif (regexToMatch !== \".\") {\n\t\t\t\t\t\tif (ruleType === \"SFX\") {\n\t\t\t\t\t\t\tentry.match = new RegExp(regexToMatch + \"$\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tentry.match = new RegExp(\"^\" + regexToMatch);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (charactersToRemove != \"0\") {\n\t\t\t\t\t\tif (ruleType === \"SFX\") {\n\t\t\t\t\t\t\tentry.remove = new RegExp(charactersToRemove + \"$\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tentry.remove = charactersToRemove;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tentries.push(entry);\n\t\t\t\t}\n\n\t\t\t\trules[ruleCode] = { \"type\" : ruleType, \"combineable\" : (combineable == \"Y\"), \"entries\" : entries };\n\n\t\t\t\ti += numEntries;\n\t\t\t}\n\t\t\telse if (ruleType === \"COMPOUNDRULE\") {\n\t\t\t\tnumEntries = parseInt(definitionParts[1], 10);\n\n\t\t\t\tfor (j = i + 1, _jlen = i + 1 + numEntries; j < _jlen; j++) {\n\t\t\t\t\tline = lines[j];\n\n\t\t\t\t\tlineParts = line.split(/\\s+/);\n\t\t\t\t\tthis.compoundRules.push(lineParts[1]);\n\t\t\t\t}\n\n\t\t\t\ti += numEntries;\n\t\t\t}\n\t\t\telse if (ruleType === \"REP\") {\n\t\t\t\tlineParts = line.split(/\\s+/);\n\n\t\t\t\tif (lineParts.length === 3) {\n\t\t\t\t\tthis.replacementTable.push([ lineParts[1], lineParts[2] ]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// ONLYINCOMPOUND\n\t\t\t\t// COMPOUNDMIN\n\t\t\t\t// FLAG\n\t\t\t\t// KEEPCASE\n\t\t\t\t// NEEDAFFIX\n\n\t\t\t\tthis.flags[ruleType] = definitionParts[1];\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t/**\n\t * Removes comment lines and then cleans up blank lines and trailing whitespace.\n\t *\n\t * @param {String} data The data from an affix file.\n\t * @return {String} The cleaned-up data.\n\t */\n\n\t_removeAffixComments : function (data) {\n\t\t// Remove comments\n\t\t// This used to remove any string starting with '#' up to the end of the line,\n\t\t// but some COMPOUNDRULE definitions include '#' as part of the rule.\n\t\t// I haven't seen any affix files that use comments on the same line as real data,\n\t\t// so I don't think this will break anything.\n\t\tdata = data.replace(/^\\s*#.*$/mg, \"\");\n\n\t\t// Trim each line\n\t\tdata = data.replace(/^\\s\\s*/m, '').replace(/\\s\\s*$/m, '');\n\n\t\t// Remove blank lines.\n\t\tdata = data.replace(/\\n{2,}/g, \"\\n\");\n\n\t\t// Trim the entire string\n\t\tdata = data.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\n\t\treturn data;\n\t},\n\n\t/**\n\t * Parses the words out from the .dic file.\n\t *\n\t * @param {String} data The data from the dictionary file.\n\t * @returns object The lookup table containing all of the words and\n\t * word forms from the dictionary.\n\t */\n\n\t_parseDIC : function (data) {\n\t\tdata = this._removeDicComments(data);\n\n\t\tvar lines = data.split(\"\\n\");\n\t\tvar dictionaryTable = {};\n\n\t\tfunction addWord(word, rules) {\n\t\t\t// Some dictionaries will list the same word multiple times with different rule sets.\n\t\t\tif (!dictionaryTable.hasOwnProperty(word)) {\n\t\t\t\tdictionaryTable[word] = null;\n\t\t\t}\n\n\t\t\tif (rules.length > 0) {\n\t\t\t\tif (dictionaryTable[word] === null) {\n\t\t\t\t\tdictionaryTable[word] = [];\n\t\t\t\t}\n\n\t\t\t\tdictionaryTable[word].push(rules);\n\t\t\t}\n\t\t}\n\n\t\t// The first line is the number of words in the dictionary.\n\t\tfor (var i = 1, _len = lines.length; i < _len; i++) {\n\t\t\tvar line = lines[i];\n\n\t\t\tif (!line) {\n\t\t\t\t// Ignore empty lines.\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar parts = line.split(\"/\", 2);\n\n\t\t\tvar word = parts[0];\n\n\t\t\t// Now for each affix rule, generate that form of the word.\n\t\t\tif (parts.length > 1) {\n\t\t\t\tvar ruleCodesArray = this.parseRuleCodes(parts[1]);\n\n\t\t\t\t// Save the ruleCodes for compound word situations.\n\t\t\t\tif (!(\"NEEDAFFIX\" in this.flags) || ruleCodesArray.indexOf(this.flags.NEEDAFFIX) == -1) {\n\t\t\t\t\taddWord(word, ruleCodesArray);\n\t\t\t\t}\n\n\t\t\t\tfor (var j = 0, _jlen = ruleCodesArray.length; j < _jlen; j++) {\n\t\t\t\t\tvar code = ruleCodesArray[j];\n\n\t\t\t\t\tvar rule = this.rules[code];\n\n\t\t\t\t\tif (rule) {\n\t\t\t\t\t\tvar newWords = this._applyRule(word, rule);\n\n\t\t\t\t\t\tfor (var ii = 0, _iilen = newWords.length; ii < _iilen; ii++) {\n\t\t\t\t\t\t\tvar newWord = newWords[ii];\n\n\t\t\t\t\t\t\taddWord(newWord, []);\n\n\t\t\t\t\t\t\tif (rule.combineable) {\n\t\t\t\t\t\t\t\tfor (var k = j + 1; k < _jlen; k++) {\n\t\t\t\t\t\t\t\t\tvar combineCode = ruleCodesArray[k];\n\n\t\t\t\t\t\t\t\t\tvar combineRule = this.rules[combineCode];\n\n\t\t\t\t\t\t\t\t\tif (combineRule) {\n\t\t\t\t\t\t\t\t\t\tif (combineRule.combineable && (rule.type != combineRule.type)) {\n\t\t\t\t\t\t\t\t\t\t\tvar otherNewWords = this._applyRule(newWord, combineRule);\n\n\t\t\t\t\t\t\t\t\t\t\tfor (var iii = 0, _iiilen = otherNewWords.length; iii < _iiilen; iii++) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar otherNewWord = otherNewWords[iii];\n\t\t\t\t\t\t\t\t\t\t\t\taddWord(otherNewWord, []);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (code in this.compoundRuleCodes) {\n\t\t\t\t\t\tthis.compoundRuleCodes[code].push(word);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\taddWord(word.trim(), []);\n\t\t\t}\n\t\t}\n\n\t\treturn dictionaryTable;\n\t},\n\n\n\t/**\n\t * Removes comment lines and then cleans up blank lines and trailing whitespace.\n\t *\n\t * @param {String} data The data from a .dic file.\n\t * @return {String} The cleaned-up data.\n\t */\n\n\t_removeDicComments : function (data) {\n\t\t// I can't find any official documentation on it, but at least the de_DE\n\t\t// dictionary uses tab-indented lines as comments.\n\n\t\t// Remove comments\n\t\tdata = data.replace(/^\\t.*$/mg, \"\");\n\n\t\treturn data;\n\t},\n\n\tparseRuleCodes : function (textCodes) {\n\t\tif (!textCodes) {\n\t\t\treturn [];\n\t\t}\n\t\telse if (!(\"FLAG\" in this.flags)) {\n\t\t\treturn textCodes.split(\"\");\n\t\t}\n\t\telse if (this.flags.FLAG === \"long\") {\n\t\t\tvar flags = [];\n\n\t\t\tfor (var i = 0, _len = textCodes.length; i < _len; i += 2) {\n\t\t\t\tflags.push(textCodes.substr(i, 2));\n\t\t\t}\n\n\t\t\treturn flags;\n\t\t}\n\t\telse if (this.flags.FLAG === \"num\") {\n\t\t\treturn textCodes.split(\",\");\n\t\t}\n\t},\n\n\t/**\n\t * Applies an affix rule to a word.\n\t *\n\t * @param {String} word The base word.\n\t * @param {Object} rule The affix rule.\n\t * @returns {String[]} The new words generated by the rule.\n\t */\n\n\t_applyRule : function (word, rule) {\n\t\tvar entries = rule.entries;\n\t\tvar newWords = [];\n\n\t\tfor (var i = 0, _len = entries.length; i < _len; i++) {\n\t\t\tvar entry = entries[i];\n\n\t\t\tif (!entry.match || word.match(entry.match)) {\n\t\t\t\tvar newWord = word;\n\n\t\t\t\tif (entry.remove) {\n\t\t\t\t\tnewWord = newWord.replace(entry.remove, \"\");\n\t\t\t\t}\n\n\t\t\t\tif (rule.type === \"SFX\") {\n\t\t\t\t\tnewWord = newWord + entry.add;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnewWord = entry.add + newWord;\n\t\t\t\t}\n\n\t\t\t\tnewWords.push(newWord);\n\n\t\t\t\tif (\"continuationClasses\" in entry) {\n\t\t\t\t\tfor (var j = 0, _jlen = entry.continuationClasses.length; j < _jlen; j++) {\n\t\t\t\t\t\tvar continuationRule = this.rules[entry.continuationClasses[j]];\n\n\t\t\t\t\t\tif (continuationRule) {\n\t\t\t\t\t\t\tnewWords = newWords.concat(this._applyRule(newWord, continuationRule));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/*\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// This shouldn't happen, but it does, at least in the de_DE dictionary.\n\t\t\t\t\t\t\t// I think the author mistakenly supplied lower-case rule codes instead\n\t\t\t\t\t\t\t// of upper-case.\n\t\t\t\t\t\t}\n\t\t\t\t\t\t*/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn newWords;\n\t},\n\n\t/**\n\t * Checks whether a word or a capitalization variant exists in the current dictionary.\n\t * The word is trimmed and several variations of capitalizations are checked.\n\t * If you want to check a word without any changes made to it, call checkExact()\n\t *\n\t * @see http://blog.stevenlevithan.com/archives/faster-trim-javascript re:trimming function\n\t *\n\t * @param {String} aWord The word to check.\n\t * @returns {Boolean}\n\t */\n\n\tcheck : function (aWord) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\t// Remove leading and trailing whitespace\n\t\tvar trimmedWord = aWord.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\n\t\tif (this.checkExact(trimmedWord)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// The exact word is not in the dictionary.\n\t\tif (trimmedWord.toUpperCase() === trimmedWord) {\n\t\t\t// The word was supplied in all uppercase.\n\t\t\t// Check for a capitalized form of the word.\n\t\t\tvar capitalizedWord = trimmedWord[0] + trimmedWord.substring(1).toLowerCase();\n\n\t\t\tif (this.hasFlag(capitalizedWord, \"KEEPCASE\")) {\n\t\t\t\t// Capitalization variants are not allowed for this word.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.checkExact(capitalizedWord)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tvar lowercaseWord = trimmedWord.toLowerCase();\n\n\t\tif (lowercaseWord !== trimmedWord) {\n\t\t\tif (this.hasFlag(lowercaseWord, \"KEEPCASE\")) {\n\t\t\t\t// Capitalization variants are not allowed for this word.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Check for a lowercase form\n\t\t\tif (this.checkExact(lowercaseWord)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks whether a word exists in the current dictionary.\n\t *\n\t * @param {String} word The word to check.\n\t * @returns {Boolean}\n\t */\n\n\tcheckExact : function (word) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\tvar ruleCodes = this.dictionaryTable[word];\n\n\t\tvar i, _len;\n\n\t\tif (typeof ruleCodes === 'undefined') {\n\t\t\t// Check if this might be a compound word.\n\t\t\tif (\"COMPOUNDMIN\" in this.flags && word.length >= this.flags.COMPOUNDMIN) {\n\t\t\t\tfor (i = 0, _len = this.compoundRules.length; i < _len; i++) {\n\t\t\t\t\tif (word.match(this.compoundRules[i])) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (ruleCodes === null) {\n\t\t\t// a null (but not undefined) value for an entry in the dictionary table\n\t\t\t// means that the word is in the dictionary but has no flags.\n\t\t\treturn true;\n\t\t}\n\t\telse if (typeof ruleCodes === 'object') { // this.dictionary['hasOwnProperty'] will be a function.\n\t\t\tfor (i = 0, _len = ruleCodes.length; i < _len; i++) {\n\t\t\t\tif (!this.hasFlag(word, \"ONLYINCOMPOUND\", ruleCodes[i])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Looks up whether a given word is flagged with a given flag.\n\t *\n\t * @param {String} word The word in question.\n\t * @param {String} flag The flag in question.\n\t * @return {Boolean}\n\t */\n\n\thasFlag : function (word, flag, wordFlags) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\tif (flag in this.flags) {\n\t\t\tif (typeof wordFlags === 'undefined') {\n\t\t\t\twordFlags = Array.prototype.concat.apply([], this.dictionaryTable[word]);\n\t\t\t}\n\n\t\t\tif (wordFlags && wordFlags.indexOf(this.flags[flag]) !== -1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Returns a list of suggestions for a misspelled word.\n\t *\n\t * @see http://www.norvig.com/spell-correct.html for the basis of this suggestor.\n\t * This suggestor is primitive, but it works.\n\t *\n\t * @param {String} word The misspelling.\n\t * @param {Number} [limit=5] The maximum number of suggestions to return.\n\t * @returns {String[]} The array of suggestions.\n\t */\n\n\talphabet : \"\",\n\n\tsuggest : function (word, limit) {\n\t\tif (!this.loaded) {\n\t\t\tthrow \"Dictionary not loaded.\";\n\t\t}\n\n\t\tlimit = limit || 5;\n\n\t\tif (this.memoized.hasOwnProperty(word)) {\n\t\t\tvar memoizedLimit = this.memoized[word]['limit'];\n\n\t\t\t// Only return the cached list if it's big enough or if there weren't enough suggestions\n\t\t\t// to fill a smaller limit.\n\t\t\tif (limit <= memoizedLimit || this.memoized[word]['suggestions'].length < memoizedLimit) {\n\t\t\t\treturn this.memoized[word]['suggestions'].slice(0, limit);\n\t\t\t}\n\t\t}\n\n\t\tif (this.check(word)) return [];\n\n\t\t// Check the replacement table.\n\t\tfor (var i = 0, _len = this.replacementTable.length; i < _len; i++) {\n\t\t\tvar replacementEntry = this.replacementTable[i];\n\n\t\t\tif (word.indexOf(replacementEntry[0]) !== -1) {\n\t\t\t\tvar correctedWord = word.replace(replacementEntry[0], replacementEntry[1]);\n\n\t\t\t\tif (this.check(correctedWord)) {\n\t\t\t\t\treturn [ correctedWord ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\t\tself.alphabet = \"abcdefghijklmnopqrstuvwxyz\";\n\n\t\t/*\n\t\tif (!self.alphabet) {\n\t\t\t// Use the alphabet as implicitly defined by the words in the dictionary.\n\t\t\tvar alphaHash = {};\n\n\t\t\tfor (var i in self.dictionaryTable) {\n\t\t\t\tfor (var j = 0, _len = i.length; j < _len; j++) {\n\t\t\t\t\talphaHash[i[j]] = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i in alphaHash) {\n\t\t\t\tself.alphabet += i;\n\t\t\t}\n\n\t\t\tvar alphaArray = self.alphabet.split(\"\");\n\t\t\talphaArray.sort();\n\t\t\tself.alphabet = alphaArray.join(\"\");\n\t\t}\n\t\t*/\n\n\t\t/**\n\t\t * Returns a hash keyed by all of the strings that can be made by making a single edit to the word (or words in) `words`\n\t\t * The value of each entry is the number of unique ways that the resulting word can be made.\n\t\t *\n\t\t * @arg mixed words Either a hash keyed by words or a string word to operate on.\n\t\t * @arg bool known_only Whether this function should ignore strings that are not in the dictionary.\n\t\t */\n\t\tfunction edits1(words, known_only) {\n\t\t\tvar rv = {};\n\n\t\t\tvar i, j, _iilen, _len, _jlen, _edit;\n\n\t\t\tif (typeof words == 'string') {\n\t\t\t\tvar word = words;\n\t\t\t\twords = {};\n\t\t\t\twords[word] = true;\n\t\t\t}\n\n\t\t\tfor (var word in words) {\n\t\t\t\tfor (i = 0, _len = word.length + 1; i < _len; i++) {\n\t\t\t\t\tvar s = [ word.substring(0, i), word.substring(i) ];\n\n\t\t\t\t\tif (s[1]) {\n\t\t\t\t\t\t_edit = s[0] + s[1].substring(1);\n\n\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\trv[_edit] += 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Eliminate transpositions of identical letters\n\t\t\t\t\tif (s[1].length > 1 && s[1][1] !== s[1][0]) {\n\t\t\t\t\t\t_edit = s[0] + s[1][1] + s[1][0] + s[1].substring(2);\n\n\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\trv[_edit] += 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (s[1]) {\n\t\t\t\t\t\tfor (j = 0, _jlen = self.alphabet.length; j < _jlen; j++) {\n\t\t\t\t\t\t\t// Eliminate replacement of a letter by itself\n\t\t\t\t\t\t\tif (self.alphabet[j] != s[1].substring(0,1)){\n\t\t\t\t\t\t\t\t_edit = s[0] + self.alphabet[j] + s[1].substring(1);\n\n\t\t\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\trv[_edit] += 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (s[1]) {\n\t\t\t\t\t\tfor (j = 0, _jlen = self.alphabet.length; j < _jlen; j++) {\n\t\t\t\t\t\t\t_edit = s[0] + self.alphabet[j] + s[1];\n\n\t\t\t\t\t\t\tif (!known_only || self.check(_edit)) {\n\t\t\t\t\t\t\t\tif (!(_edit in rv)) {\n\t\t\t\t\t\t\t\t\trv[_edit] = 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\trv[_edit] += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn rv;\n\t\t}\n\n\t\tfunction correct(word) {\n\t\t\t// Get the edit-distance-1 and edit-distance-2 forms of this word.\n\t\t\tvar ed1 = edits1(word);\n\t\t\tvar ed2 = edits1(ed1, true);\n\n\t\t\t// Sort the edits based on how many different ways they were created.\n\t\t\tvar weighted_corrections = ed2;\n\n\t\t\tfor (var ed1word in ed1) {\n\t\t\t\tif (!self.check(ed1word)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (ed1word in weighted_corrections) {\n\t\t\t\t\tweighted_corrections[ed1word] += ed1[ed1word];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tweighted_corrections[ed1word] = ed1[ed1word];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar i, _len;\n\n\t\t\tvar sorted_corrections = [];\n\n\t\t\tfor (i in weighted_corrections) {\n\t\t\t\tif (weighted_corrections.hasOwnProperty(i)) {\n\t\t\t\t\tsorted_corrections.push([ i, weighted_corrections[i] ]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction sorter(a, b) {\n\t\t\t\tif (a[1] < b[1]) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\t// @todo If a and b are equally weighted, add our own weight based on something like the key locations on this language's default keyboard.\n\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tsorted_corrections.sort(sorter).reverse();\n\n\t\t\tvar rv = [];\n\n\t\t\tvar capitalization_scheme = \"lowercase\";\n\n\t\t\tif (word.toUpperCase() === word) {\n\t\t\t\tcapitalization_scheme = \"uppercase\";\n\t\t\t}\n\t\t\telse if (word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase() === word) {\n\t\t\t\tcapitalization_scheme = \"capitalized\";\n\t\t\t}\n\n\t\t\tvar working_limit = limit;\n\n\t\t\tfor (i = 0; i < Math.min(working_limit, sorted_corrections.length); i++) {\n\t\t\t\tif (\"uppercase\" === capitalization_scheme) {\n\t\t\t\t\tsorted_corrections[i][0] = sorted_corrections[i][0].toUpperCase();\n\t\t\t\t}\n\t\t\t\telse if (\"capitalized\" === capitalization_scheme) {\n\t\t\t\t\tsorted_corrections[i][0] = sorted_corrections[i][0].substr(0, 1).toUpperCase() + sorted_corrections[i][0].substr(1);\n\t\t\t\t}\n\n\t\t\t\tif (!self.hasFlag(sorted_corrections[i][0], \"NOSUGGEST\") && rv.indexOf(sorted_corrections[i][0]) == -1) {\n\t\t\t\t\trv.push(sorted_corrections[i][0]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// If one of the corrections is not eligible as a suggestion , make sure we still return the right number of suggestions.\n\t\t\t\t\tworking_limit++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn rv;\n\t\t}\n\n\t\tthis.memoized[word] = {\n\t\t\t'suggestions': correct(word),\n\t\t\t'limit': limit\n\t\t};\n\n\t\treturn this.memoized[word]['suggestions'];\n\t}\n};\n})();\n\n// Support for use as a node.js module.\nif (typeof module !== 'undefined') {\n\tmodule.exports = Typo;\n}","// Underscore.js 1.5.1\n// http://underscorejs.org\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function () {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` in the browser, or `global` on the server.\n var root = this;\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Establish the object that gets returned to break out of a loop iteration.\n var breaker = {};\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n // Create quick reference variables for speed access to core prototypes.\n var\n push = ArrayProto.push,\n slice = ArrayProto.slice,\n concat = ArrayProto.concat,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var\n nativeForEach = ArrayProto.forEach,\n nativeMap = ArrayProto.map,\n nativeReduce = ArrayProto.reduce,\n nativeReduceRight = ArrayProto.reduceRight,\n nativeFilter = ArrayProto.filter,\n nativeEvery = ArrayProto.every,\n nativeSome = ArrayProto.some,\n nativeIndexOf = ArrayProto.indexOf,\n nativeLastIndexOf = ArrayProto.lastIndexOf,\n nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeBind = FuncProto.bind;\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function (obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for the old `require()` API. If we're in\n // the browser, add `_` as a global object via a string identifier,\n // for Closure Compiler \"advanced\" mode.\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.5.1';\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles objects with the built-in `forEach`, arrays, and raw objects.\n // Delegates to **ECMAScript 5**'s native `forEach` if available.\n var each = _.each = _.forEach = function (obj, iterator, context) {\n if (obj == null) return;\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (iterator.call(context, obj[i], i, obj) === breaker) return;\n }\n } else {\n for (var key in obj) {\n if (_.has(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) return;\n }\n }\n }\n };\n\n // Return the results of applying the iterator to each element.\n // Delegates to **ECMAScript 5**'s native `map` if available.\n _.map = _.collect = function (obj, iterator, context) {\n var results = [];\n if (obj == null) return results;\n if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n each(obj, function (value, index, list) {\n results.push(iterator.call(context, value, index, list));\n });\n return results;\n };\n\n var reduceError = 'Reduce of empty array with no initial value';\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.\n _.reduce = _.foldl = _.inject = function (obj, iterator, memo, context) {\n var initial = arguments.length > 2;\n if (obj == null) obj = [];\n if (nativeReduce && obj.reduce === nativeReduce) {\n if (context) iterator = _.bind(iterator, context);\n return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);\n }\n each(obj, function (value, index, list) {\n if (!initial) {\n memo = value;\n initial = true;\n } else {\n memo = iterator.call(context, memo, value, index, list);\n }\n });\n if (!initial) throw new TypeError(reduceError);\n return memo;\n };\n\n // The right-associative version of reduce, also known as `foldr`.\n // Delegates to **ECMAScript 5**'s native `reduceRight` if available.\n _.reduceRight = _.foldr = function (obj, iterator, memo, context) {\n var initial = arguments.length > 2;\n if (obj == null) obj = [];\n if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {\n if (context) iterator = _.bind(iterator, context);\n return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);\n }\n var length = obj.length;\n if (length !== +length) {\n var keys = _.keys(obj);\n length = keys.length;\n }\n each(obj, function (value, index, list) {\n index = keys ? keys[--length] : --length;\n if (!initial) {\n memo = obj[index];\n initial = true;\n } else {\n memo = iterator.call(context, memo, obj[index], index, list);\n }\n });\n if (!initial) throw new TypeError(reduceError);\n return memo;\n };\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function (obj, iterator, context) {\n var result;\n any(obj, function (value, index, list) {\n if (iterator.call(context, value, index, list)) {\n result = value;\n return true;\n }\n });\n return result;\n };\n\n // Return all the elements that pass a truth test.\n // Delegates to **ECMAScript 5**'s native `filter` if available.\n // Aliased as `select`.\n _.filter = _.select = function (obj, iterator, context) {\n var results = [];\n if (obj == null) return results;\n if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);\n each(obj, function (value, index, list) {\n if (iterator.call(context, value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function (obj, iterator, context) {\n return _.filter(obj, function (value, index, list) {\n return !iterator.call(context, value, index, list);\n }, context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Delegates to **ECMAScript 5**'s native `every` if available.\n // Aliased as `all`.\n _.every = _.all = function (obj, iterator, context) {\n iterator || (iterator = _.identity);\n var result = true;\n if (obj == null) return result;\n if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);\n each(obj, function (value, index, list) {\n if (!(result = result && iterator.call(context, value, index, list))) return breaker;\n });\n return !!result;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Delegates to **ECMAScript 5**'s native `some` if available.\n // Aliased as `any`.\n var any = _.some = _.any = function (obj, iterator, context) {\n iterator || (iterator = _.identity);\n var result = false;\n if (obj == null) return result;\n if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);\n each(obj, function (value, index, list) {\n if (result || (result = iterator.call(context, value, index, list))) return breaker;\n });\n return !!result;\n };\n\n // Determine if the array or object contains a given value (using `===`).\n // Aliased as `include`.\n _.contains = _.include = function (obj, target) {\n if (obj == null) return false;\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;\n return any(obj, function (value) {\n return value === target;\n });\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = function (obj, method) {\n var args = slice.call(arguments, 2);\n var isFunc = _.isFunction(method);\n return _.map(obj, function (value) {\n return (isFunc ? method : value[method]).apply(value, args);\n });\n };\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function (obj, key) {\n return _.map(obj, function (value) { return value[key]; });\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function (obj, attrs, first) {\n if (_.isEmpty(attrs)) return first ? void 0 : [];\n return _[first ? 'find' : 'filter'](obj, function (value) {\n for (var key in attrs) {\n if (attrs[key] !== value[key]) return false;\n }\n return true;\n });\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function (obj, attrs) {\n return _.where(obj, attrs, true);\n };\n\n // Return the maximum element or (element-based computation).\n // Can't optimize arrays of integers longer than 65,535 elements.\n // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)\n _.max = function (obj, iterator, context) {\n if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {\n return Math.max.apply(Math, obj);\n }\n if (!iterator && _.isEmpty(obj)) return -Infinity;\n var result = { computed: -Infinity, value: -Infinity };\n each(obj, function (value, index, list) {\n var computed = iterator ? iterator.call(context, value, index, list) : value;\n computed > result.computed && (result = { value: value, computed: computed });\n });\n return result.value;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function (obj, iterator, context) {\n if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {\n return Math.min.apply(Math, obj);\n }\n if (!iterator && _.isEmpty(obj)) return Infinity;\n var result = { computed: Infinity, value: Infinity };\n each(obj, function (value, index, list) {\n var computed = iterator ? iterator.call(context, value, index, list) : value;\n computed < result.computed && (result = { value: value, computed: computed });\n });\n return result.value;\n };\n\n // Shuffle an array.\n _.shuffle = function (obj) {\n var rand;\n var index = 0;\n var shuffled = [];\n each(obj, function (value) {\n rand = _.random(index++);\n shuffled[index - 1] = shuffled[rand];\n shuffled[rand] = value;\n });\n return shuffled;\n };\n\n // An internal function to generate lookup iterators.\n var lookupIterator = function (value) {\n return _.isFunction(value) ? value : function (obj) { return obj[value]; };\n };\n\n // Sort the object's values by a criterion produced by an iterator.\n _.sortBy = function (obj, value, context) {\n var iterator = lookupIterator(value);\n return _.pluck(_.map(obj, function (value, index, list) {\n return {\n value: value,\n index: index,\n criteria: iterator.call(context, value, index, list)\n };\n }).sort(function (left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index < right.index ? -1 : 1;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function (obj, value, context, behavior) {\n var result = {};\n var iterator = lookupIterator(value == null ? _.identity : value);\n each(obj, function (value, index) {\n var key = iterator.call(context, value, index, obj);\n behavior(result, key, value);\n });\n return result;\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = function (obj, value, context) {\n return group(obj, value, context, function (result, key, value) {\n (_.has(result, key) ? result[key] : (result[key] = [])).push(value);\n });\n };\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = function (obj, value, context) {\n return group(obj, value, context, function (result, key) {\n if (!_.has(result, key)) result[key] = 0;\n result[key]++;\n });\n };\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function (array, obj, iterator, context) {\n iterator = iterator == null ? _.identity : lookupIterator(iterator);\n var value = iterator.call(context, obj);\n var low = 0, high = array.length;\n while (low < high) {\n var mid = (low + high) >>> 1;\n iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;\n }\n return low;\n };\n\n // Safely create a real, live array from anything iterable.\n _.toArray = function (obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (obj.length === +obj.length) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function (obj) {\n if (obj == null) return 0;\n return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;\n };\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function (array, n, guard) {\n if (array == null) return void 0;\n return (n != null) && !guard ? slice.call(array, 0, n) : array[0];\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N. The **guard** check allows it to work with\n // `_.map`.\n _.initial = function (array, n, guard) {\n return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array. The **guard** check allows it to work with `_.map`.\n _.last = function (array, n, guard) {\n if (array == null) return void 0;\n if ((n != null) && !guard) {\n return slice.call(array, Math.max(array.length - n, 0));\n } else {\n return array[array.length - 1];\n }\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array. The **guard**\n // check allows it to work with `_.map`.\n _.rest = _.tail = _.drop = function (array, n, guard) {\n return slice.call(array, (n == null) || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function (array) {\n return _.filter(array, _.identity);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function (input, shallow, output) {\n if (shallow && _.every(input, _.isArray)) {\n return concat.apply(output, input);\n }\n each(input, function (value) {\n if (_.isArray(value) || _.isArguments(value)) {\n shallow ? push.apply(output, value) : flatten(value, shallow, output);\n } else {\n output.push(value);\n }\n });\n return output;\n };\n\n // Return a completely flattened version of an array.\n _.flatten = function (array, shallow) {\n return flatten(array, shallow, []);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = function (array) {\n return _.difference(array, slice.call(arguments, 1));\n };\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function (array, isSorted, iterator, context) {\n if (_.isFunction(isSorted)) {\n context = iterator;\n iterator = isSorted;\n isSorted = false;\n }\n var initial = iterator ? _.map(array, iterator, context) : array;\n var results = [];\n var seen = [];\n each(initial, function (value, index) {\n if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {\n seen.push(value);\n results.push(array[index]);\n }\n });\n return results;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = function () {\n return _.uniq(_.flatten(arguments, true));\n };\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function (array) {\n var rest = slice.call(arguments, 1);\n return _.filter(_.uniq(array), function (item) {\n return _.every(rest, function (other) {\n return _.indexOf(other, item) >= 0;\n });\n });\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = function (array) {\n var rest = concat.apply(ArrayProto, slice.call(arguments, 1));\n return _.filter(array, function (value) { return !_.contains(rest, value); });\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = function () {\n var length = _.max(_.pluck(arguments, \"length\").concat(0));\n var results = new Array(length);\n for (var i = 0; i < length; i++) {\n results[i] = _.pluck(arguments, '' + i);\n }\n return results;\n };\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values.\n _.object = function (list, values) {\n if (list == null) return {};\n var result = {};\n for (var i = 0, l = list.length; i < l; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),\n // we need this function. Return the position of the first occurrence of an\n // item in an array, or -1 if the item is not included in the array.\n // Delegates to **ECMAScript 5**'s native `indexOf` if available.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = function (array, item, isSorted) {\n if (array == null) return -1;\n var i = 0, l = array.length;\n if (isSorted) {\n if (typeof isSorted == 'number') {\n i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted);\n } else {\n i = _.sortedIndex(array, item);\n return array[i] === item ? i : -1;\n }\n }\n if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);\n for (; i < l; i++) if (array[i] === item) return i;\n return -1;\n };\n\n // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.\n _.lastIndexOf = function (array, item, from) {\n if (array == null) return -1;\n var hasIndex = from != null;\n if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {\n return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);\n }\n var i = (hasIndex ? from : array.length);\n while (i--) if (array[i] === item) return i;\n return -1;\n };\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function (start, stop, step) {\n if (arguments.length <= 1) {\n stop = start || 0;\n start = 0;\n }\n step = arguments[2] || 1;\n\n var len = Math.max(Math.ceil((stop - start) / step), 0);\n var idx = 0;\n var range = new Array(len);\n\n while (idx < len) {\n range[idx++] = start;\n start += step;\n }\n\n return range;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Reusable constructor function for prototype setting.\n var ctor = function () { };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = function (func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n if (!_.isFunction(func)) throw new TypeError;\n args = slice.call(arguments, 2);\n return bound = function () {\n if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));\n ctor.prototype = func.prototype;\n var self = new ctor;\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) return result;\n return self;\n };\n };\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context.\n _.partial = function (func) {\n var args = slice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(slice.call(arguments)));\n };\n };\n\n // Bind all of an object's methods to that object. Useful for ensuring that\n // all callbacks defined on an object belong to it.\n _.bindAll = function (obj) {\n var funcs = slice.call(arguments, 1);\n if (funcs.length === 0) throw new Error(\"bindAll must be passed function names\");\n each(funcs, function (f) { obj[f] = _.bind(obj[f], obj); });\n return obj;\n };\n\n // Memoize an expensive function by storing its results.\n _.memoize = function (func, hasher) {\n var memo = {};\n hasher || (hasher = _.identity);\n return function () {\n var key = hasher.apply(this, arguments);\n return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));\n };\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = function (func, wait) {\n var args = slice.call(arguments, 2);\n return setTimeout(function () { return func.apply(null, args); }, wait);\n };\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = function (func) {\n return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));\n };\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function (func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n options || (options = {});\n var later = function () {\n previous = options.leading === false ? 0 : new Date;\n timeout = null;\n result = func.apply(context, args);\n };\n return function () {\n var now = new Date;\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function (func, wait, immediate) {\n var result;\n var timeout = null;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(context, args);\n return result;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = function (func) {\n var ran = false, memo;\n return function () {\n if (ran) return memo;\n ran = true;\n memo = func.apply(this, arguments);\n func = null;\n return memo;\n };\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function (func, wrapper) {\n return function () {\n var args = [func];\n push.apply(args, arguments);\n return wrapper.apply(this, args);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function () {\n var funcs = arguments;\n return function () {\n var args = arguments;\n for (var i = funcs.length - 1; i >= 0; i--) {\n args = [funcs[i].apply(this, args)];\n }\n return args[0];\n };\n };\n\n // Returns a function that will only be executed after being called N times.\n _.after = function (times, func) {\n return function () {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Object Functions\n // ----------------\n\n // Retrieve the names of an object's properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`\n _.keys = nativeKeys || function (obj) {\n if (obj !== Object(obj)) throw new TypeError('Invalid object');\n var keys = [];\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function (obj) {\n var values = [];\n for (var key in obj) if (_.has(obj, key)) values.push(obj[key]);\n return values;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n _.pairs = function (obj) {\n var pairs = [];\n for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]);\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function (obj) {\n var result = {};\n for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key;\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`\n _.functions = _.methods = function (obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = function (obj) {\n each(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n obj[prop] = source[prop];\n }\n }\n });\n return obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = function (obj) {\n var copy = {};\n var keys = concat.apply(ArrayProto, slice.call(arguments, 1));\n each(keys, function (key) {\n if (key in obj) copy[key] = obj[key];\n });\n return copy;\n };\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = function (obj) {\n var copy = {};\n var keys = concat.apply(ArrayProto, slice.call(arguments, 1));\n for (var key in obj) {\n if (!_.contains(keys, key)) copy[key] = obj[key];\n }\n return copy;\n };\n\n // Fill in a given object with default properties.\n _.defaults = function (obj) {\n each(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === void 0) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function (obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function (obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Internal recursive comparison function for `isEqual`.\n var eq = function (a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a == 1 / b;\n // A strict comparison is necessary because `null == undefined`.\n if (a == null || b == null) return a === b;\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className != toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, dates, and booleans are compared by value.\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return a == String(b);\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for\n // other numeric values.\n return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a == +b;\n // RegExps are compared by their source patterns and flags.\n case '[object RegExp]':\n return a.source == b.source &&\n a.global == b.global &&\n a.multiline == b.multiline &&\n a.ignoreCase == b.ignoreCase;\n }\n if (typeof a != 'object' || typeof b != 'object') return false;\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] == a) return bStack[length] == b;\n }\n // Objects with different constructors are not equivalent, but `Object`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&\n _.isFunction(bCtor) && (bCtor instanceof bCtor))) {\n return false;\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n var size = 0, result = true;\n // Recursively compare objects and arrays.\n if (className == '[object Array]') {\n // Compare array lengths to determine if a deep comparison is necessary.\n size = a.length;\n result = size == b.length;\n if (result) {\n // Deep compare the contents, ignoring non-numeric properties.\n while (size--) {\n if (!(result = eq(a[size], b[size], aStack, bStack))) break;\n }\n }\n } else {\n // Deep compare objects.\n for (var key in a) {\n if (_.has(a, key)) {\n // Count the expected number of properties.\n size++;\n // Deep compare each member.\n if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;\n }\n }\n // Ensure that both objects contain the same number of properties.\n if (result) {\n for (key in b) {\n if (_.has(b, key) && !(size--)) break;\n }\n result = !size;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return result;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function (a, b) {\n return eq(a, b, [], []);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function (obj) {\n if (obj == null) return true;\n if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;\n for (var key in obj) if (_.has(obj, key)) return false;\n return true;\n };\n\n // Is a given value a DOM element?\n _.isElement = function (obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function (obj) {\n return toString.call(obj) == '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function (obj) {\n return obj === Object(obj);\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.\n each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function (name) {\n _['is' + name] = function (obj) {\n return toString.call(obj) == '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function (obj) {\n return !!(obj && _.has(obj, 'callee'));\n };\n }\n\n // Optimize `isFunction` if appropriate.\n if (typeof (/./) !== 'function') {\n _.isFunction = function (obj) {\n return typeof obj === 'function';\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function (obj) {\n return isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n _.isNaN = function (obj) {\n return _.isNumber(obj) && obj != +obj;\n };\n\n // Is a given value a boolean?\n _.isBoolean = function (obj) {\n return obj === true || obj === false || toString.call(obj) == '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function (obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function (obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function (obj, key) {\n return hasOwnProperty.call(obj, key);\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function () {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iterators.\n _.identity = function (value) {\n return value;\n };\n\n // Run a function **n** times.\n _.times = function (n, iterator, context) {\n var accum = Array(Math.max(0, n));\n for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function (min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // List of HTML entities for escaping.\n var entityMap = {\n escape: {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n }\n };\n entityMap.unescape = _.invert(entityMap.escape);\n\n // Regexes containing the keys and values listed immediately above.\n var entityRegexes = {\n escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),\n unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')\n };\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n _.each(['escape', 'unescape'], function (method) {\n _[method] = function (string) {\n if (string == null) return '';\n return ('' + string).replace(entityRegexes[method], function (match) {\n return entityMap[method][match];\n });\n };\n });\n\n // If the value of the named `property` is a function then invoke it with the\n // `object` as context; otherwise, return it.\n _.result = function (object, property) {\n if (object == null) return void 0;\n var value = object[property];\n return _.isFunction(value) ? value.call(object) : value;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function (obj) {\n each(_.functions(obj), function (name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function () {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return result.call(this, func.apply(_, args));\n };\n });\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function (prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\t': 't',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escaper = /\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n _.template = function (text, data, settings) {\n var render;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = new RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset)\n .replace(escaper, function (match) { return '\\\\' + escapes[match]; });\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n }\n if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n }\n if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n index = offset + match.length;\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + \"return __p;\\n\";\n\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n if (data) return render(data, _);\n var template = function (data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled function source as a convenience for precompilation.\n template.source = 'function(' + (settings.variable || 'obj') + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function, which will delegate to the wrapper.\n _.chain = function (obj) {\n return _(obj).chain();\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var result = function (obj) {\n return this._chain ? _(obj).chain() : obj;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function (name) {\n var method = ArrayProto[name];\n _.prototype[name] = function () {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];\n return result.call(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n each(['concat', 'join', 'slice'], function (name) {\n var method = ArrayProto[name];\n _.prototype[name] = function () {\n return result.call(this, method.apply(this._wrapped, arguments));\n };\n });\n\n _.extend(_.prototype, {\n\n // Start chaining a wrapped Underscore object.\n chain: function () {\n this._chain = true;\n return this;\n },\n\n // Extracts the result from a wrapped and chained object.\n value: function () {\n return this._wrapped;\n }\n\n });\n\n}).call(this);","/*! =========================================================\n * bootstrap-slider.js\n *\n * Maintainers:\n * Kyle Kemp\n * - Twitter: @seiyria\n * - Github: seiyria\n * Rohit Kalkur\n * - Twitter: @Rovolutionary\n * - Github: rovolution\n *\n * =========================================================\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n\n/**\n * Bridget makes jQuery widgets\n * v1.0.1\n * MIT license\n */\n\n(function(root, factory) {\n if(typeof define === \"function\" && define.amd) {\n define([\"jquery\"], factory);\n }\n else if(typeof module === \"object\" && module.exports) {\n var jQuery;\n try {\n jQuery = require(\"jquery\");\n }\n catch (err) {\n jQuery = null;\n }\n module.exports = factory(jQuery);\n }\n else {\n root.Slider = factory(root.jQuery);\n }\n}(this, function($) {\n // Reference to Slider constructor\n var Slider;\n\n\n (function( $ ) {\n\n 'use strict';\n\n // -------------------------- utils -------------------------- //\n\n var slice = Array.prototype.slice;\n\n function noop() {}\n\n // -------------------------- definition -------------------------- //\n\n function defineBridget( $ ) {\n\n // bail if no jQuery\n if ( !$ ) {\n return;\n }\n\n // -------------------------- addOptionMethod -------------------------- //\n\n /**\n * adds option method -> $().plugin('option', {...})\n * @param {Function} PluginClass - constructor class\n */\n function addOptionMethod( PluginClass ) {\n // don't overwrite original option method\n if ( PluginClass.prototype.option ) {\n return;\n }\n\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n\n // -------------------------- plugin bridge -------------------------- //\n\n // helper function for logging errors\n // $.error breaks jQuery chaining\n var logError = typeof console === 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n /**\n * jQuery plugin bridge, access methods like $elem.plugin('method')\n * @param {String} namespace - plugin name\n * @param {Function} PluginClass - constructor class\n */\n function bridge( namespace, PluginClass ) {\n // add to jQuery fn namespace\n $.fn[ namespace ] = function( options ) {\n if ( typeof options === 'string' ) {\n // call plugin method when first argument is a string\n // get arguments for method\n var args = slice.call( arguments, 1 );\n\n for ( var i=0, len = this.length; i < len; i++ ) {\n var elem = this[i];\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( \"cannot call methods on \" + namespace + \" prior to initialization; \" +\n \"attempted to call '\" + options + \"'\" );\n continue;\n }\n if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) {\n logError( \"no such method '\" + options + \"' for \" + namespace + \" instance\" );\n continue;\n }\n\n // trigger method with arguments\n var returnValue = instance[ options ].apply( instance, args);\n\n // break look and return first value if provided\n if ( returnValue !== undefined && returnValue !== instance) {\n return returnValue;\n }\n }\n // return this if no return value\n return this;\n } else {\n var objects = this.map( function() {\n var instance = $.data( this, namespace );\n if ( instance ) {\n // apply options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( this, options );\n $.data( this, namespace, instance );\n }\n return $(this);\n });\n\n if(!objects || objects.length > 1) {\n return objects;\n } else {\n return objects[0];\n }\n }\n };\n\n }\n\n // -------------------------- bridget -------------------------- //\n\n /**\n * converts a Prototypical class into a proper jQuery plugin\n * the class must have a ._init method\n * @param {String} namespace - plugin name, used in $().pluginName\n * @param {Function} PluginClass - constructor class\n */\n $.bridget = function( namespace, PluginClass ) {\n addOptionMethod( PluginClass );\n bridge( namespace, PluginClass );\n };\n\n return $.bridget;\n\n }\n\n // get jquery from browser global\n defineBridget( $ );\n\n })( $ );\n\n\n /*************************************************\n\n BOOTSTRAP-SLIDER SOURCE CODE\n\n **************************************************/\n\n (function($) {\n\n var ErrorMsgs = {\n formatInvalidInputErrorMsg : function(input) {\n return \"Invalid input value '\" + input + \"' passed in\";\n },\n callingContextNotSliderInstance : \"Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method\"\n };\n\n var SliderScale = {\n linear: {\n toValue: function(percentage) {\n var rawValue = percentage/100 * (this.options.max - this.options.min);\n if (this.options.ticks_positions.length > 0) {\n var minv, maxv, minp, maxp = 0;\n for (var i = 0; i < this.options.ticks_positions.length; i++) {\n if (percentage <= this.options.ticks_positions[i]) {\n minv = (i > 0) ? this.options.ticks[i-1] : 0;\n minp = (i > 0) ? this.options.ticks_positions[i-1] : 0;\n maxv = this.options.ticks[i];\n maxp = this.options.ticks_positions[i];\n\n break;\n }\n }\n if (i > 0) {\n var partialPercentage = (percentage - minp) / (maxp - minp);\n rawValue = minv + partialPercentage * (maxv - minv);\n }\n }\n\n var value = this.options.min + Math.round(rawValue / this.options.step) * this.options.step;\n if (value < this.options.min) {\n return this.options.min;\n } else if (value > this.options.max) {\n return this.options.max;\n } else {\n return value;\n }\n },\n toPercentage: function(value) {\n if (this.options.max === this.options.min) {\n return 0;\n }\n\n if (this.options.ticks_positions.length > 0) {\n var minv, maxv, minp, maxp = 0;\n for (var i = 0; i < this.options.ticks.length; i++) {\n if (value <= this.options.ticks[i]) {\n minv = (i > 0) ? this.options.ticks[i-1] : 0;\n minp = (i > 0) ? this.options.ticks_positions[i-1] : 0;\n maxv = this.options.ticks[i];\n maxp = this.options.ticks_positions[i];\n\n break;\n }\n }\n if (i > 0) {\n var partialPercentage = (value - minv) / (maxv - minv);\n return minp + partialPercentage * (maxp - minp);\n }\n }\n\n return 100 * (value - this.options.min) / (this.options.max - this.options.min);\n }\n },\n\n logarithmic: {\n /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */\n toValue: function(percentage) {\n var min = (this.options.min === 0) ? 0 : Math.log(this.options.min);\n var max = Math.log(this.options.max);\n var value = Math.exp(min + (max - min) * percentage / 100);\n value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step;\n /* Rounding to the nearest step could exceed the min or\n * max, so clip to those values. */\n if (value < this.options.min) {\n return this.options.min;\n } else if (value > this.options.max) {\n return this.options.max;\n } else {\n return value;\n }\n },\n toPercentage: function(value) {\n if (this.options.max === this.options.min) {\n return 0;\n } else {\n var max = Math.log(this.options.max);\n var min = this.options.min === 0 ? 0 : Math.log(this.options.min);\n var v = value === 0 ? 0 : Math.log(value);\n return 100 * (v - min) / (max - min);\n }\n }\n }\n };\n\n\n /*************************************************\n\n CONSTRUCTOR\n\n **************************************************/\n Slider = function(element, options) {\n createNewSlider.call(this, element, options);\n return this;\n };\n\n function createNewSlider(element, options) {\n\n /*\n The internal state object is used to store data about the current 'state' of slider.\n\n This includes values such as the `value`, `enabled`, etc...\n */\n this._state = {\n value: null,\n enabled: null,\n offset: null,\n size: null,\n percentage: null,\n inDrag: false,\n over: false\n };\n\n\n if(typeof element === \"string\") {\n this.element = document.querySelector(element);\n } else if(element instanceof HTMLElement) {\n this.element = element;\n }\n\n /*************************************************\n\n Process Options\n\n **************************************************/\n options = options ? options : {};\n var optionTypes = Object.keys(this.defaultOptions);\n\n for(var i = 0; i < optionTypes.length; i++) {\n var optName = optionTypes[i];\n\n // First check if an option was passed in via the constructor\n var val = options[optName];\n // If no data attrib, then check data atrributes\n val = (typeof val !== 'undefined') ? val : getDataAttrib(this.element, optName);\n // Finally, if nothing was specified, use the defaults\n val = (val !== null) ? val : this.defaultOptions[optName];\n\n // Set all options on the instance of the Slider\n if(!this.options) {\n this.options = {};\n }\n this.options[optName] = val;\n }\n\n /*\n Validate `tooltip_position` against 'orientation`\n - if `tooltip_position` is incompatible with orientation, swith it to a default compatible with specified `orientation`\n -- default for \"vertical\" -> \"right\"\n -- default for \"horizontal\" -> \"left\"\n */\n if(this.options.orientation === \"vertical\" && (this.options.tooltip_position === \"top\" || this.options.tooltip_position === \"bottom\")) {\n\n this.options.tooltip_position = \"right\";\n\n }\n else if(this.options.orientation === \"horizontal\" && (this.options.tooltip_position === \"left\" || this.options.tooltip_position === \"right\")) {\n\n this.options.tooltip_position = \"top\";\n\n }\n\n function getDataAttrib(element, optName) {\n var dataName = \"data-slider-\" + optName.replace(/_/g, '-');\n var dataValString = element.getAttribute(dataName);\n\n try {\n return JSON.parse(dataValString);\n }\n catch(err) {\n return dataValString;\n }\n }\n\n /*************************************************\n\n Create Markup\n\n **************************************************/\n\n var origWidth = this.element.style.width;\n var updateSlider = false;\n var parent = this.element.parentNode;\n var sliderTrackSelection;\n var sliderTrackLow, sliderTrackHigh;\n var sliderMinHandle;\n var sliderMaxHandle;\n\n if (this.sliderElem) {\n updateSlider = true;\n } else {\n /* Create elements needed for slider */\n this.sliderElem = document.createElement(\"div\");\n this.sliderElem.className = \"slider\";\n\n /* Create slider track elements */\n var sliderTrack = document.createElement(\"div\");\n sliderTrack.className = \"slider-track\";\n\n sliderTrackLow = document.createElement(\"div\");\n sliderTrackLow.className = \"slider-track-low\";\n\n sliderTrackSelection = document.createElement(\"div\");\n sliderTrackSelection.className = \"slider-selection\";\n\n sliderTrackHigh = document.createElement(\"div\");\n sliderTrackHigh.className = \"slider-track-high\";\n\n sliderMinHandle = document.createElement(\"div\");\n sliderMinHandle.className = \"slider-handle min-slider-handle\";\n\n sliderMaxHandle = document.createElement(\"div\");\n sliderMaxHandle.className = \"slider-handle max-slider-handle\";\n\n sliderTrack.appendChild(sliderTrackLow);\n sliderTrack.appendChild(sliderTrackSelection);\n sliderTrack.appendChild(sliderTrackHigh);\n\n /* Create ticks */\n this.ticks = [];\n if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\n for (i = 0; i < this.options.ticks.length; i++) {\n var tick = document.createElement('div');\n tick.className = 'slider-tick';\n\n this.ticks.push(tick);\n sliderTrack.appendChild(tick);\n }\n\n sliderTrackSelection.className += \" tick-slider-selection\";\n }\n\n sliderTrack.appendChild(sliderMinHandle);\n sliderTrack.appendChild(sliderMaxHandle);\n\n this.tickLabels = [];\n if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) {\n this.tickLabelContainer = document.createElement('div');\n this.tickLabelContainer.className = 'slider-tick-label-container';\n\n for (i = 0; i < this.options.ticks_labels.length; i++) {\n var label = document.createElement('div');\n var noTickPositionsSpecified = this.options.ticks_positions.length === 0;\n var tickLabelsIndex = (this.options.reversed && noTickPositionsSpecified) ? (this.options.ticks_labels.length - (i + 1)) : i;\n label.className = 'slider-tick-label';\n label.innerHTML = this.options.ticks_labels[tickLabelsIndex];\n\n this.tickLabels.push(label);\n this.tickLabelContainer.appendChild(label);\n }\n }\n\n\n var createAndAppendTooltipSubElements = function(tooltipElem) {\n var arrow = document.createElement(\"div\");\n arrow.className = \"tooltip-arrow\";\n\n var inner = document.createElement(\"div\");\n inner.className = \"tooltip-inner\";\n\n tooltipElem.appendChild(arrow);\n tooltipElem.appendChild(inner);\n\n };\n\n /* Create tooltip elements */\n var sliderTooltip = document.createElement(\"div\");\n sliderTooltip.className = \"tooltip tooltip-main\";\n createAndAppendTooltipSubElements(sliderTooltip);\n\n var sliderTooltipMin = document.createElement(\"div\");\n sliderTooltipMin.className = \"tooltip tooltip-min\";\n createAndAppendTooltipSubElements(sliderTooltipMin);\n\n var sliderTooltipMax = document.createElement(\"div\");\n sliderTooltipMax.className = \"tooltip tooltip-max\";\n createAndAppendTooltipSubElements(sliderTooltipMax);\n\n\n /* Append components to sliderElem */\n this.sliderElem.appendChild(sliderTrack);\n this.sliderElem.appendChild(sliderTooltip);\n this.sliderElem.appendChild(sliderTooltipMin);\n this.sliderElem.appendChild(sliderTooltipMax);\n\n if (this.tickLabelContainer) {\n this.sliderElem.appendChild(this.tickLabelContainer);\n }\n\n /* Append slider element to parent container, right before the original element */\n parent.insertBefore(this.sliderElem, this.element);\n\n /* Hide original element */\n this.element.style.display = \"none\";\n }\n /* If JQuery exists, cache JQ references */\n if($) {\n this.$element = $(this.element);\n this.$sliderElem = $(this.sliderElem);\n }\n\n /*************************************************\n\n Setup\n\n **************************************************/\n this.eventToCallbackMap = {};\n this.sliderElem.id = this.options.id;\n\n this.touchCapable = 'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch);\n\n this.tooltip = this.sliderElem.querySelector('.tooltip-main');\n this.tooltipInner = this.tooltip.querySelector('.tooltip-inner');\n\n this.tooltip_min = this.sliderElem.querySelector('.tooltip-min');\n this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner');\n\n this.tooltip_max = this.sliderElem.querySelector('.tooltip-max');\n this.tooltipInner_max= this.tooltip_max.querySelector('.tooltip-inner');\n\n if (SliderScale[this.options.scale]) {\n this.options.scale = SliderScale[this.options.scale];\n }\n\n if (updateSlider === true) {\n // Reset classes\n this._removeClass(this.sliderElem, 'slider-horizontal');\n this._removeClass(this.sliderElem, 'slider-vertical');\n this._removeClass(this.tooltip, 'hide');\n this._removeClass(this.tooltip_min, 'hide');\n this._removeClass(this.tooltip_max, 'hide');\n\n // Undo existing inline styles for track\n [\"left\", \"top\", \"width\", \"height\"].forEach(function(prop) {\n this._removeProperty(this.trackLow, prop);\n this._removeProperty(this.trackSelection, prop);\n this._removeProperty(this.trackHigh, prop);\n }, this);\n\n // Undo inline styles on handles\n [this.handle1, this.handle2].forEach(function(handle) {\n this._removeProperty(handle, 'left');\n this._removeProperty(handle, 'top');\n }, this);\n\n // Undo inline styles and classes on tooltips\n [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(tooltip) {\n this._removeProperty(tooltip, 'left');\n this._removeProperty(tooltip, 'top');\n this._removeProperty(tooltip, 'margin-left');\n this._removeProperty(tooltip, 'margin-top');\n\n this._removeClass(tooltip, 'right');\n this._removeClass(tooltip, 'top');\n }, this);\n }\n\n if(this.options.orientation === 'vertical') {\n this._addClass(this.sliderElem,'slider-vertical');\n this.stylePos = 'top';\n this.mousePos = 'pageY';\n this.sizePos = 'offsetHeight';\n } else {\n this._addClass(this.sliderElem, 'slider-horizontal');\n this.sliderElem.style.width = origWidth;\n this.options.orientation = 'horizontal';\n this.stylePos = 'left';\n this.mousePos = 'pageX';\n this.sizePos = 'offsetWidth';\n\n }\n this._setTooltipPosition();\n /* In case ticks are specified, overwrite the min and max bounds */\n if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\n this.options.max = Math.max.apply(Math, this.options.ticks);\n this.options.min = Math.min.apply(Math, this.options.ticks);\n }\n\n if (Array.isArray(this.options.value)) {\n this.options.range = true;\n this._state.value = this.options.value;\n }\n else if (this.options.range) {\n // User wants a range, but value is not an array\n this._state.value = [this.options.value, this.options.max];\n }\n else {\n this._state.value = this.options.value;\n }\n\n this.trackLow = sliderTrackLow || this.trackLow;\n this.trackSelection = sliderTrackSelection || this.trackSelection;\n this.trackHigh = sliderTrackHigh || this.trackHigh;\n\n if (this.options.selection === 'none') {\n this._addClass(this.trackLow, 'hide');\n this._addClass(this.trackSelection, 'hide');\n this._addClass(this.trackHigh, 'hide');\n }\n\n this.handle1 = sliderMinHandle || this.handle1;\n this.handle2 = sliderMaxHandle || this.handle2;\n\n if (updateSlider === true) {\n // Reset classes\n this._removeClass(this.handle1, 'round triangle');\n this._removeClass(this.handle2, 'round triangle hide');\n\n for (i = 0; i < this.ticks.length; i++) {\n this._removeClass(this.ticks[i], 'round triangle hide');\n }\n }\n\n var availableHandleModifiers = ['round', 'triangle', 'custom'];\n var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1;\n if (isValidHandleType) {\n this._addClass(this.handle1, this.options.handle);\n this._addClass(this.handle2, this.options.handle);\n\n for (i = 0; i < this.ticks.length; i++) {\n this._addClass(this.ticks[i], this.options.handle);\n }\n }\n\n this._state.offset = this._offset(this.sliderElem);\n this._state.size = this.sliderElem[this.sizePos];\n this.setValue(this._state.value);\n\n /******************************************\n\n Bind Event Listeners\n\n ******************************************/\n\n // Bind keyboard handlers\n this.handle1Keydown = this._keydown.bind(this, 0);\n this.handle1.addEventListener(\"keydown\", this.handle1Keydown, false);\n\n this.handle2Keydown = this._keydown.bind(this, 1);\n this.handle2.addEventListener(\"keydown\", this.handle2Keydown, false);\n\n this.mousedown = this._mousedown.bind(this);\n if (this.touchCapable) {\n // Bind touch handlers\n this.sliderElem.addEventListener(\"touchstart\", this.mousedown, false);\n }\n this.sliderElem.addEventListener(\"mousedown\", this.mousedown, false);\n\n\n // Bind tooltip-related handlers\n if(this.options.tooltip === 'hide') {\n this._addClass(this.tooltip, 'hide');\n this._addClass(this.tooltip_min, 'hide');\n this._addClass(this.tooltip_max, 'hide');\n }\n else if(this.options.tooltip === 'always') {\n this._showTooltip();\n this._alwaysShowTooltip = true;\n }\n else {\n this.showTooltip = this._showTooltip.bind(this);\n this.hideTooltip = this._hideTooltip.bind(this);\n\n this.sliderElem.addEventListener(\"mouseenter\", this.showTooltip, false);\n this.sliderElem.addEventListener(\"mouseleave\", this.hideTooltip, false);\n\n this.handle1.addEventListener(\"focus\", this.showTooltip, false);\n this.handle1.addEventListener(\"blur\", this.hideTooltip, false);\n\n this.handle2.addEventListener(\"focus\", this.showTooltip, false);\n this.handle2.addEventListener(\"blur\", this.hideTooltip, false);\n }\n\n if(this.options.enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n\n\n /*************************************************\n\n INSTANCE PROPERTIES/METHODS\n\n - Any methods bound to the prototype are considered\n part of the plugin's `public` interface\n\n **************************************************/\n Slider.prototype = {\n _init: function() {}, // NOTE: Must exist to support bridget\n\n constructor: Slider,\n\n defaultOptions: {\n id: \"\",\n min: 0,\n max: 10,\n step: 1,\n precision: 0,\n orientation: 'horizontal',\n value: 5,\n range: false,\n selection: 'before',\n tooltip: 'show',\n tooltip_split: false,\n handle: 'round',\n reversed: false,\n enabled: true,\n formatter: function(val) {\n if (Array.isArray(val)) {\n return val[0] + \" : \" + val[1];\n } else {\n return val;\n }\n },\n natural_arrow_keys: false,\n ticks: [],\n ticks_positions: [],\n ticks_labels: [],\n ticks_snap_bounds: 0,\n scale: 'linear',\n focus: false,\n tooltip_position: null\n },\n\n getElement: function() {\n return this.sliderElem;\n },\n\n getValue: function() {\n if (this.options.range) {\n return this._state.value;\n }\n else {\n return this._state.value[0];\n }\n },\n\n setValue: function(val, triggerSlideEvent, triggerChangeEvent) {\n if (!val) {\n val = 0;\n }\n var oldValue = this.getValue();\n this._state.value = this._validateInputValue(val);\n var applyPrecision = this._applyPrecision.bind(this);\n\n if (this.options.range) {\n this._state.value[0] = applyPrecision(this._state.value[0]);\n this._state.value[1] = applyPrecision(this._state.value[1]);\n\n this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0]));\n this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1]));\n }\n else {\n this._state.value = applyPrecision(this._state.value);\n this._state.value = [ Math.max(this.options.min, Math.min(this.options.max, this._state.value))];\n this._addClass(this.handle2, 'hide');\n if (this.options.selection === 'after') {\n this._state.value[1] = this.options.max;\n } else {\n this._state.value[1] = this.options.min;\n }\n }\n\n if (this.options.max > this.options.min) {\n this._state.percentage = [\n this._toPercentage(this._state.value[0]),\n this._toPercentage(this._state.value[1]),\n this.options.step * 100 / (this.options.max - this.options.min)\n ];\n } else {\n this._state.percentage = [0, 0, 100];\n }\n\n this._layout();\n var newValue = this.options.range ? this._state.value : this._state.value[0];\n\n if(triggerSlideEvent === true) {\n this._trigger('slide', newValue);\n }\n if( (oldValue !== newValue) && (triggerChangeEvent === true) ) {\n this._trigger('change', {\n oldValue: oldValue,\n newValue: newValue\n });\n }\n this._setDataVal(newValue);\n\n return this;\n },\n\n destroy: function(){\n // Remove event handlers on slider elements\n this._removeSliderEventHandlers();\n\n // Remove the slider from the DOM\n this.sliderElem.parentNode.removeChild(this.sliderElem);\n /* Show original element */\n this.element.style.display = \"\";\n\n // Clear out custom event bindings\n this._cleanUpEventCallbacksMap();\n\n // Remove data values\n this.element.removeAttribute(\"data\");\n\n // Remove JQuery handlers/data\n if($) {\n this._unbindJQueryEventHandlers();\n this.$element.removeData('slider');\n }\n },\n\n disable: function() {\n this._state.enabled = false;\n this.handle1.removeAttribute(\"tabindex\");\n this.handle2.removeAttribute(\"tabindex\");\n this._addClass(this.sliderElem, 'slider-disabled');\n this._trigger('slideDisabled');\n\n return this;\n },\n\n enable: function() {\n this._state.enabled = true;\n this.handle1.setAttribute(\"tabindex\", 0);\n this.handle2.setAttribute(\"tabindex\", 0);\n this._removeClass(this.sliderElem, 'slider-disabled');\n this._trigger('slideEnabled');\n\n return this;\n },\n\n toggle: function() {\n if(this._state.enabled) {\n this.disable();\n } else {\n this.enable();\n }\n return this;\n },\n\n isEnabled: function() {\n return this._state.enabled;\n },\n\n on: function(evt, callback) {\n this._bindNonQueryEventHandler(evt, callback);\n return this;\n },\n\n off: function(evt, callback) {\n if($) {\n this.$element.off(evt, callback);\n this.$sliderElem.off(evt, callback);\n } else {\n this._unbindNonQueryEventHandler(evt, callback);\n }\n },\n\n getAttribute: function(attribute) {\n if(attribute) {\n return this.options[attribute];\n } else {\n return this.options;\n }\n },\n\n setAttribute: function(attribute, value) {\n this.options[attribute] = value;\n return this;\n },\n\n refresh: function() {\n this._removeSliderEventHandlers();\n createNewSlider.call(this, this.element, this.options);\n if($) {\n // Bind new instance of slider to the element\n $.data(this.element, 'slider', this);\n }\n return this;\n },\n\n relayout: function() {\n this._layout();\n return this;\n },\n\n /******************************+\n\n HELPERS\n\n - Any method that is not part of the public interface.\n - Place it underneath this comment block and write its signature like so:\n\n _fnName : function() {...}\n\n ********************************/\n _removeSliderEventHandlers: function() {\n // Remove keydown event listeners\n this.handle1.removeEventListener(\"keydown\", this.handle1Keydown, false);\n this.handle2.removeEventListener(\"keydown\", this.handle2Keydown, false);\n\n if (this.showTooltip) {\n this.handle1.removeEventListener(\"focus\", this.showTooltip, false);\n this.handle2.removeEventListener(\"focus\", this.showTooltip, false);\n }\n if (this.hideTooltip) {\n this.handle1.removeEventListener(\"blur\", this.hideTooltip, false);\n this.handle2.removeEventListener(\"blur\", this.hideTooltip, false);\n }\n\n // Remove event listeners from sliderElem\n if (this.showTooltip) {\n this.sliderElem.removeEventListener(\"mouseenter\", this.showTooltip, false);\n }\n if (this.hideTooltip) {\n this.sliderElem.removeEventListener(\"mouseleave\", this.hideTooltip, false);\n }\n this.sliderElem.removeEventListener(\"touchstart\", this.mousedown, false);\n this.sliderElem.removeEventListener(\"mousedown\", this.mousedown, false);\n },\n _bindNonQueryEventHandler: function(evt, callback) {\n if(this.eventToCallbackMap[evt] === undefined) {\n this.eventToCallbackMap[evt] = [];\n }\n this.eventToCallbackMap[evt].push(callback);\n },\n _unbindNonQueryEventHandler: function(evt, callback) {\n var callbacks = this.eventToCallbackMap[evt];\n if(callbacks !== undefined) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n },\n _cleanUpEventCallbacksMap: function() {\n var eventNames = Object.keys(this.eventToCallbackMap);\n for(var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n this.eventToCallbackMap[eventName] = null;\n }\n },\n _showTooltip: function() {\n if (this.options.tooltip_split === false ){\n this._addClass(this.tooltip, 'in');\n this.tooltip_min.style.display = 'none';\n this.tooltip_max.style.display = 'none';\n } else {\n this._addClass(this.tooltip_min, 'in');\n this._addClass(this.tooltip_max, 'in');\n this.tooltip.style.display = 'none';\n }\n this._state.over = true;\n },\n _hideTooltip: function() {\n if (this._state.inDrag === false && this.alwaysShowTooltip !== true) {\n this._removeClass(this.tooltip, 'in');\n this._removeClass(this.tooltip_min, 'in');\n this._removeClass(this.tooltip_max, 'in');\n }\n this._state.over = false;\n },\n _layout: function() {\n var positionPercentages;\n\n if(this.options.reversed) {\n positionPercentages = [ 100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]];\n }\n else {\n positionPercentages = [ this._state.percentage[0], this._state.percentage[1] ];\n }\n\n this.handle1.style[this.stylePos] = positionPercentages[0]+'%';\n this.handle2.style[this.stylePos] = positionPercentages[1]+'%';\n\n /* Position ticks and labels */\n if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\n\n var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width';\n var styleMargin = this.options.orientation === 'vertical' ? 'marginTop' : 'marginLeft';\n var labelSize = this._state.size / (this.options.ticks.length - 1);\n\n if (this.tickLabelContainer) {\n var extraMargin = 0;\n if (this.options.ticks_positions.length === 0) {\n if (this.options.orientation !== 'vertical') {\n this.tickLabelContainer.style[styleMargin] = -labelSize/2 + 'px';\n }\n\n extraMargin = this.tickLabelContainer.offsetHeight;\n } else {\n /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */\n for (i = 0 ; i < this.tickLabelContainer.childNodes.length; i++) {\n if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) {\n extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight;\n }\n }\n }\n if (this.options.orientation === 'horizontal') {\n this.sliderElem.style.marginBottom = extraMargin + 'px';\n }\n }\n for (var i = 0; i < this.options.ticks.length; i++) {\n\n var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]);\n\n if (this.options.reversed) {\n percentage = 100 - percentage;\n }\n\n this.ticks[i].style[this.stylePos] = percentage + '%';\n\n /* Set class labels to denote whether ticks are in the selection */\n this._removeClass(this.ticks[i], 'in-selection');\n if (!this.options.range) {\n if (this.options.selection === 'after' && percentage >= positionPercentages[0]){\n this._addClass(this.ticks[i], 'in-selection');\n } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) {\n this._addClass(this.ticks[i], 'in-selection');\n }\n } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) {\n this._addClass(this.ticks[i], 'in-selection');\n }\n\n if (this.tickLabels[i]) {\n this.tickLabels[i].style[styleSize] = labelSize + 'px';\n\n if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) {\n this.tickLabels[i].style.position = 'absolute';\n this.tickLabels[i].style[this.stylePos] = percentage + '%';\n this.tickLabels[i].style[styleMargin] = -labelSize/2 + 'px';\n } else if (this.options.orientation === 'vertical') {\n this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + 'px';\n this.tickLabelContainer.style['marginTop'] = this.sliderElem.offsetWidth / 2 * -1 + 'px';\n }\n }\n }\n }\n\n var formattedTooltipVal;\n\n if (this.options.range) {\n formattedTooltipVal = this.options.formatter(this._state.value);\n this._setText(this.tooltipInner, formattedTooltipVal);\n this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0])/2 + '%';\n\n if (this.options.orientation === 'vertical') {\n this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px');\n } else {\n this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px');\n }\n\n if (this.options.orientation === 'vertical') {\n this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px');\n } else {\n this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px');\n }\n\n var innerTooltipMinText = this.options.formatter(this._state.value[0]);\n this._setText(this.tooltipInner_min, innerTooltipMinText);\n\n var innerTooltipMaxText = this.options.formatter(this._state.value[1]);\n this._setText(this.tooltipInner_max, innerTooltipMaxText);\n\n this.tooltip_min.style[this.stylePos] = positionPercentages[0] + '%';\n\n if (this.options.orientation === 'vertical') {\n this._css(this.tooltip_min, 'margin-top', -this.tooltip_min.offsetHeight / 2 + 'px');\n } else {\n this._css(this.tooltip_min, 'margin-left', -this.tooltip_min.offsetWidth / 2 + 'px');\n }\n\n this.tooltip_max.style[this.stylePos] = positionPercentages[1] + '%';\n\n if (this.options.orientation === 'vertical') {\n this._css(this.tooltip_max, 'margin-top', -this.tooltip_max.offsetHeight / 2 + 'px');\n } else {\n this._css(this.tooltip_max, 'margin-left', -this.tooltip_max.offsetWidth / 2 + 'px');\n }\n } else {\n formattedTooltipVal = this.options.formatter(this._state.value[0]);\n this._setText(this.tooltipInner, formattedTooltipVal);\n\n this.tooltip.style[this.stylePos] = positionPercentages[0] + '%';\n if (this.options.orientation === 'vertical') {\n this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px');\n } else {\n this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px');\n }\n }\n\n if (this.options.orientation === 'vertical') {\n this.trackLow.style.top = '0';\n this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) +'%';\n\n this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) +'%';\n this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%';\n\n this.trackHigh.style.bottom = '0';\n this.trackHigh.style.height = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%';\n }\n else {\n this.trackLow.style.left = '0';\n this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) +'%';\n\n this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) +'%';\n this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%';\n\n this.trackHigh.style.right = '0';\n this.trackHigh.style.width = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%';\n\n var offset_min = this.tooltip_min.getBoundingClientRect();\n var offset_max = this.tooltip_max.getBoundingClientRect();\n\n if (offset_min.right > offset_max.left) {\n this._removeClass(this.tooltip_max, 'top');\n this._addClass(this.tooltip_max, 'bottom');\n this.tooltip_max.style.top = 18 + 'px';\n } else {\n this._removeClass(this.tooltip_max, 'bottom');\n this._addClass(this.tooltip_max, 'top');\n this.tooltip_max.style.top = this.tooltip_min.style.top;\n }\n }\n },\n _removeProperty: function(element, prop) {\n if (element.style.removeProperty) {\n element.style.removeProperty(prop);\n } else {\n element.style.removeAttribute(prop);\n }\n },\n _mousedown: function(ev) {\n if(!this._state.enabled) {\n return false;\n }\n\n this._state.offset = this._offset(this.sliderElem);\n this._state.size = this.sliderElem[this.sizePos];\n\n var percentage = this._getPercentage(ev);\n\n if (this.options.range) {\n var diff1 = Math.abs(this._state.percentage[0] - percentage);\n var diff2 = Math.abs(this._state.percentage[1] - percentage);\n this._state.dragged = (diff1 < diff2) ? 0 : 1;\n } else {\n this._state.dragged = 0;\n }\n\n this._state.percentage[this._state.dragged] = percentage;\n this._layout();\n\n if (this.touchCapable) {\n document.removeEventListener(\"touchmove\", this.mousemove, false);\n document.removeEventListener(\"touchend\", this.mouseup, false);\n }\n\n if(this.mousemove){\n document.removeEventListener(\"mousemove\", this.mousemove, false);\n }\n if(this.mouseup){\n document.removeEventListener(\"mouseup\", this.mouseup, false);\n }\n\n this.mousemove = this._mousemove.bind(this);\n this.mouseup = this._mouseup.bind(this);\n\n if (this.touchCapable) {\n // Touch: Bind touch events:\n document.addEventListener(\"touchmove\", this.mousemove, false);\n document.addEventListener(\"touchend\", this.mouseup, false);\n }\n // Bind mouse events:\n document.addEventListener(\"mousemove\", this.mousemove, false);\n document.addEventListener(\"mouseup\", this.mouseup, false);\n\n this._state.inDrag = true;\n var newValue = this._calculateValue();\n\n this._trigger('slideStart', newValue);\n\n this._setDataVal(newValue);\n this.setValue(newValue, false, true);\n\n this._pauseEvent(ev);\n\n if (this.options.focus) {\n this._triggerFocusOnHandle(this._state.dragged);\n }\n\n return true;\n },\n _triggerFocusOnHandle: function(handleIdx) {\n if(handleIdx === 0) {\n this.handle1.focus();\n }\n if(handleIdx === 1) {\n this.handle2.focus();\n }\n },\n _keydown: function(handleIdx, ev) {\n if(!this._state.enabled) {\n return false;\n }\n\n var dir;\n switch (ev.keyCode) {\n case 37: // left\n case 40: // down\n dir = -1;\n break;\n case 39: // right\n case 38: // up\n dir = 1;\n break;\n }\n if (!dir) {\n return;\n }\n\n // use natural arrow keys instead of from min to max\n if (this.options.natural_arrow_keys) {\n var ifVerticalAndNotReversed = (this.options.orientation === 'vertical' && !this.options.reversed);\n var ifHorizontalAndReversed = (this.options.orientation === 'horizontal' && this.options.reversed);\n\n if (ifVerticalAndNotReversed || ifHorizontalAndReversed) {\n dir = -dir;\n }\n }\n\n var val = this._state.value[handleIdx] + dir * this.options.step;\n if (this.options.range) {\n val = [ (!handleIdx) ? val : this._state.value[0],\n ( handleIdx) ? val : this._state.value[1]];\n }\n\n this._trigger('slideStart', val);\n this._setDataVal(val);\n this.setValue(val, true, true);\n\n this._setDataVal(val);\n this._trigger('slideStop', val);\n this._layout();\n\n this._pauseEvent(ev);\n\n return false;\n },\n _pauseEvent: function(ev) {\n if(ev.stopPropagation) {\n ev.stopPropagation();\n }\n if(ev.preventDefault) {\n ev.preventDefault();\n }\n ev.cancelBubble=true;\n ev.returnValue=false;\n },\n _mousemove: function(ev) {\n if(!this._state.enabled) {\n return false;\n }\n\n var percentage = this._getPercentage(ev);\n this._adjustPercentageForRangeSliders(percentage);\n this._state.percentage[this._state.dragged] = percentage;\n this._layout();\n\n var val = this._calculateValue(true);\n this.setValue(val, true, true);\n\n return false;\n },\n _adjustPercentageForRangeSliders: function(percentage) {\n if (this.options.range) {\n var precision = this._getNumDigitsAfterDecimalPlace(percentage);\n precision = precision ? precision - 1 : 0;\n var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision);\n if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) {\n this._state.percentage[0] = this._state.percentage[1];\n this._state.dragged = 1;\n } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) {\n this._state.percentage[1] = this._state.percentage[0];\n this._state.dragged = 0;\n }\n }\n },\n _mouseup: function() {\n if(!this._state.enabled) {\n return false;\n }\n if (this.touchCapable) {\n // Touch: Unbind touch event handlers:\n document.removeEventListener(\"touchmove\", this.mousemove, false);\n document.removeEventListener(\"touchend\", this.mouseup, false);\n }\n // Unbind mouse event handlers:\n document.removeEventListener(\"mousemove\", this.mousemove, false);\n document.removeEventListener(\"mouseup\", this.mouseup, false);\n\n this._state.inDrag = false;\n if (this._state.over === false) {\n this._hideTooltip();\n }\n var val = this._calculateValue(true);\n\n this._layout();\n this._setDataVal(val);\n this._trigger('slideStop', val);\n\n return false;\n },\n _calculateValue: function(snapToClosestTick) {\n var val;\n if (this.options.range) {\n val = [this.options.min,this.options.max];\n if (this._state.percentage[0] !== 0){\n val[0] = this._toValue(this._state.percentage[0]);\n val[0] = this._applyPrecision(val[0]);\n }\n if (this._state.percentage[1] !== 100){\n val[1] = this._toValue(this._state.percentage[1]);\n val[1] = this._applyPrecision(val[1]);\n }\n } else {\n val = this._toValue(this._state.percentage[0]);\n val = parseFloat(val);\n val = this._applyPrecision(val);\n }\n\n if (snapToClosestTick) {\n var min = [val, Infinity];\n for (var i = 0; i < this.options.ticks.length; i++) {\n var diff = Math.abs(this.options.ticks[i] - val);\n if (diff <= min[1]) {\n min = [this.options.ticks[i], diff];\n }\n }\n if (min[1] <= this.options.ticks_snap_bounds) {\n return min[0];\n }\n }\n\n return val;\n },\n _applyPrecision: function(val) {\n var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step);\n return this._applyToFixedAndParseFloat(val, precision);\n },\n _getNumDigitsAfterDecimalPlace: function(num) {\n var match = (''+num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) { return 0; }\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\n },\n _applyToFixedAndParseFloat: function(num, toFixedInput) {\n var truncatedNum = num.toFixed(toFixedInput);\n return parseFloat(truncatedNum);\n },\n /*\n Credits to Mike Samuel for the following method!\n Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number\n */\n _getPercentage: function(ev) {\n if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove')) {\n ev = ev.touches[0];\n }\n\n var eventPosition = ev[this.mousePos];\n var sliderOffset = this._state.offset[this.stylePos];\n var distanceToSlide = eventPosition - sliderOffset;\n // Calculate what percent of the length the slider handle has slid\n var percentage = (distanceToSlide / this._state.size) * 100;\n percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2];\n if (this.options.reversed) {\n percentage = 100 - percentage;\n }\n\n // Make sure the percent is within the bounds of the slider.\n // 0% corresponds to the 'min' value of the slide\n // 100% corresponds to the 'max' value of the slide\n return Math.max(0, Math.min(100, percentage));\n },\n _validateInputValue: function(val) {\n if (typeof val === 'number') {\n return val;\n } else if (Array.isArray(val)) {\n this._validateArray(val);\n return val;\n } else {\n throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(val) );\n }\n },\n _validateArray: function(val) {\n for(var i = 0; i < val.length; i++) {\n var input = val[i];\n if (typeof input !== 'number') { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(input) ); }\n }\n },\n _setDataVal: function(val) {\n this.element.setAttribute('data-value', val);\n this.element.setAttribute('value', val);\n this.element.value = val;\n },\n _trigger: function(evt, val) {\n val = (val || val === 0) ? val : undefined;\n\n var callbackFnArray = this.eventToCallbackMap[evt];\n if(callbackFnArray && callbackFnArray.length) {\n for(var i = 0; i < callbackFnArray.length; i++) {\n var callbackFn = callbackFnArray[i];\n callbackFn(val);\n }\n }\n\n /* If JQuery exists, trigger JQuery events */\n if($) {\n this._triggerJQueryEvent(evt, val);\n }\n },\n _triggerJQueryEvent: function(evt, val) {\n var eventData = {\n type: evt,\n value: val\n };\n this.$element.trigger(eventData);\n this.$sliderElem.trigger(eventData);\n },\n _unbindJQueryEventHandlers: function() {\n this.$element.off();\n this.$sliderElem.off();\n },\n _setText: function(element, text) {\n if(typeof element.innerText !== \"undefined\") {\n element.innerText = text;\n } else if(typeof element.textContent !== \"undefined\") {\n element.textContent = text;\n }\n },\n _removeClass: function(element, classString) {\n var classes = classString.split(\" \");\n var newClasses = element.className;\n\n for(var i = 0; i < classes.length; i++) {\n var classTag = classes[i];\n var regex = new RegExp(\"(?:\\\\s|^)\" + classTag + \"(?:\\\\s|$)\");\n newClasses = newClasses.replace(regex, \" \");\n }\n\n element.className = newClasses.trim();\n },\n _addClass: function(element, classString) {\n var classes = classString.split(\" \");\n var newClasses = element.className;\n\n for(var i = 0; i < classes.length; i++) {\n var classTag = classes[i];\n var regex = new RegExp(\"(?:\\\\s|^)\" + classTag + \"(?:\\\\s|$)\");\n var ifClassExists = regex.test(newClasses);\n\n if(!ifClassExists) {\n newClasses += \" \" + classTag;\n }\n }\n\n element.className = newClasses.trim();\n },\n _offsetLeft: function(obj){\n return obj.getBoundingClientRect().left;\n },\n _offsetTop: function(obj){\n var offsetTop = obj.offsetTop;\n while((obj = obj.offsetParent) && !isNaN(obj.offsetTop)){\n offsetTop += obj.offsetTop;\n }\n return offsetTop;\n },\n _offset: function (obj) {\n return {\n left: this._offsetLeft(obj),\n top: this._offsetTop(obj)\n };\n },\n _css: function(elementRef, styleName, value) {\n if ($) {\n $.style(elementRef, styleName, value);\n } else {\n var style = styleName.replace(/^-ms-/, \"ms-\").replace(/-([\\da-z])/gi, function (all, letter) {\n return letter.toUpperCase();\n });\n elementRef.style[style] = value;\n }\n },\n _toValue: function(percentage) {\n return this.options.scale.toValue.apply(this, [percentage]);\n },\n _toPercentage: function(value) {\n return this.options.scale.toPercentage.apply(this, [value]);\n },\n _setTooltipPosition: function(){\n var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max];\n if (this.options.orientation === 'vertical'){\n var tooltipPos = this.options.tooltip_position || 'right';\n var oppositeSide = (tooltipPos === 'left') ? 'right' : 'left';\n tooltips.forEach(function(tooltip){\n this._addClass(tooltip, tooltipPos);\n tooltip.style[oppositeSide] = '100%';\n }.bind(this));\n } else if(this.options.tooltip_position === 'bottom') {\n tooltips.forEach(function(tooltip){\n this._addClass(tooltip, 'bottom');\n tooltip.style.top = 22 + 'px';\n }.bind(this));\n } else {\n tooltips.forEach(function(tooltip){\n this._addClass(tooltip, 'top');\n tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px';\n }.bind(this));\n }\n }\n };\n\n /*********************************\n\n Attach to global namespace\n\n *********************************/\n if($) {\n var namespace = $.fn.slider ? 'bootstrapSlider' : 'slider';\n $.bridget(namespace, Slider);\n }\n\n })( $ );\n\n return Slider;\n}));","/*jsl:ignoreall*/\n/*!\n * Amplify Core 1.0.0\n * \n * Copyright 2011 appendTo LLC. (http://appendto.com/team)\n * Dual licensed under the MIT or GPL licenses.\n * http://appendto.com/open-source-licenses\n * \n * http://amplifyjs.com\n */\n(function( global, undefined ) {\n\nvar slice = [].slice,\n\tsubscriptions = {};\n\nvar amplify = global.amplify = {\n\tpublish: function( topic ) {\n\t\tvar args = slice.call( arguments, 1 ),\n\t\t\tsubscription,\n\t\t\tlength,\n\t\t\ti = 0,\n\t\t\tret;\n\n\t\tif ( !subscriptions[ topic ] ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tfor ( length = subscriptions[ topic ].length; i < length; i++ ) {\n\t\t\tsubscription = subscriptions[ topic ][ i ];\n\t\t\tret = subscription.callback.apply( subscription.context, args );\n\t\t\tif ( ret === false ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn ret !== false;\n\t},\n\n\tsubscribe: function( topic, context, callback, priority ) {\n\t\tif ( arguments.length === 3 && typeof callback === \"number\" ) {\n\t\t\tpriority = callback;\n\t\t\tcallback = context;\n\t\t\tcontext = null;\n\t\t}\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = context;\n\t\t\tcontext = null;\n\t\t}\n\t\tpriority = priority || 10;\n\n\t\tvar topicIndex = 0,\n\t\t\ttopics = topic.split( /\\s/ ),\n\t\t\ttopicLength = topics.length;\n\t\tfor ( ; topicIndex < topicLength; topicIndex++ ) {\n\t\t\ttopic = topics[ topicIndex ];\n\t\t\tif ( !subscriptions[ topic ] ) {\n\t\t\t\tsubscriptions[ topic ] = [];\n\t\t\t}\n\t\n\t\t\tvar i = subscriptions[ topic ].length - 1,\n\t\t\t\tsubscriptionInfo = {\n\t\t\t\t\tcallback: callback,\n\t\t\t\t\tcontext: context,\n\t\t\t\t\tpriority: priority\n\t\t\t\t};\n\t\n\t\t\tfor ( ; i >= 0; i-- ) {\n\t\t\t\tif ( subscriptions[ topic ][ i ].priority <= priority ) {\n\t\t\t\t\tsubscriptions[ topic ].splice( i + 1, 0, subscriptionInfo );\n\t\t\t\t\treturn callback;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tsubscriptions[ topic ].unshift( subscriptionInfo );\n\t\t}\n\n\t\treturn callback;\n\t},\n\n\tunsubscribe: function( topic, callback ) {\n\t\tif ( !subscriptions[ topic ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar length = subscriptions[ topic ].length,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tif ( subscriptions[ topic ][ i ].callback === callback ) {\n\t\t\t\tsubscriptions[ topic ].splice( i, 1 );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\n}( this ) );\n\n\n/*!\n * Amplify Store - Persistent Client-Side Storage 1.0.0\n * \n * Copyright 2011 appendTo LLC. (http://appendto.com/team)\n * Dual licensed under the MIT or GPL licenses.\n * http://appendto.com/open-source-licenses\n * \n * http://amplifyjs.com\n */\n(function( amplify, undefined ) {\n\nvar store = amplify.store = function( key, value, options, type ) {\n\tvar type = store.type;\n\tif ( options && options.type && options.type in store.types ) {\n\t\ttype = options.type;\n\t}\n\treturn store.types[ type ]( key, value, options || {} );\n};\n\nstore.types = {};\nstore.type = null;\nstore.addType = function( type, storage ) {\n\tif ( !store.type ) {\n\t\tstore.type = type;\n\t}\n\n\tstore.types[ type ] = storage;\n\tstore[ type ] = function( key, value, options ) {\n\t\toptions = options || {};\n\t\toptions.type = type;\n\t\treturn store( key, value, options );\n\t};\n}\nstore.error = function() {\n\treturn \"amplify.store quota exceeded\"; \n};\n\nvar rprefix = /^__amplify__/;\nfunction createFromStorageInterface( storageType, storage ) {\n\tstore.addType( storageType, function( key, value, options ) {\n\t\tvar storedValue, parsed, i, remove,\n\t\t\tret = value,\n\t\t\tnow = (new Date()).getTime();\n\n\t\tif ( !key ) {\n\t\t\tret = {};\n\t\t\tremove = [];\n\t\t\ti = 0;\n\t\t\ttry {\n\t\t\t\t// accessing the length property works around a localStorage bug\n\t\t\t\t// in Firefox 4.0 where the keys don't update cross-page\n\t\t\t\t// we assign to key just to avoid Closure Compiler from removing\n\t\t\t\t// the access as \"useless code\"\n\t\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=662511\n\t\t\t\tkey = storage.length;\n\n\t\t\t\twhile ( key = storage.key( i++ ) ) {\n\t\t\t\t\tif ( rprefix.test( key ) ) {\n\t\t\t\t\t\tparsed = JSON.parse( storage.getItem( key ) );\n\t\t\t\t\t\tif ( parsed.expires && parsed.expires <= now ) {\n\t\t\t\t\t\t\tremove.push( key );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret[ key.replace( rprefix, \"\" ) ] = parsed.data;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile ( key = remove.pop() ) {\n\t\t\t\t\tstorage.removeItem( key );\n\t\t\t\t}\n\t\t\t} catch ( error ) {}\n\t\t\treturn ret;\n\t\t}\n\n\t\t// protect against name collisions with direct storage\n\t\tkey = \"__amplify__\" + key;\n\n\t\tif ( value === undefined ) {\n\t\t\tstoredValue = storage.getItem( key );\n\t\t\tparsed = storedValue ? JSON.parse( storedValue ) : { expires: -1 };\n\t\t\tif ( parsed.expires && parsed.expires <= now ) {\n\t\t\t\tstorage.removeItem( key );\n\t\t\t} else {\n\t\t\t\treturn parsed.data;\n\t\t\t}\n\t\t} else {\n\t\t\tif ( value === null ) {\n\t\t\t\tstorage.removeItem( key );\n\t\t\t} else {\n\t\t\t\tparsed = JSON.stringify({\n\t\t\t\t\tdata: value,\n\t\t\t\t\texpires: options.expires ? now + options.expires : null\n\t\t\t\t});\n\t\t\t\ttry {\n\t\t\t\t\tstorage.setItem( key, parsed );\n\t\t\t\t// quota exceeded\n\t\t\t\t} catch( error ) {\n\t\t\t\t\t// expire old data and try again\n\t\t\t\t\tstore[ storageType ]();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstorage.setItem( key, parsed );\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\tthrow store.error();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t});\n}\n\n// localStorage + sessionStorage\n// IE 8+, Firefox 3.5+, Safari 4+, Chrome 4+, Opera 10.5+, iPhone 2+, Android 2+\nfor ( var webStorageType in { localStorage: 1, sessionStorage: 1 } ) {\n\t// try/catch for file protocol in Firefox\n\ttry {\n\t\tif ( window[ webStorageType ].getItem ) {\n\t\t\tcreateFromStorageInterface( webStorageType, window[ webStorageType ] );\n\t\t}\n\t} catch( e ) {}\n}\n\n// globalStorage\n// non-standard: Firefox 2+\n// https://developer.mozilla.org/en/dom/storage#globalStorage\nif ( window.globalStorage ) {\n\t// try/catch for file protocol in Firefox\n\ttry {\n\t\tcreateFromStorageInterface( \"globalStorage\",\n\t\t\twindow.globalStorage[ window.location.hostname ] );\n\t\t// Firefox 2.0 and 3.0 have sessionStorage and globalStorage\n\t\t// make sure we default to globalStorage\n\t\t// but don't default to globalStorage in 3.5+ which also has localStorage\n\t\tif ( store.type === \"sessionStorage\" ) {\n\t\t\tstore.type = \"globalStorage\";\n\t\t}\n\t} catch( e ) {}\n}\n\n// userData\n// non-standard: IE 5+\n// http://msdn.microsoft.com/en-us/library/ms531424(v=vs.85).aspx\n(function() {\n\t// IE 9 has quirks in userData that are a huge pain\n\t// rather than finding a way to detect these quirks\n\t// we just don't register userData if we have localStorage\n\tif ( store.types.localStorage ) {\n\t\treturn;\n\t}\n\n\t// append to html instead of body so we can do this from the head\n\tvar div = document.createElement( \"div\" ),\n\t\tattrKey = \"amplify\";\n\tdiv.style.display = \"none\";\n\tdocument.getElementsByTagName( \"head\" )[ 0 ].appendChild( div );\n\tif ( div.addBehavior ) {\n\t\tdiv.addBehavior( \"#default#userdata\" );\n\n\t\tstore.addType( \"userData\", function( key, value, options ) {\n\t\t\tdiv.load( attrKey );\n\t\t\tvar attr, parsed, prevValue, i, remove,\n\t\t\t\tret = value,\n\t\t\t\tnow = (new Date()).getTime();\n\n\t\t\tif ( !key ) {\n\t\t\t\tret = {};\n\t\t\t\tremove = [];\n\t\t\t\ti = 0;\n\t\t\t\twhile ( attr = div.XMLDocument.documentElement.attributes[ i++ ] ) {\n\t\t\t\t\tparsed = JSON.parse( attr.value );\n\t\t\t\t\tif ( parsed.expires && parsed.expires <= now ) {\n\t\t\t\t\t\tremove.push( attr.name );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret[ attr.name ] = parsed.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile ( key = remove.pop() ) {\n\t\t\t\t\tdiv.removeAttribute( key );\n\t\t\t\t}\n\t\t\t\tdiv.save( attrKey );\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// convert invalid characters to dashes\n\t\t\t// http://www.w3.org/TR/REC-xml/#NT-Name\n\t\t\t// simplified to assume the starting character is valid\n\t\t\t// also removed colon as it is invalid in HTML attribute names\n\t\t\tkey = key.replace( /[^\\-._0-9A-Za-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c-\\u200d\\u203f\\u2040\\u2070-\\u218f]/g, \"-\");\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tattr = div.getAttribute( key );\n\t\t\t\tparsed = attr ? JSON.parse( attr ) : { expires: -1 };\n\t\t\t\tif ( parsed.expires && parsed.expires <= now ) {\n\t\t\t\t\tdiv.removeAttribute( key );\n\t\t\t\t} else {\n\t\t\t\t\treturn parsed.data;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( value === null ) {\n\t\t\t\t\tdiv.removeAttribute( key );\n\t\t\t\t} else {\n\t\t\t\t\t// we need to get the previous value in case we need to rollback\n\t\t\t\t\tprevValue = div.getAttribute( key );\n\t\t\t\t\tparsed = JSON.stringify({\n\t\t\t\t\t\tdata: value,\n\t\t\t\t\t\texpires: (options.expires ? (now + options.expires) : null)\n\t\t\t\t\t});\n\t\t\t\t\tdiv.setAttribute( key, parsed );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tdiv.save( attrKey );\n\t\t\t// quota exceeded\n\t\t\t} catch ( error ) {\n\t\t\t\t// roll the value back to the previous value\n\t\t\t\tif ( prevValue === null ) {\n\t\t\t\t\tdiv.removeAttribute( key );\n\t\t\t\t} else {\n\t\t\t\t\tdiv.setAttribute( key, prevValue );\n\t\t\t\t}\n\n\t\t\t\t// expire old data and try again\n\t\t\t\tstore.userData();\n\t\t\t\ttry {\n\t\t\t\t\tdiv.setAttribute( key, parsed );\n\t\t\t\t\tdiv.save( attrKey );\n\t\t\t\t} catch ( error ) {\n\t\t\t\t\t// roll the value back to the previous value\n\t\t\t\t\tif ( prevValue === null ) {\n\t\t\t\t\t\tdiv.removeAttribute( key );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdiv.setAttribute( key, prevValue );\n\t\t\t\t\t}\n\t\t\t\t\tthrow store.error();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ret;\n\t\t});\n\t}\n}() );\n\n// in-memory storage\n// fallback for all browsers to enable the API even if we can't persist data\n(function() {\n\tvar memory = {};\n\n\tfunction copy( obj ) {\n\t\treturn obj === undefined ? undefined : JSON.parse( JSON.stringify( obj ) );\n\t}\n\n\tstore.addType( \"memory\", function( key, value, options ) {\n\t\tif ( !key ) {\n\t\t\treturn copy( memory );\n\t\t}\n\n\t\tif ( value === undefined ) {\n\t\t\treturn copy( memory[ key ] );\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\tdelete memory[ key ];\n\t\t\treturn null;\n\t\t}\n\n\t\tmemory[ key ] = value;\n\t\tif ( options.expires ) {\n\t\t\tsetTimeout(function() {\n\t\t\t\tdelete memory[ key ];\n\t\t\t}, options.expires );\n\t\t}\n\n\t\treturn value;\n\t});\n}() );\n\n}( this.amplify = this.amplify || {} ) );\n","//! moment.js\n//! version : 2.10.6\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n!function (a, b) { \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = b() : \"function\" == typeof define && define.amd ? define(b) : a.moment = b() }(this, function () {\n \"use strict\"; function a() { return Hc.apply(null, arguments) } function b(a) { Hc = a } function c(a) { return \"[object Array]\" === Object.prototype.toString.call(a) } function d(a) { return a instanceof Date || \"[object Date]\" === Object.prototype.toString.call(a) } function e(a, b) { var c, d = []; for (c = 0; c < a.length; ++c) d.push(b(a[c], c)); return d } function f(a, b) { return Object.prototype.hasOwnProperty.call(a, b) } function g(a, b) { for (var c in b) f(b, c) && (a[c] = b[c]); return f(b, \"toString\") && (a.toString = b.toString), f(b, \"valueOf\") && (a.valueOf = b.valueOf), a } function h(a, b, c, d) { return Ca(a, b, c, d, !0).utc() } function i() { return { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1 } } function j(a) { return null == a._pf && (a._pf = i()), a._pf } function k(a) { if (null == a._isValid) { var b = j(a); a._isValid = !(isNaN(a._d.getTime()) || !(b.overflow < 0) || b.empty || b.invalidMonth || b.invalidWeekday || b.nullInput || b.invalidFormat || b.userInvalidated), a._strict && (a._isValid = a._isValid && 0 === b.charsLeftOver && 0 === b.unusedTokens.length && void 0 === b.bigHour) } return a._isValid } function l(a) { var b = h(NaN); return null != a ? g(j(b), a) : j(b).userInvalidated = !0, b } function m(a, b) { var c, d, e; if (\"undefined\" != typeof b._isAMomentObject && (a._isAMomentObject = b._isAMomentObject), \"undefined\" != typeof b._i && (a._i = b._i), \"undefined\" != typeof b._f && (a._f = b._f), \"undefined\" != typeof b._l && (a._l = b._l), \"undefined\" != typeof b._strict && (a._strict = b._strict), \"undefined\" != typeof b._tzm && (a._tzm = b._tzm), \"undefined\" != typeof b._isUTC && (a._isUTC = b._isUTC), \"undefined\" != typeof b._offset && (a._offset = b._offset), \"undefined\" != typeof b._pf && (a._pf = j(b)), \"undefined\" != typeof b._locale && (a._locale = b._locale), Jc.length > 0) for (c in Jc) d = Jc[c], e = b[d], \"undefined\" != typeof e && (a[d] = e); return a } function n(b) { m(this, b), this._d = new Date(null != b._d ? b._d.getTime() : NaN), Kc === !1 && (Kc = !0, a.updateOffset(this), Kc = !1) } function o(a) { return a instanceof n || null != a && null != a._isAMomentObject } function p(a) { return 0 > a ? Math.ceil(a) : Math.floor(a) } function q(a) { var b = +a, c = 0; return 0 !== b && isFinite(b) && (c = p(b)), c } function r(a, b, c) { var d, e = Math.min(a.length, b.length), f = Math.abs(a.length - b.length), g = 0; for (d = 0; e > d; d++) (c && a[d] !== b[d] || !c && q(a[d]) !== q(b[d])) && g++; return g + f } function s() { } function t(a) { return a ? a.toLowerCase().replace(\"_\", \"-\") : a } function u(a) { for (var b, c, d, e, f = 0; f < a.length;) { for (e = t(a[f]).split(\"-\"), b = e.length, c = t(a[f + 1]), c = c ? c.split(\"-\") : null; b > 0;) { if (d = v(e.slice(0, b).join(\"-\"))) return d; if (c && c.length >= b && r(e, c, !0) >= b - 1) break; b-- } f++ } return null } function v(a) { var b = null; if (!Lc[a] && \"undefined\" != typeof module && module && module.exports) try { b = Ic._abbr, require(\"./locale/\" + a), w(b) } catch (c) { } return Lc[a] } function w(a, b) { var c; return a && (c = \"undefined\" == typeof b ? y(a) : x(a, b), c && (Ic = c)), Ic._abbr } function x(a, b) { return null !== b ? (b.abbr = a, Lc[a] = Lc[a] || new s, Lc[a].set(b), w(a), Lc[a]) : (delete Lc[a], null) } function y(a) { var b; if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a) return Ic; if (!c(a)) { if (b = v(a)) return b; a = [a] } return u(a) } function z(a, b) { var c = a.toLowerCase(); Mc[c] = Mc[c + \"s\"] = Mc[b] = a } function A(a) { return \"string\" == typeof a ? Mc[a] || Mc[a.toLowerCase()] : void 0 } function B(a) { var b, c, d = {}; for (c in a) f(a, c) && (b = A(c), b && (d[b] = a[c])); return d } function C(b, c) { return function (d) { return null != d ? (E(this, b, d), a.updateOffset(this, c), this) : D(this, b) } } function D(a, b) { return a._d[\"get\" + (a._isUTC ? \"UTC\" : \"\") + b]() } function E(a, b, c) { return a._d[\"set\" + (a._isUTC ? \"UTC\" : \"\") + b](c) } function F(a, b) { var c; if (\"object\" == typeof a) for (c in a) this.set(c, a[c]); else if (a = A(a), \"function\" == typeof this[a]) return this[a](b); return this } function G(a, b, c) { var d = \"\" + Math.abs(a), e = b - d.length, f = a >= 0; return (f ? c ? \"+\" : \"\" : \"-\") + Math.pow(10, Math.max(0, e)).toString().substr(1) + d } function H(a, b, c, d) { var e = d; \"string\" == typeof d && (e = function () { return this[d]() }), a && (Qc[a] = e), b && (Qc[b[0]] = function () { return G(e.apply(this, arguments), b[1], b[2]) }), c && (Qc[c] = function () { return this.localeData().ordinal(e.apply(this, arguments), a) }) } function I(a) { return a.match(/\\[[\\s\\S]/) ? a.replace(/^\\[|\\]$/g, \"\") : a.replace(/\\\\/g, \"\") } function J(a) { var b, c, d = a.match(Nc); for (b = 0, c = d.length; c > b; b++) Qc[d[b]] ? d[b] = Qc[d[b]] : d[b] = I(d[b]); return function (e) { var f = \"\"; for (b = 0; c > b; b++) f += d[b] instanceof Function ? d[b].call(e, a) : d[b]; return f } } function K(a, b) { return a.isValid() ? (b = L(b, a.localeData()), Pc[b] = Pc[b] || J(b), Pc[b](a)) : a.localeData().invalidDate() } function L(a, b) { function c(a) { return b.longDateFormat(a) || a } var d = 5; for (Oc.lastIndex = 0; d >= 0 && Oc.test(a) ;) a = a.replace(Oc, c), Oc.lastIndex = 0, d -= 1; return a } function M(a) { return \"function\" == typeof a && \"[object Function]\" === Object.prototype.toString.call(a) } function N(a, b, c) { dd[a] = M(b) ? b : function (a) { return a && c ? c : b } } function O(a, b) { return f(dd, a) ? dd[a](b._strict, b._locale) : new RegExp(P(a)) } function P(a) { return a.replace(\"\\\\\", \"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (a, b, c, d, e) { return b || c || d || e }).replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\") } function Q(a, b) { var c, d = b; for (\"string\" == typeof a && (a = [a]), \"number\" == typeof b && (d = function (a, c) { c[b] = q(a) }), c = 0; c < a.length; c++) ed[a[c]] = d } function R(a, b) { Q(a, function (a, c, d, e) { d._w = d._w || {}, b(a, d._w, d, e) }) } function S(a, b, c) { null != b && f(ed, a) && ed[a](b, c._a, c, a) } function T(a, b) { return new Date(Date.UTC(a, b + 1, 0)).getUTCDate() } function U(a) { return this._months[a.month()] } function V(a) { return this._monthsShort[a.month()] } function W(a, b, c) { var d, e, f; for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), d = 0; 12 > d; d++) { if (e = h([2e3, d]), c && !this._longMonthsParse[d] && (this._longMonthsParse[d] = new RegExp(\"^\" + this.months(e, \"\").replace(\".\", \"\") + \"$\", \"i\"), this._shortMonthsParse[d] = new RegExp(\"^\" + this.monthsShort(e, \"\").replace(\".\", \"\") + \"$\", \"i\")), c || this._monthsParse[d] || (f = \"^\" + this.months(e, \"\") + \"|^\" + this.monthsShort(e, \"\"), this._monthsParse[d] = new RegExp(f.replace(\".\", \"\"), \"i\")), c && \"MMMM\" === b && this._longMonthsParse[d].test(a)) return d; if (c && \"MMM\" === b && this._shortMonthsParse[d].test(a)) return d; if (!c && this._monthsParse[d].test(a)) return d } } function X(a, b) { var c; return \"string\" == typeof b && (b = a.localeData().monthsParse(b), \"number\" != typeof b) ? a : (c = Math.min(a.date(), T(a.year(), b)), a._d[\"set\" + (a._isUTC ? \"UTC\" : \"\") + \"Month\"](b, c), a) } function Y(b) { return null != b ? (X(this, b), a.updateOffset(this, !0), this) : D(this, \"Month\") } function Z() { return T(this.year(), this.month()) } function $(a) { var b, c = a._a; return c && -2 === j(a).overflow && (b = c[gd] < 0 || c[gd] > 11 ? gd : c[hd] < 1 || c[hd] > T(c[fd], c[gd]) ? hd : c[id] < 0 || c[id] > 24 || 24 === c[id] && (0 !== c[jd] || 0 !== c[kd] || 0 !== c[ld]) ? id : c[jd] < 0 || c[jd] > 59 ? jd : c[kd] < 0 || c[kd] > 59 ? kd : c[ld] < 0 || c[ld] > 999 ? ld : -1, j(a)._overflowDayOfYear && (fd > b || b > hd) && (b = hd), j(a).overflow = b), a } function _(b) { a.suppressDeprecationWarnings === !1 && \"undefined\" != typeof console && console.warn && console.warn(\"Deprecation warning: \" + b) } function aa(a, b) { var c = !0; return g(function () { return c && (_(a + \"\\n\" + (new Error).stack), c = !1), b.apply(this, arguments) }, b) } function ba(a, b) { od[a] || (_(b), od[a] = !0) } function ca(a) { var b, c, d = a._i, e = pd.exec(d); if (e) { for (j(a).iso = !0, b = 0, c = qd.length; c > b; b++) if (qd[b][1].exec(d)) { a._f = qd[b][0]; break } for (b = 0, c = rd.length; c > b; b++) if (rd[b][1].exec(d)) { a._f += (e[6] || \" \") + rd[b][0]; break } d.match(ad) && (a._f += \"Z\"), va(a) } else a._isValid = !1 } function da(b) { var c = sd.exec(b._i); return null !== c ? void (b._d = new Date(+c[1])) : (ca(b), void (b._isValid === !1 && (delete b._isValid, a.createFromInputFallback(b)))) } function ea(a, b, c, d, e, f, g) { var h = new Date(a, b, c, d, e, f, g); return 1970 > a && h.setFullYear(a), h } function fa(a) { var b = new Date(Date.UTC.apply(null, arguments)); return 1970 > a && b.setUTCFullYear(a), b } function ga(a) { return ha(a) ? 366 : 365 } function ha(a) { return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } function ia() { return ha(this.year()) } function ja(a, b, c) { var d, e = c - b, f = c - a.day(); return f > e && (f -= 7), e - 7 > f && (f += 7), d = Da(a).add(f, \"d\"), { week: Math.ceil(d.dayOfYear() / 7), year: d.year() } } function ka(a) { return ja(a, this._week.dow, this._week.doy).week } function la() { return this._week.dow } function ma() { return this._week.doy } function na(a) { var b = this.localeData().week(this); return null == a ? b : this.add(7 * (a - b), \"d\") } function oa(a) { var b = ja(this, 1, 4).week; return null == a ? b : this.add(7 * (a - b), \"d\") } function pa(a, b, c, d, e) { var f, g = 6 + e - d, h = fa(a, 0, 1 + g), i = h.getUTCDay(); return e > i && (i += 7), c = null != c ? 1 * c : e, f = 1 + g + 7 * (b - 1) - i + c, { year: f > 0 ? a : a - 1, dayOfYear: f > 0 ? f : ga(a - 1) + f } } function qa(a) { var b = Math.round((this.clone().startOf(\"day\") - this.clone().startOf(\"year\")) / 864e5) + 1; return null == a ? b : this.add(a - b, \"d\") } function ra(a, b, c) { return null != a ? a : null != b ? b : c } function sa(a) { var b = new Date; return a._useUTC ? [b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate()] : [b.getFullYear(), b.getMonth(), b.getDate()] } function ta(a) { var b, c, d, e, f = []; if (!a._d) { for (d = sa(a), a._w && null == a._a[hd] && null == a._a[gd] && ua(a), a._dayOfYear && (e = ra(a._a[fd], d[fd]), a._dayOfYear > ga(e) && (j(a)._overflowDayOfYear = !0), c = fa(e, 0, a._dayOfYear), a._a[gd] = c.getUTCMonth(), a._a[hd] = c.getUTCDate()), b = 0; 3 > b && null == a._a[b]; ++b) a._a[b] = f[b] = d[b]; for (; 7 > b; b++) a._a[b] = f[b] = null == a._a[b] ? 2 === b ? 1 : 0 : a._a[b]; 24 === a._a[id] && 0 === a._a[jd] && 0 === a._a[kd] && 0 === a._a[ld] && (a._nextDay = !0, a._a[id] = 0), a._d = (a._useUTC ? fa : ea).apply(null, f), null != a._tzm && a._d.setUTCMinutes(a._d.getUTCMinutes() - a._tzm), a._nextDay && (a._a[id] = 24) } } function ua(a) { var b, c, d, e, f, g, h; b = a._w, null != b.GG || null != b.W || null != b.E ? (f = 1, g = 4, c = ra(b.GG, a._a[fd], ja(Da(), 1, 4).year), d = ra(b.W, 1), e = ra(b.E, 1)) : (f = a._locale._week.dow, g = a._locale._week.doy, c = ra(b.gg, a._a[fd], ja(Da(), f, g).year), d = ra(b.w, 1), null != b.d ? (e = b.d, f > e && ++d) : e = null != b.e ? b.e + f : f), h = pa(c, d, e, g, f), a._a[fd] = h.year, a._dayOfYear = h.dayOfYear } function va(b) { if (b._f === a.ISO_8601) return void ca(b); b._a = [], j(b).empty = !0; var c, d, e, f, g, h = \"\" + b._i, i = h.length, k = 0; for (e = L(b._f, b._locale).match(Nc) || [], c = 0; c < e.length; c++) f = e[c], d = (h.match(O(f, b)) || [])[0], d && (g = h.substr(0, h.indexOf(d)), g.length > 0 && j(b).unusedInput.push(g), h = h.slice(h.indexOf(d) + d.length), k += d.length), Qc[f] ? (d ? j(b).empty = !1 : j(b).unusedTokens.push(f), S(f, d, b)) : b._strict && !d && j(b).unusedTokens.push(f); j(b).charsLeftOver = i - k, h.length > 0 && j(b).unusedInput.push(h), j(b).bigHour === !0 && b._a[id] <= 12 && b._a[id] > 0 && (j(b).bigHour = void 0), b._a[id] = wa(b._locale, b._a[id], b._meridiem), ta(b), $(b) } function wa(a, b, c) { var d; return null == c ? b : null != a.meridiemHour ? a.meridiemHour(b, c) : null != a.isPM ? (d = a.isPM(c), d && 12 > b && (b += 12), d || 12 !== b || (b = 0), b) : b } function xa(a) { var b, c, d, e, f; if (0 === a._f.length) return j(a).invalidFormat = !0, void (a._d = new Date(NaN)); for (e = 0; e < a._f.length; e++) f = 0, b = m({}, a), null != a._useUTC && (b._useUTC = a._useUTC), b._f = a._f[e], va(b), k(b) && (f += j(b).charsLeftOver, f += 10 * j(b).unusedTokens.length, j(b).score = f, (null == d || d > f) && (d = f, c = b)); g(a, c || b) } function ya(a) { if (!a._d) { var b = B(a._i); a._a = [b.year, b.month, b.day || b.date, b.hour, b.minute, b.second, b.millisecond], ta(a) } } function za(a) { var b = new n($(Aa(a))); return b._nextDay && (b.add(1, \"d\"), b._nextDay = void 0), b } function Aa(a) { var b = a._i, e = a._f; return a._locale = a._locale || y(a._l), null === b || void 0 === e && \"\" === b ? l({ nullInput: !0 }) : (\"string\" == typeof b && (a._i = b = a._locale.preparse(b)), o(b) ? new n($(b)) : (c(e) ? xa(a) : e ? va(a) : d(b) ? a._d = b : Ba(a), a)) } function Ba(b) { var f = b._i; void 0 === f ? b._d = new Date : d(f) ? b._d = new Date(+f) : \"string\" == typeof f ? da(b) : c(f) ? (b._a = e(f.slice(0), function (a) { return parseInt(a, 10) }), ta(b)) : \"object\" == typeof f ? ya(b) : \"number\" == typeof f ? b._d = new Date(f) : a.createFromInputFallback(b) } function Ca(a, b, c, d, e) { var f = {}; return \"boolean\" == typeof c && (d = c, c = void 0), f._isAMomentObject = !0, f._useUTC = f._isUTC = e, f._l = c, f._i = a, f._f = b, f._strict = d, za(f) } function Da(a, b, c, d) { return Ca(a, b, c, d, !1) } function Ea(a, b) { var d, e; if (1 === b.length && c(b[0]) && (b = b[0]), !b.length) return Da(); for (d = b[0], e = 1; e < b.length; ++e) (!b[e].isValid() || b[e][a](d)) && (d = b[e]); return d } function Fa() { var a = [].slice.call(arguments, 0); return Ea(\"isBefore\", a) } function Ga() { var a = [].slice.call(arguments, 0); return Ea(\"isAfter\", a) } function Ha(a) { var b = B(a), c = b.year || 0, d = b.quarter || 0, e = b.month || 0, f = b.week || 0, g = b.day || 0, h = b.hour || 0, i = b.minute || 0, j = b.second || 0, k = b.millisecond || 0; this._milliseconds = +k + 1e3 * j + 6e4 * i + 36e5 * h, this._days = +g + 7 * f, this._months = +e + 3 * d + 12 * c, this._data = {}, this._locale = y(), this._bubble() } function Ia(a) { return a instanceof Ha } function Ja(a, b) { H(a, 0, 0, function () { var a = this.utcOffset(), c = \"+\"; return 0 > a && (a = -a, c = \"-\"), c + G(~~(a / 60), 2) + b + G(~~a % 60, 2) }) } function Ka(a) { var b = (a || \"\").match(ad) || [], c = b[b.length - 1] || [], d = (c + \"\").match(xd) || [\"-\", 0, 0], e = +(60 * d[1]) + q(d[2]); return \"+\" === d[0] ? e : -e } function La(b, c) { var e, f; return c._isUTC ? (e = c.clone(), f = (o(b) || d(b) ? +b : +Da(b)) - +e, e._d.setTime(+e._d + f), a.updateOffset(e, !1), e) : Da(b).local() } function Ma(a) { return 15 * -Math.round(a._d.getTimezoneOffset() / 15) } function Na(b, c) { var d, e = this._offset || 0; return null != b ? (\"string\" == typeof b && (b = Ka(b)), Math.abs(b) < 16 && (b = 60 * b), !this._isUTC && c && (d = Ma(this)), this._offset = b, this._isUTC = !0, null != d && this.add(d, \"m\"), e !== b && (!c || this._changeInProgress ? bb(this, Ya(b - e, \"m\"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this) : this._isUTC ? e : Ma(this) } function Oa(a, b) { return null != a ? (\"string\" != typeof a && (a = -a), this.utcOffset(a, b), this) : -this.utcOffset() } function Pa(a) { return this.utcOffset(0, a) } function Qa(a) { return this._isUTC && (this.utcOffset(0, a), this._isUTC = !1, a && this.subtract(Ma(this), \"m\")), this } function Ra() { return this._tzm ? this.utcOffset(this._tzm) : \"string\" == typeof this._i && this.utcOffset(Ka(this._i)), this } function Sa(a) { return a = a ? Da(a).utcOffset() : 0, (this.utcOffset() - a) % 60 === 0 } function Ta() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() } function Ua() { if (\"undefined\" != typeof this._isDSTShifted) return this._isDSTShifted; var a = {}; if (m(a, this), a = Aa(a), a._a) { var b = a._isUTC ? h(a._a) : Da(a._a); this._isDSTShifted = this.isValid() && r(a._a, b.toArray()) > 0 } else this._isDSTShifted = !1; return this._isDSTShifted } function Va() { return !this._isUTC } function Wa() { return this._isUTC } function Xa() { return this._isUTC && 0 === this._offset } function Ya(a, b) { var c, d, e, g = a, h = null; return Ia(a) ? g = { ms: a._milliseconds, d: a._days, M: a._months } : \"number\" == typeof a ? (g = {}, b ? g[b] = a : g.milliseconds = a) : (h = yd.exec(a)) ? (c = \"-\" === h[1] ? -1 : 1, g = { y: 0, d: q(h[hd]) * c, h: q(h[id]) * c, m: q(h[jd]) * c, s: q(h[kd]) * c, ms: q(h[ld]) * c }) : (h = zd.exec(a)) ? (c = \"-\" === h[1] ? -1 : 1, g = { y: Za(h[2], c), M: Za(h[3], c), d: Za(h[4], c), h: Za(h[5], c), m: Za(h[6], c), s: Za(h[7], c), w: Za(h[8], c) }) : null == g ? g = {} : \"object\" == typeof g && (\"from\" in g || \"to\" in g) && (e = _a(Da(g.from), Da(g.to)), g = {}, g.ms = e.milliseconds, g.M = e.months), d = new Ha(g), Ia(a) && f(a, \"_locale\") && (d._locale = a._locale), d } function Za(a, b) { var c = a && parseFloat(a.replace(\",\", \".\")); return (isNaN(c) ? 0 : c) * b } function $a(a, b) { var c = { milliseconds: 0, months: 0 }; return c.months = b.month() - a.month() + 12 * (b.year() - a.year()), a.clone().add(c.months, \"M\").isAfter(b) && --c.months, c.milliseconds = +b - +a.clone().add(c.months, \"M\"), c } function _a(a, b) { var c; return b = La(b, a), a.isBefore(b) ? c = $a(a, b) : (c = $a(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months), c } function ab(a, b) { return function (c, d) { var e, f; return null === d || isNaN(+d) || (ba(b, \"moment().\" + b + \"(period, number) is deprecated. Please use moment().\" + b + \"(number, period).\"), f = c, c = d, d = f), c = \"string\" == typeof c ? +c : c, e = Ya(c, d), bb(this, e, a), this } } function bb(b, c, d, e) { var f = c._milliseconds, g = c._days, h = c._months; e = null == e ? !0 : e, f && b._d.setTime(+b._d + f * d), g && E(b, \"Date\", D(b, \"Date\") + g * d), h && X(b, D(b, \"Month\") + h * d), e && a.updateOffset(b, g || h) } function cb(a, b) { var c = a || Da(), d = La(c, this).startOf(\"day\"), e = this.diff(d, \"days\", !0), f = -6 > e ? \"sameElse\" : -1 > e ? \"lastWeek\" : 0 > e ? \"lastDay\" : 1 > e ? \"sameDay\" : 2 > e ? \"nextDay\" : 7 > e ? \"nextWeek\" : \"sameElse\"; return this.format(b && b[f] || this.localeData().calendar(f, this, Da(c))) } function db() { return new n(this) } function eb(a, b) { var c; return b = A(\"undefined\" != typeof b ? b : \"millisecond\"), \"millisecond\" === b ? (a = o(a) ? a : Da(a), +this > +a) : (c = o(a) ? +a : +Da(a), c < +this.clone().startOf(b)) } function fb(a, b) { var c; return b = A(\"undefined\" != typeof b ? b : \"millisecond\"), \"millisecond\" === b ? (a = o(a) ? a : Da(a), +a > +this) : (c = o(a) ? +a : +Da(a), +this.clone().endOf(b) < c) } function gb(a, b, c) { return this.isAfter(a, c) && this.isBefore(b, c) } function hb(a, b) { var c; return b = A(b || \"millisecond\"), \"millisecond\" === b ? (a = o(a) ? a : Da(a), +this === +a) : (c = +Da(a), +this.clone().startOf(b) <= c && c <= +this.clone().endOf(b)) } function ib(a, b, c) { var d, e, f = La(a, this), g = 6e4 * (f.utcOffset() - this.utcOffset()); return b = A(b), \"year\" === b || \"month\" === b || \"quarter\" === b ? (e = jb(this, f), \"quarter\" === b ? e /= 3 : \"year\" === b && (e /= 12)) : (d = this - f, e = \"second\" === b ? d / 1e3 : \"minute\" === b ? d / 6e4 : \"hour\" === b ? d / 36e5 : \"day\" === b ? (d - g) / 864e5 : \"week\" === b ? (d - g) / 6048e5 : d), c ? e : p(e) } function jb(a, b) { var c, d, e = 12 * (b.year() - a.year()) + (b.month() - a.month()), f = a.clone().add(e, \"months\"); return 0 > b - f ? (c = a.clone().add(e - 1, \"months\"), d = (b - f) / (f - c)) : (c = a.clone().add(e + 1, \"months\"), d = (b - f) / (c - f)), -(e + d) } function kb() { return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\") } function lb() { var a = this.clone().utc(); return 0 < a.year() && a.year() <= 9999 ? \"function\" == typeof Date.prototype.toISOString ? this.toDate().toISOString() : K(a, \"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\") : K(a, \"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\") } function mb(b) { var c = K(this, b || a.defaultFormat); return this.localeData().postformat(c) } function nb(a, b) { return this.isValid() ? Ya({ to: this, from: a }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() } function ob(a) { return this.from(Da(), a) } function pb(a, b) { return this.isValid() ? Ya({ from: this, to: a }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() } function qb(a) { return this.to(Da(), a) } function rb(a) { var b; return void 0 === a ? this._locale._abbr : (b = y(a), null != b && (this._locale = b), this) } function sb() { return this._locale } function tb(a) { switch (a = A(a)) { case \"year\": this.month(0); case \"quarter\": case \"month\": this.date(1); case \"week\": case \"isoWeek\": case \"day\": this.hours(0); case \"hour\": this.minutes(0); case \"minute\": this.seconds(0); case \"second\": this.milliseconds(0) } return \"week\" === a && this.weekday(0), \"isoWeek\" === a && this.isoWeekday(1), \"quarter\" === a && this.month(3 * Math.floor(this.month() / 3)), this } function ub(a) { return a = A(a), void 0 === a || \"millisecond\" === a ? this : this.startOf(a).add(1, \"isoWeek\" === a ? \"week\" : a).subtract(1, \"ms\") } function vb() { return +this._d - 6e4 * (this._offset || 0) } function wb() { return Math.floor(+this / 1e3) } function xb() { return this._offset ? new Date(+this) : this._d } function yb() { var a = this; return [a.year(), a.month(), a.date(), a.hour(), a.minute(), a.second(), a.millisecond()] } function zb() { var a = this; return { years: a.year(), months: a.month(), date: a.date(), hours: a.hours(), minutes: a.minutes(), seconds: a.seconds(), milliseconds: a.milliseconds() } } function Ab() { return k(this) } function Bb() { return g({}, j(this)) } function Cb() { return j(this).overflow } function Db(a, b) { H(0, [a, a.length], 0, b) } function Eb(a, b, c) { return ja(Da([a, 11, 31 + b - c]), b, c).week } function Fb(a) { var b = ja(this, this.localeData()._week.dow, this.localeData()._week.doy).year; return null == a ? b : this.add(a - b, \"y\") } function Gb(a) { var b = ja(this, 1, 4).year; return null == a ? b : this.add(a - b, \"y\") } function Hb() { return Eb(this.year(), 1, 4) } function Ib() { var a = this.localeData()._week; return Eb(this.year(), a.dow, a.doy) } function Jb(a) { return null == a ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (a - 1) + this.month() % 3) } function Kb(a, b) { return \"string\" != typeof a ? a : isNaN(a) ? (a = b.weekdaysParse(a), \"number\" == typeof a ? a : null) : parseInt(a, 10) } function Lb(a) { return this._weekdays[a.day()] } function Mb(a) { return this._weekdaysShort[a.day()] } function Nb(a) { return this._weekdaysMin[a.day()] } function Ob(a) { var b, c, d; for (this._weekdaysParse = this._weekdaysParse || [], b = 0; 7 > b; b++) if (this._weekdaysParse[b] || (c = Da([2e3, 1]).day(b), d = \"^\" + this.weekdays(c, \"\") + \"|^\" + this.weekdaysShort(c, \"\") + \"|^\" + this.weekdaysMin(c, \"\"), this._weekdaysParse[b] = new RegExp(d.replace(\".\", \"\"), \"i\")), this._weekdaysParse[b].test(a)) return b } function Pb(a) { var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != a ? (a = Kb(a, this.localeData()), this.add(a - b, \"d\")) : b } function Qb(a) { var b = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == a ? b : this.add(a - b, \"d\") } function Rb(a) { return null == a ? this.day() || 7 : this.day(this.day() % 7 ? a : a - 7) } function Sb(a, b) { H(a, 0, 0, function () { return this.localeData().meridiem(this.hours(), this.minutes(), b) }) } function Tb(a, b) { return b._meridiemParse } function Ub(a) { return \"p\" === (a + \"\").toLowerCase().charAt(0) } function Vb(a, b, c) { return a > 11 ? c ? \"pm\" : \"PM\" : c ? \"am\" : \"AM\" } function Wb(a, b) { b[ld] = q(1e3 * (\"0.\" + a)) } function Xb() { return this._isUTC ? \"UTC\" : \"\" } function Yb() { return this._isUTC ? \"Coordinated Universal Time\" : \"\" } function Zb(a) { return Da(1e3 * a) } function $b() { return Da.apply(null, arguments).parseZone() } function _b(a, b, c) { var d = this._calendar[a]; return \"function\" == typeof d ? d.call(b, c) : d } function ac(a) { var b = this._longDateFormat[a], c = this._longDateFormat[a.toUpperCase()]; return b || !c ? b : (this._longDateFormat[a] = c.replace(/MMMM|MM|DD|dddd/g, function (a) { return a.slice(1) }), this._longDateFormat[a]) } function bc() { return this._invalidDate } function cc(a) { return this._ordinal.replace(\"%d\", a) } function dc(a) { return a } function ec(a, b, c, d) { var e = this._relativeTime[c]; return \"function\" == typeof e ? e(a, b, c, d) : e.replace(/%d/i, a) } function fc(a, b) { var c = this._relativeTime[a > 0 ? \"future\" : \"past\"]; return \"function\" == typeof c ? c(b) : c.replace(/%s/i, b) } function gc(a) { var b, c; for (c in a) b = a[c], \"function\" == typeof b ? this[c] = b : this[\"_\" + c] = b; this._ordinalParseLenient = new RegExp(this._ordinalParse.source + \"|\" + /\\d{1,2}/.source) } function hc(a, b, c, d) { var e = y(), f = h().set(d, b); return e[c](f, a) } function ic(a, b, c, d, e) { if (\"number\" == typeof a && (b = a, a = void 0), a = a || \"\", null != b) return hc(a, b, c, e); var f, g = []; for (f = 0; d > f; f++) g[f] = hc(a, f, c, e); return g } function jc(a, b) { return ic(a, b, \"months\", 12, \"month\") } function kc(a, b) { return ic(a, b, \"monthsShort\", 12, \"month\") } function lc(a, b) { return ic(a, b, \"weekdays\", 7, \"day\") } function mc(a, b) { return ic(a, b, \"weekdaysShort\", 7, \"day\") } function nc(a, b) { return ic(a, b, \"weekdaysMin\", 7, \"day\") } function oc() { var a = this._data; return this._milliseconds = Wd(this._milliseconds), this._days = Wd(this._days), this._months = Wd(this._months), a.milliseconds = Wd(a.milliseconds), a.seconds = Wd(a.seconds), a.minutes = Wd(a.minutes), a.hours = Wd(a.hours), a.months = Wd(a.months), a.years = Wd(a.years), this } function pc(a, b, c, d) { var e = Ya(b, c); return a._milliseconds += d * e._milliseconds, a._days += d * e._days, a._months += d * e._months, a._bubble() } function qc(a, b) { return pc(this, a, b, 1) } function rc(a, b) { return pc(this, a, b, -1) } function sc(a) { return 0 > a ? Math.floor(a) : Math.ceil(a) } function tc() { var a, b, c, d, e, f = this._milliseconds, g = this._days, h = this._months, i = this._data; return f >= 0 && g >= 0 && h >= 0 || 0 >= f && 0 >= g && 0 >= h || (f += 864e5 * sc(vc(h) + g), g = 0, h = 0), i.milliseconds = f % 1e3, a = p(f / 1e3), i.seconds = a % 60, b = p(a / 60), i.minutes = b % 60, c = p(b / 60), i.hours = c % 24, g += p(c / 24), e = p(uc(g)), h += e, g -= sc(vc(e)), d = p(h / 12), h %= 12, i.days = g, i.months = h, i.years = d, this } function uc(a) { return 4800 * a / 146097 } function vc(a) { return 146097 * a / 4800 } function wc(a) { var b, c, d = this._milliseconds; if (a = A(a), \"month\" === a || \"year\" === a) return b = this._days + d / 864e5, c = this._months + uc(b), \"month\" === a ? c : c / 12; switch (b = this._days + Math.round(vc(this._months)), a) { case \"week\": return b / 7 + d / 6048e5; case \"day\": return b + d / 864e5; case \"hour\": return 24 * b + d / 36e5; case \"minute\": return 1440 * b + d / 6e4; case \"second\": return 86400 * b + d / 1e3; case \"millisecond\": return Math.floor(864e5 * b) + d; default: throw new Error(\"Unknown unit \" + a) } } function xc() { return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * q(this._months / 12) } function yc(a) { return function () { return this.as(a) } } function zc(a) { return a = A(a), this[a + \"s\"]() } function Ac(a) { return function () { return this._data[a] } } function Bc() { return p(this.days() / 7) } function Cc(a, b, c, d, e) { return e.relativeTime(b || 1, !!c, a, d) } function Dc(a, b, c) { var d = Ya(a).abs(), e = ke(d.as(\"s\")), f = ke(d.as(\"m\")), g = ke(d.as(\"h\")), h = ke(d.as(\"d\")), i = ke(d.as(\"M\")), j = ke(d.as(\"y\")), k = e < le.s && [\"s\", e] || 1 === f && [\"m\"] || f < le.m && [\"mm\", f] || 1 === g && [\"h\"] || g < le.h && [\"hh\", g] || 1 === h && [\"d\"] || h < le.d && [\"dd\", h] || 1 === i && [\"M\"] || i < le.M && [\"MM\", i] || 1 === j && [\"y\"] || [\"yy\", j]; return k[2] = b, k[3] = +a > 0, k[4] = c, Cc.apply(null, k) } function Ec(a, b) { return void 0 === le[a] ? !1 : void 0 === b ? le[a] : (le[a] = b, !0) } function Fc(a) { var b = this.localeData(), c = Dc(this, !a, b); return a && (c = b.pastFuture(+this, c)), b.postformat(c) } function Gc() { var a, b, c, d = me(this._milliseconds) / 1e3, e = me(this._days), f = me(this._months); a = p(d / 60), b = p(a / 60), d %= 60, a %= 60, c = p(f / 12), f %= 12; var g = c, h = f, i = e, j = b, k = a, l = d, m = this.asSeconds(); return m ? (0 > m ? \"-\" : \"\") + \"P\" + (g ? g + \"Y\" : \"\") + (h ? h + \"M\" : \"\") + (i ? i + \"D\" : \"\") + (j || k || l ? \"T\" : \"\") + (j ? j + \"H\" : \"\") + (k ? k + \"M\" : \"\") + (l ? l + \"S\" : \"\") : \"P0D\" } var Hc, Ic, Jc = a.momentProperties = [], Kc = !1, Lc = {}, Mc = {}, Nc = /(\\[[^\\[]*\\])|(\\\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, Oc = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, Pc = {}, Qc = {}, Rc = /\\d/, Sc = /\\d\\d/, Tc = /\\d{3}/, Uc = /\\d{4}/, Vc = /[+-]?\\d{6}/, Wc = /\\d\\d?/, Xc = /\\d{1,3}/, Yc = /\\d{1,4}/, Zc = /[+-]?\\d{1,6}/, $c = /\\d+/, _c = /[+-]?\\d+/, ad = /Z|[+-]\\d\\d:?\\d\\d/gi, bd = /[+-]?\\d+(\\.\\d{1,3})?/, cd = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i, dd = {}, ed = {}, fd = 0, gd = 1, hd = 2, id = 3, jd = 4, kd = 5, ld = 6; H(\"M\", [\"MM\", 2], \"Mo\", function () { return this.month() + 1 }), H(\"MMM\", 0, 0, function (a) { return this.localeData().monthsShort(this, a) }), H(\"MMMM\", 0, 0, function (a) { return this.localeData().months(this, a) }), z(\"month\", \"M\"), N(\"M\", Wc), N(\"MM\", Wc, Sc), N(\"MMM\", cd), N(\"MMMM\", cd), Q([\"M\", \"MM\"], function (a, b) { b[gd] = q(a) - 1 }), Q([\"MMM\", \"MMMM\"], function (a, b, c, d) { var e = c._locale.monthsParse(a, d, c._strict); null != e ? b[gd] = e : j(c).invalidMonth = a }); var md = \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"), nd = \"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"), od = {}; a.suppressDeprecationWarnings = !1; var pd = /^\\s*(?:[+-]\\d{6}|\\d{4})-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/, qd = [[\"YYYYYY-MM-DD\", /[+-]\\d{6}-\\d{2}-\\d{2}/], [\"YYYY-MM-DD\", /\\d{4}-\\d{2}-\\d{2}/], [\"GGGG-[W]WW-E\", /\\d{4}-W\\d{2}-\\d/], [\"GGGG-[W]WW\", /\\d{4}-W\\d{2}/], [\"YYYY-DDD\", /\\d{4}-\\d{3}/]], rd = [[\"HH:mm:ss.SSSS\", /(T| )\\d\\d:\\d\\d:\\d\\d\\.\\d+/], [\"HH:mm:ss\", /(T| )\\d\\d:\\d\\d:\\d\\d/], [\"HH:mm\", /(T| )\\d\\d:\\d\\d/], [\"HH\", /(T| )\\d\\d/]], sd = /^\\/?Date\\((\\-?\\d+)/i; a.createFromInputFallback = aa(\"moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.\", function (a) { a._d = new Date(a._i + (a._useUTC ? \" UTC\" : \"\")) }), H(0, [\"YY\", 2], 0, function () { return this.year() % 100 }), H(0, [\"YYYY\", 4], 0, \"year\"), H(0, [\"YYYYY\", 5], 0, \"year\"), H(0, [\"YYYYYY\", 6, !0], 0, \"year\"), z(\"year\", \"y\"), N(\"Y\", _c), N(\"YY\", Wc, Sc), N(\"YYYY\", Yc, Uc), N(\"YYYYY\", Zc, Vc), N(\"YYYYYY\", Zc, Vc), Q([\"YYYYY\", \"YYYYYY\"], fd), Q(\"YYYY\", function (b, c) { c[fd] = 2 === b.length ? a.parseTwoDigitYear(b) : q(b) }), Q(\"YY\", function (b, c) { c[fd] = a.parseTwoDigitYear(b) }), a.parseTwoDigitYear = function (a) { return q(a) + (q(a) > 68 ? 1900 : 2e3) }; var td = C(\"FullYear\", !1); H(\"w\", [\"ww\", 2], \"wo\", \"week\"), H(\"W\", [\"WW\", 2], \"Wo\", \"isoWeek\"), z(\"week\", \"w\"), z(\"isoWeek\", \"W\"), N(\"w\", Wc), N(\"ww\", Wc, Sc), N(\"W\", Wc), N(\"WW\", Wc, Sc), R([\"w\", \"ww\", \"W\", \"WW\"], function (a, b, c, d) { b[d.substr(0, 1)] = q(a) }); var ud = { dow: 0, doy: 6 }; H(\"DDD\", [\"DDDD\", 3], \"DDDo\", \"dayOfYear\"), z(\"dayOfYear\", \"DDD\"), N(\"DDD\", Xc), N(\"DDDD\", Tc), Q([\"DDD\", \"DDDD\"], function (a, b, c) { c._dayOfYear = q(a) }), a.ISO_8601 = function () { }; var vd = aa(\"moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548\", function () { var a = Da.apply(null, arguments); return this > a ? this : a }), wd = aa(\"moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548\", function () { var a = Da.apply(null, arguments); return a > this ? this : a }); Ja(\"Z\", \":\"), Ja(\"ZZ\", \"\"), N(\"Z\", ad), N(\"ZZ\", ad), Q([\"Z\", \"ZZ\"], function (a, b, c) { c._useUTC = !0, c._tzm = Ka(a) }); var xd = /([\\+\\-]|\\d\\d)/gi; a.updateOffset = function () { }; var yd = /(\\-)?(?:(\\d*)\\.)?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?/, zd = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; Ya.fn = Ha.prototype; var Ad = ab(1, \"add\"), Bd = ab(-1, \"subtract\"); a.defaultFormat = \"YYYY-MM-DDTHH:mm:ssZ\"; var Cd = aa(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\", function (a) { return void 0 === a ? this.localeData() : this.locale(a) }); H(0, [\"gg\", 2], 0, function () { return this.weekYear() % 100 }), H(0, [\"GG\", 2], 0, function () { return this.isoWeekYear() % 100 }), Db(\"gggg\", \"weekYear\"), Db(\"ggggg\", \"weekYear\"), Db(\"GGGG\", \"isoWeekYear\"), Db(\"GGGGG\", \"isoWeekYear\"), z(\"weekYear\", \"gg\"), z(\"isoWeekYear\", \"GG\"), N(\"G\", _c), N(\"g\", _c), N(\"GG\", Wc, Sc), N(\"gg\", Wc, Sc), N(\"GGGG\", Yc, Uc), N(\"gggg\", Yc, Uc), N(\"GGGGG\", Zc, Vc), N(\"ggggg\", Zc, Vc), R([\"gggg\", \"ggggg\", \"GGGG\", \"GGGGG\"], function (a, b, c, d) { b[d.substr(0, 2)] = q(a) }), R([\"gg\", \"GG\"], function (b, c, d, e) { c[e] = a.parseTwoDigitYear(b) }), H(\"Q\", 0, 0, \"quarter\"), z(\"quarter\", \"Q\"), N(\"Q\", Rc), Q(\"Q\", function (a, b) { b[gd] = 3 * (q(a) - 1) }), H(\"D\", [\"DD\", 2], \"Do\", \"date\"), z(\"date\", \"D\"), N(\"D\", Wc), N(\"DD\", Wc, Sc), N(\"Do\", function (a, b) { return a ? b._ordinalParse : b._ordinalParseLenient }), Q([\"D\", \"DD\"], hd), Q(\"Do\", function (a, b) { b[hd] = q(a.match(Wc)[0], 10) }); var Dd = C(\"Date\", !0); H(\"d\", 0, \"do\", \"day\"), H(\"dd\", 0, 0, function (a) { return this.localeData().weekdaysMin(this, a) }), H(\"ddd\", 0, 0, function (a) { return this.localeData().weekdaysShort(this, a) }), H(\"dddd\", 0, 0, function (a) { return this.localeData().weekdays(this, a) }), H(\"e\", 0, 0, \"weekday\"), H(\"E\", 0, 0, \"isoWeekday\"), z(\"day\", \"d\"), z(\"weekday\", \"e\"), z(\"isoWeekday\", \"E\"), N(\"d\", Wc), N(\"e\", Wc), N(\"E\", Wc), N(\"dd\", cd), N(\"ddd\", cd), N(\"dddd\", cd), R([\"dd\", \"ddd\", \"dddd\"], function (a, b, c) { var d = c._locale.weekdaysParse(a); null != d ? b.d = d : j(c).invalidWeekday = a }), R([\"d\", \"e\", \"E\"], function (a, b, c, d) { b[d] = q(a) }); var Ed = \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"), Fd = \"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"), Gd = \"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"); H(\"H\", [\"HH\", 2], 0, \"hour\"), H(\"h\", [\"hh\", 2], 0, function () { return this.hours() % 12 || 12 }), Sb(\"a\", !0), Sb(\"A\", !1), z(\"hour\", \"h\"), N(\"a\", Tb), N(\"A\", Tb), N(\"H\", Wc), N(\"h\", Wc), N(\"HH\", Wc, Sc), N(\"hh\", Wc, Sc), Q([\"H\", \"HH\"], id), Q([\"a\", \"A\"], function (a, b, c) { c._isPm = c._locale.isPM(a), c._meridiem = a }), Q([\"h\", \"hh\"], function (a, b, c) { b[id] = q(a), j(c).bigHour = !0 }); var Hd = /[ap]\\.?m?\\.?/i, Id = C(\"Hours\", !0); H(\"m\", [\"mm\", 2], 0, \"minute\"), z(\"minute\", \"m\"), N(\"m\", Wc), N(\"mm\", Wc, Sc), Q([\"m\", \"mm\"], jd); var Jd = C(\"Minutes\", !1); H(\"s\", [\"ss\", 2], 0, \"second\"), z(\"second\", \"s\"), N(\"s\", Wc), N(\"ss\", Wc, Sc), Q([\"s\", \"ss\"], kd); var Kd = C(\"Seconds\", !1); H(\"S\", 0, 0, function () { return ~~(this.millisecond() / 100) }), H(0, [\"SS\", 2], 0, function () { return ~~(this.millisecond() / 10) }), H(0, [\"SSS\", 3], 0, \"millisecond\"), H(0, [\"SSSS\", 4], 0, function () { return 10 * this.millisecond() }), H(0, [\"SSSSS\", 5], 0, function () { return 100 * this.millisecond() }), H(0, [\"SSSSSS\", 6], 0, function () { return 1e3 * this.millisecond() }), H(0, [\"SSSSSSS\", 7], 0, function () { return 1e4 * this.millisecond() }), H(0, [\"SSSSSSSS\", 8], 0, function () { return 1e5 * this.millisecond() }), H(0, [\"SSSSSSSSS\", 9], 0, function () { return 1e6 * this.millisecond() }), z(\"millisecond\", \"ms\"), N(\"S\", Xc, Rc), N(\"SS\", Xc, Sc), N(\"SSS\", Xc, Tc); var Ld; for (Ld = \"SSSS\"; Ld.length <= 9; Ld += \"S\") N(Ld, $c); for (Ld = \"S\"; Ld.length <= 9; Ld += \"S\") Q(Ld, Wb); var Md = C(\"Milliseconds\", !1); H(\"z\", 0, 0, \"zoneAbbr\"), H(\"zz\", 0, 0, \"zoneName\"); var Nd = n.prototype; Nd.add = Ad, Nd.calendar = cb, Nd.clone = db, Nd.diff = ib, Nd.endOf = ub, Nd.format = mb, Nd.from = nb, Nd.fromNow = ob, Nd.to = pb, Nd.toNow = qb, Nd.get = F, Nd.invalidAt = Cb, Nd.isAfter = eb, Nd.isBefore = fb, Nd.isBetween = gb, Nd.isSame = hb, Nd.isValid = Ab, Nd.lang = Cd, Nd.locale = rb, Nd.localeData = sb, Nd.max = wd, Nd.min = vd, Nd.parsingFlags = Bb, Nd.set = F, Nd.startOf = tb, Nd.subtract = Bd, Nd.toArray = yb, Nd.toObject = zb, Nd.toDate = xb, Nd.toISOString = lb, Nd.toJSON = lb, Nd.toString = kb, Nd.unix = wb, Nd.valueOf = vb, Nd.year = td, Nd.isLeapYear = ia, Nd.weekYear = Fb, Nd.isoWeekYear = Gb, Nd.quarter = Nd.quarters = Jb, Nd.month = Y, Nd.daysInMonth = Z, Nd.week = Nd.weeks = na, Nd.isoWeek = Nd.isoWeeks = oa, Nd.weeksInYear = Ib, Nd.isoWeeksInYear = Hb, Nd.date = Dd, Nd.day = Nd.days = Pb, Nd.weekday = Qb, Nd.isoWeekday = Rb, Nd.dayOfYear = qa, Nd.hour = Nd.hours = Id, Nd.minute = Nd.minutes = Jd, Nd.second = Nd.seconds = Kd,\n Nd.millisecond = Nd.milliseconds = Md, Nd.utcOffset = Na, Nd.utc = Pa, Nd.local = Qa, Nd.parseZone = Ra, Nd.hasAlignedHourOffset = Sa, Nd.isDST = Ta, Nd.isDSTShifted = Ua, Nd.isLocal = Va, Nd.isUtcOffset = Wa, Nd.isUtc = Xa, Nd.isUTC = Xa, Nd.zoneAbbr = Xb, Nd.zoneName = Yb, Nd.dates = aa(\"dates accessor is deprecated. Use date instead.\", Dd), Nd.months = aa(\"months accessor is deprecated. Use month instead\", Y), Nd.years = aa(\"years accessor is deprecated. Use year instead\", td), Nd.zone = aa(\"moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779\", Oa); var Od = Nd, Pd = { sameDay: \"[Today at] LT\", nextDay: \"[Tomorrow at] LT\", nextWeek: \"dddd [at] LT\", lastDay: \"[Yesterday at] LT\", lastWeek: \"[Last] dddd [at] LT\", sameElse: \"L\" }, Qd = { LTS: \"h:mm:ss A\", LT: \"h:mm A\", L: \"MM/DD/YYYY\", LL: \"MMMM D, YYYY\", LLL: \"MMMM D, YYYY h:mm A\", LLLL: \"dddd, MMMM D, YYYY h:mm A\" }, Rd = \"Invalid date\", Sd = \"%d\", Td = /\\d{1,2}/, Ud = { future: \"in %s\", past: \"%s ago\", s: \"a few seconds\", m: \"a minute\", mm: \"%d minutes\", h: \"an hour\", hh: \"%d hours\", d: \"a day\", dd: \"%d days\", M: \"a month\", MM: \"%d months\", y: \"a year\", yy: \"%d years\" }, Vd = s.prototype; Vd._calendar = Pd, Vd.calendar = _b, Vd._longDateFormat = Qd, Vd.longDateFormat = ac, Vd._invalidDate = Rd, Vd.invalidDate = bc, Vd._ordinal = Sd, Vd.ordinal = cc, Vd._ordinalParse = Td, Vd.preparse = dc, Vd.postformat = dc, Vd._relativeTime = Ud, Vd.relativeTime = ec, Vd.pastFuture = fc, Vd.set = gc, Vd.months = U, Vd._months = md, Vd.monthsShort = V, Vd._monthsShort = nd, Vd.monthsParse = W, Vd.week = ka, Vd._week = ud, Vd.firstDayOfYear = ma, Vd.firstDayOfWeek = la, Vd.weekdays = Lb, Vd._weekdays = Ed, Vd.weekdaysMin = Nb, Vd._weekdaysMin = Gd, Vd.weekdaysShort = Mb, Vd._weekdaysShort = Fd, Vd.weekdaysParse = Ob, Vd.isPM = Ub, Vd._meridiemParse = Hd, Vd.meridiem = Vb, w(\"en\", { ordinalParse: /\\d{1,2}(th|st|nd|rd)/, ordinal: function (a) { var b = a % 10, c = 1 === q(a % 100 / 10) ? \"th\" : 1 === b ? \"st\" : 2 === b ? \"nd\" : 3 === b ? \"rd\" : \"th\"; return a + c } }), a.lang = aa(\"moment.lang is deprecated. Use moment.locale instead.\", w), a.langData = aa(\"moment.langData is deprecated. Use moment.localeData instead.\", y); var Wd = Math.abs, Xd = yc(\"ms\"), Yd = yc(\"s\"), Zd = yc(\"m\"), $d = yc(\"h\"), _d = yc(\"d\"), ae = yc(\"w\"), be = yc(\"M\"), ce = yc(\"y\"), de = Ac(\"milliseconds\"), ee = Ac(\"seconds\"), fe = Ac(\"minutes\"), ge = Ac(\"hours\"), he = Ac(\"days\"), ie = Ac(\"months\"), je = Ac(\"years\"), ke = Math.round, le = { s: 45, m: 45, h: 22, d: 26, M: 11 }, me = Math.abs, ne = Ha.prototype; ne.abs = oc, ne.add = qc, ne.subtract = rc, ne.as = wc, ne.asMilliseconds = Xd, ne.asSeconds = Yd, ne.asMinutes = Zd, ne.asHours = $d, ne.asDays = _d, ne.asWeeks = ae, ne.asMonths = be, ne.asYears = ce, ne.valueOf = xc, ne._bubble = tc, ne.get = zc, ne.milliseconds = de, ne.seconds = ee, ne.minutes = fe, ne.hours = ge, ne.days = he, ne.weeks = Bc, ne.months = ie, ne.years = je, ne.humanize = Fc, ne.toISOString = Gc, ne.toString = Gc, ne.toJSON = Gc, ne.locale = rb, ne.localeData = sb, ne.toIsoString = aa(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\", Gc), ne.lang = Cd, H(\"X\", 0, 0, \"unix\"), H(\"x\", 0, 0, \"valueOf\"), N(\"x\", _c), N(\"X\", bd), Q(\"X\", function (a, b, c) { c._d = new Date(1e3 * parseFloat(a, 10)) }), Q(\"x\", function (a, b, c) { c._d = new Date(q(a)) }), a.version = \"2.10.6\", b(Da), a.fn = Od, a.min = Fa, a.max = Ga, a.utc = h, a.unix = Zb, a.months = jc, a.isDate = d, a.locale = w, a.invalid = l, a.duration = Ya, a.isMoment = o, a.weekdays = lc, a.parseZone = $b, a.localeData = y, a.isDuration = Ia, a.monthsShort = kc, a.weekdaysMin = nc, a.defineLocale = x, a.weekdaysShort = mc, a.normalizeUnits = A, a.relativeTimeThreshold = Ec; var oe = a; return oe\n});","/*! RateIt | v1.0.22 / 05/27/2014 | https://rateit.codeplex.com/license\n http://rateit.codeplex.com | Twitter: @gjunge\n*/\n(function ($) {\n $.rateit = {\n aria: {\n resetLabel: 'reset rating',\n ratingLabel: 'rating'\n }\n };\n\n $.fn.rateit = function (p1, p2) {\n //quick way out.\n var index = 1;\n var options = {}; var mode = 'init';\n var capitaliseFirstLetter = function (string) {\n return string.charAt(0).toUpperCase() + string.substr(1);\n };\n\n if (this.length === 0) { return this; }\n\n\n var tp1 = $.type(p1);\n if (tp1 == 'object' || p1 === undefined || p1 === null) {\n options = $.extend({}, $.fn.rateit.defaults, p1); //wants to init new rateit plugin(s).\n }\n else if (tp1 == 'string' && p1 !== 'reset' && p2 === undefined) {\n return this.data('rateit' + capitaliseFirstLetter(p1)); //wants to get a value.\n }\n else if (tp1 == 'string') {\n mode = 'setvalue';\n }\n\n return this.each(function () {\n var item = $(this);\n\n\n //shorten all the item.data('rateit-XXX'), will save space in closure compiler, will be like item.data('XXX') will become x('XXX')\n var itemdata = function (key, value) {\n\n if (value != null) {\n //update aria values\n var ariakey = 'aria-value' + ((key == 'value') ? 'now' : key);\n var range = item.find('.rateit-range');\n if (range.attr(ariakey) != undefined) {\n range.attr(ariakey, value);\n }\n\n }\n\n arguments[0] = 'rateit' + capitaliseFirstLetter(key);\n return item.data.apply(item, arguments); ////Fix for WI: 523\n };\n\n //handle programmatic reset\n if (p1 == 'reset') {\n var setup = itemdata('init'); //get initial value\n for (var prop in setup) {\n item.data(prop, setup[prop]);\n }\n\n if (itemdata('backingfld')) { //reset also backingfield\n var fld = $(itemdata('backingfld'));\n fld.val(itemdata('value'));\n fld.trigger('change');\n if (fld[0].min) { fld[0].min = itemdata('min'); }\n if (fld[0].max) { fld[0].max = itemdata('max'); }\n if (fld[0].step) { fld[0].step = itemdata('step'); }\n }\n item.trigger('reset');\n }\n\n //add the rate it class.\n if (!item.hasClass('rateit')) { item.addClass('rateit'); }\n\n var ltr = item.css('direction') != 'rtl';\n\n // set value mode\n if (mode == 'setvalue') {\n if (!itemdata('init')) { throw 'Can\\'t set value before init'; }\n\n\n //if readonly now and it wasn't readonly, remove the eventhandlers.\n if (p1 == 'readonly' && p2 == true && !itemdata('readonly')) {\n item.find('.rateit-range').unbind();\n itemdata('wired', false);\n }\n //when we receive a null value, reset the score to its min value.\n if (p1 == 'value') {\n p2 = (p2 == null) ? itemdata('min') : Math.max(itemdata('min'), Math.min(itemdata('max'), p2));\n }\n if (itemdata('backingfld')) {\n //if we have a backing field, check which fields we should update. \n //In case of input[type=range], although we did read its attributes even in browsers that don't support it (using fld.attr())\n //we only update it in browser that support it (&& fld[0].min only works in supporting browsers), not only does it save us from checking if it is range input type, it also is unnecessary.\n var fld = $(itemdata('backingfld'));\n if (p1 == 'value') { fld.val(p2); }\n if (p1 == 'min' && fld[0].min) { fld[0].min = p2; }\n if (p1 == 'max' && fld[0].max) { fld[0].max = p2;}\n if (p1 == 'step' && fld[0].step) { fld[0].step = p2; }\n }\n\n itemdata(p1, p2);\n }\n\n //init rateit plugin\n if (!itemdata('init')) {\n\n //get our values, either from the data-* html5 attribute or from the options.\n itemdata('min', isNaN(itemdata('min')) ? options.min : itemdata('min'));\n itemdata('max', isNaN(itemdata('max')) ? options.max : itemdata('max'));\n itemdata('step', itemdata('step') || options.step);\n itemdata('readonly', itemdata('readonly') !== undefined ? itemdata('readonly') : options.readonly);\n itemdata('resetable', itemdata('resetable') !== undefined ? itemdata('resetable') : options.resetable);\n itemdata('backingfld', itemdata('backingfld') || options.backingfld);\n itemdata('starwidth', itemdata('starwidth') || options.starwidth);\n itemdata('starheight', itemdata('starheight') || options.starheight);\n itemdata('value', Math.max(itemdata('min'), Math.min(itemdata('max'), (!isNaN(itemdata('value')) ? itemdata('value') : (!isNaN(options.value) ? options.value : options.min)))));\n itemdata('ispreset', itemdata('ispreset') !== undefined ? itemdata('ispreset') : options.ispreset);\n //are we LTR or RTL?\n\n if (itemdata('backingfld')) {\n //if we have a backing field, hide it, override defaults if range or select.\n var fld = $(itemdata('backingfld')).hide();\n\n if (fld.attr('disabled') || fld.attr('readonly')) {\n itemdata('readonly', true); //http://rateit.codeplex.com/discussions/362055 , if a backing field is disabled or readonly at instantiation, make rateit readonly.\n }\n\n if (fld[0].nodeName == 'INPUT') {\n if (fld[0].type == 'range' || fld[0].type == 'text') { //in browsers not support the range type, it defaults to text\n\n itemdata('min', parseInt(fld.attr('min')) || itemdata('min')); //if we would have done fld[0].min it wouldn't have worked in browsers not supporting the range type.\n itemdata('max', parseInt(fld.attr('max')) || itemdata('max'));\n itemdata('step', parseInt(fld.attr('step')) || itemdata('step'));\n }\n }\n if (fld[0].nodeName == 'SELECT' && fld[0].options.length > 1) {\n itemdata('min', (!isNaN(itemdata('min')) ? itemdata('min') : Number(fld[0].options[0].value)));\n itemdata('max', Number(fld[0].options[fld[0].length - 1].value));\n itemdata('step', Number(fld[0].options[1].value) - Number(fld[0].options[0].value));\n //see if we have a option that as explicity been selected\n var selectedOption = fld.find('option[selected]');\n if (selectedOption.length == 1) {\n itemdata('value', selectedOption.val());\n }\n }\n else {\n //if it is not a select box, we can get's it's value using the val function. \n //If it is a selectbox, we always get a value (the first one of the list), even if it was not explicity set.\n itemdata('value', fld.val());\n }\n }\n\n //Create the necessary tags. For ARIA purposes we need to give the items an ID. So we use an internal index to create unique ids\n var element = item[0].nodeName == 'DIV' ? 'div' : 'span';\n index++;\n var html = '<{{element}} id=\"rateit-range-{{index}}\" class=\"rateit-range\" tabindex=\"0\" role=\"slider\" aria-label=\"' + $.rateit.aria.ratingLabel + '\" aria-owns=\"rateit-reset-{{index}}\" aria-valuemin=\"' + itemdata('min') + '\" aria-valuemax=\"' + itemdata('max') + '\" aria-valuenow=\"' + itemdata('value') + '\"><{{element}} class=\"rateit-selected\" style=\"height:' + itemdata('starheight') + 'px\">{{element}}><{{element}} class=\"rateit-hover\" style=\"height:' + itemdata('starheight') + 'px\">{{element}}>{{element}}>';\n item.append(html.replace(/{{index}}/gi, index).replace(/{{element}}/gi, element));\n\n //if we are in RTL mode, we have to change the float of the \"reset button\"\n if (!ltr) {\n item.find('.rateit-reset').css('float', 'right');\n item.find('.rateit-selected').addClass('rateit-selected-rtl');\n item.find('.rateit-hover').addClass('rateit-hover-rtl');\n }\n\n itemdata('init', JSON.parse(JSON.stringify(item.data()))); //cheap way to create a clone\n }\n //resize the height of all elements, \n item.find('.rateit-selected, .rateit-hover').height(itemdata('starheight'));\n\n //set the range element to fit all the stars.\n var range = item.find('.rateit-range');\n range.width(itemdata('starwidth') * (itemdata('max') - itemdata('min'))).height(itemdata('starheight'));\n\n\n //add/remove the preset class\n var presetclass = 'rateit-preset' + ((ltr) ? '' : '-rtl');\n if (itemdata('ispreset')) {\n item.find('.rateit-selected').addClass(presetclass);\n }\n else {\n item.find('.rateit-selected').removeClass(presetclass);\n }\n\n //set the value if we have it.\n if (itemdata('value') != null) {\n var score = (itemdata('value') - itemdata('min')) * itemdata('starwidth');\n item.find('.rateit-selected').width(score);\n }\n\n //setup the reset button\n var resetbtn = item.find('.rateit-reset');\n if (resetbtn.data('wired') !== true) {\n resetbtn.bind('click', function (e) {\n e.preventDefault();\n\n resetbtn.blur();\n\n var event = $.Event('beforereset');\n item.trigger(event);\n if (event.isDefaultPrevented()) {\n return false;\n }\n\n item.rateit('value', null);\n item.trigger('reset');\n }).data('wired', true);\n\n }\n\n //this function calculates the score based on the current position of the mouse.\n var calcRawScore = function (element, event) {\n var pageX = (event.changedTouches) ? event.changedTouches[0].pageX : event.pageX;\n\n var offsetx = pageX - $(element).offset().left;\n if (!ltr) { offsetx = range.width() - offsetx };\n if (offsetx > range.width()) { offsetx = range.width(); }\n if (offsetx < 0) { offsetx = 0; }\n\n return score = Math.ceil(offsetx / itemdata('starwidth') * (1 / itemdata('step')));\n };\n\n //sets the hover element based on the score.\n var setHover = function (score) {\n var w = score * itemdata('starwidth') * itemdata('step');\n var h = range.find('.rateit-hover');\n if (h.data('width') != w) {\n range.find('.rateit-selected').hide();\n h.width(w).show().data('width', w);\n var data = [(score * itemdata('step')) + itemdata('min')];\n item.trigger('hover', data).trigger('over', data);\n }\n };\n\n var setSelection = function (value) {\n var event = $.Event('beforerated');\n item.trigger(event, [value]);\n if (event.isDefaultPrevented()) {\n return false;\n }\n\n itemdata('value', value);\n if (itemdata('backingfld')) {\n $(itemdata('backingfld')).val(value).trigger('change');\n }\n if (itemdata('ispreset')) { //if it was a preset value, unset that.\n range.find('.rateit-selected').removeClass(presetclass);\n itemdata('ispreset', false);\n }\n range.find('.rateit-hover').hide();\n range.find('.rateit-selected').width(value * itemdata('starwidth') - (itemdata('min') * itemdata('starwidth'))).show();\n item.trigger('hover', [null]).trigger('over', [null]).trigger('rated', [value]);\n return true;\n };\n\n if (!itemdata('readonly')) {\n //if we are not read only, add all the events\n\n //if we have a reset button, set the event handler.\n if (!itemdata('resetable')) {\n resetbtn.hide();\n }\n\n //when the mouse goes over the range element, we set the \"hover\" stars.\n if (!itemdata('wired')) {\n range.bind('touchmove touchend', touchHandler); //bind touch events\n range.mousemove(function (e) {\n var score = calcRawScore(this, e);\n setHover(score);\n });\n //when the mouse leaves the range, we have to hide the hover stars, and show the current value.\n range.mouseleave(function (e) {\n range.find('.rateit-hover').hide().width(0).data('width', '');\n item.trigger('hover', [null]).trigger('over', [null]);\n range.find('.rateit-selected').show();\n });\n //when we click on the range, we have to set the value, hide the hover.\n range.mouseup(function (e) {\n var score = calcRawScore(this, e);\n var value = (score * itemdata('step')) + itemdata('min');\n setSelection(value);\n range.blur();\n });\n\n //support key nav\n range.keyup(function (e) {\n if (e.which == 38 || e.which == (ltr ? 39 : 37)) {\n setSelection(Math.min(itemdata('value') + itemdata('step'), itemdata('max')));\n }\n if (e.which == 40 || e.which == (ltr ? 37 : 39)) {\n setSelection(Math.max(itemdata('value') - itemdata('step'), itemdata('min')));\n }\n });\n\n itemdata('wired', true);\n }\n if (itemdata('resetable')) {\n resetbtn.show();\n }\n }\n else {\n resetbtn.hide();\n }\n\n range.attr('aria-readonly', itemdata('readonly'));\n });\n };\n\n //touch converter http://ross.posterous.com/2008/08/19/iphone-touch-events-in-javascript/\n function touchHandler(event) {\n\n var touches = event.originalEvent.changedTouches,\n first = touches[0],\n type = \"\";\n switch (event.type) {\n case \"touchmove\": type = \"mousemove\"; break;\n case \"touchend\": type = \"mouseup\"; break;\n default: return;\n }\n\n var simulatedEvent = document.createEvent(\"MouseEvent\");\n simulatedEvent.initMouseEvent(type, true, true, window, 1,\n first.screenX, first.screenY,\n first.clientX, first.clientY, false,\n false, false, false, 0/*left*/, null);\n\n first.target.dispatchEvent(simulatedEvent);\n event.preventDefault();\n };\n\n //some default values.\n $.fn.rateit.defaults = { min: 0, max: 5, step: 0.5, starwidth: 16, starheight: 16, readonly: false, resetable: true, ispreset: false };\n\n //invoke it on all .rateit elements. This could be removed if not wanted.\n $(function () { $('div.rateit, span.rateit').rateit(); });\n\n})(jQuery);"]}